黑马程序员技术交流社区
标题:
玩三人斗地主的发牌程序!
[打印本页]
作者:
钱金磊
时间:
2016-5-8 22:58
标题:
玩三人斗地主的发牌程序!
打印一副扑克!
自从学了java基础后感觉有些喜欢上编程了!现在学到集合,有些自己对与斗地主这款游戏有些编程思路,
现在由于没有多少时间来实现这个程序,有空就把全代码给编出来!
大纲是这样的,
1.创建一副牌,
2.发给3个人牌!当然了,底牌是不给你看的(保持游戏的公平性,但是我们可以作弊嘛!)!
3.打牌的算法! 这个这个有些复杂,如计算积分(简单),打牌的规矩(有些复杂,为啥啊!你的要敲好多实现方法的代码),出牌后计算谁能下一次出牌(这个思路不是刚入门的就能够想到的!);
4.用GUI显示窗口(这个得做的可以做的好看点嘛!这个把x讯的斗地主截个图呗!)
5.你可以和你的pc一起玩了!(非常能打发时间!)
import java.util.Comparator;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Set;
import java.util.TreeMap;
import java.util.TreeSet;
public class Demo3 {
/**
* 斗地主
* 0.有一副牌!
* 1.发牌!
* 2.洗牌!
*
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String[] packer={"3","4","5","6","7","8","9","10","J","Q","K","A","2"};
String[] huase ={"♣","♥","♦","♠"};
//拼牌!
TreeMap<Integer, String> tr=new TreeMap<>();
int i=0;
for (int j = 0; j < packer.length; j++) {
for (int j2 = 0; j2 < huase.length; j2++) {
tr.put(i++, huase[j2].concat(packer[j]));
}
}
tr.put(i++, "☀"); //小王
tr.put(i++, "☀☀"); //大王
Set<Integer> set=tr.keySet(); //键集合
TreeSet<Integer> tree =new TreeSet<> (new Comparator<Integer>() {
@Override
public int compare(Integer i1, Integer i2) {
// TODO Auto-generated method stub
int i=i1-i2;
return i==0?0:i;
}
});
ArrayList<Integer> al=new ArrayList<>();
al.addAll(set); //获得键集合
Collections.shuffle(al); //打乱牌
//发牌(4组)
ArrayList<Integer> a2=new ArrayList<>();
ArrayList<Integer> a3=new ArrayList<>();
ArrayList<Integer> a4=new ArrayList<>();
ArrayList<Integer> a5=new ArrayList<>();
for (int j = 0; j < al.size(); j++) {
if(j>=al.size()-3)
a2.add(al.get(j));
else if(j%3==0)
a3.add(al.get(j));
else if(j%3==1)
a4.add(al.get(j));
else
a5.add(al.get(j));
}
洗牌(tree, a5);
洗牌(tree, a2);
洗牌(tree, a3);
洗牌(tree, a4);
//看牌了
看牌(a2,tr);
System.out.println();
看牌(a3,tr);
System.out.println();
看牌(a4,tr);
System.out.println();
看牌(a5,tr);
}
private static void 洗牌(TreeSet<Integer> tree, ArrayList<Integer> al) {
tree.clear();
tree.addAll(al);
al.clear();
al.addAll(tree);
}
private static void 看牌(ArrayList<Integer> al,
TreeMap<Integer, String> tr) {
// TODO Auto-generated method stub
for (Integer i : al) {
System.out.print(tr.get(i)+" ");
}
}
}
复制代码
作者:
729524251
时间:
2016-5-8 23:20
卧槽 好多大牛
作者:
放手一搏
时间:
2016-5-8 23:28
真是太厉害了 我什么时候也能变成大牛
作者:
随风而逸
时间:
2016-5-8 23:49
好赞的样子
作者:
`爱吃猫的鱼
时间:
2016-5-9 09:12
求抱大腿。
作者:
董改名
时间:
2016-5-9 17:27
有用,谢谢了
作者:
zhouhp
时间:
2016-5-9 17:36
这个。。。这个。。。这个。。。。。
作者:
溪溪笑
时间:
2016-5-9 21:28
看一看。。。。。。。。。。。
作者:
strliu
时间:
2016-5-9 22:09
还只能说完全看不懂,加油
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2