黑马程序员技术交流社区
标题:
斗地主程序,为什么打乱顺序后还是一副牌
[打印本页]
作者:
ouyzm
时间:
2016-10-12 00:39
标题:
斗地主程序,为什么打乱顺序后还是一副牌
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Set;
import java.util.TreeMap;
public class pukepai {
/**
* 模拟斗地主洗牌和发牌并对牌进行排序的代码实现
*/
public static void main(String[] args) {
String[] color ={"黑桃","梅花","方块","红桃"};
String[] pai = {"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
HashMap<Integer,String> hm = new HashMap<>();
int i = 0;
for (String st : pai) {
for (String str : color) {
hm.put(i++, str.concat(st)) ;
}
}
hm.put(52, "小王");
hm.put(53, "大王");
//System.out.println(hm);
TreeMap<Integer,String> ouy = new TreeMap<>();
TreeMap<Integer,String> gaojin = new TreeMap<>();
TreeMap<Integer,String> zhouxingchi = new TreeMap<>();
TreeMap<Integer,String> dipai = new TreeMap<>();
ArrayList <Integer> al = new ArrayList<>();
Set<Integer> keySet = hm.keySet();
for (Integer integer : keySet) {
al.add(integer);
}
System.out.println(al);
System.out.println("-----------");
Collections.shuffle(al);
System.out.println(al);
for (Integer in : al) {
if(in>=al.size()-3){
dipai.put(in, hm.get(in));
}
if(in%3==0){
ouy.put(in, hm.get(in));
}if(in%3==1){
gaojin.put(in, hm.get(in));
}if(in%3==2){
zhouxingchi.put(in, hm.get(in));
}
}
System.out.println(ouy);
System.out.println("-----");
System.out.println(gaojin);
System.out.println("-----");
System.out.println(zhouxingchi);
System.out.println("-----");
System.out.println(dipai);
}
}
作者:
System.style
时间:
2016-10-12 09:52
你在问什么问题?你为什么要欺骗我残存的智商
作者:
gao5867565
时间:
2016-10-12 17:48
for (Integer in : al) {
if(in>=al.size()-3){
dipai.put(in, hm.get(in));
}
if(in%3==0){
ouy.put(in, hm.get(in));
}if(in%3==1){
gaojin.put(in, hm.get(in));
}if(in%3==2){
zhouxingchi.put(in, hm.get(in));
}
这里错了,你直接判断牌的索引 来存取肯定不行啊,就像 if(in>=al.size()-3),符合规则的就只有最后3张牌,你自己定义个计数器,分别存取才行,要不就使用普通for,使用i 来判断发牌
作者:
gao5867565
时间:
2016-10-12 17:49
for (Integer in : al) {
if(in>=al.size()-3){
dipai.put(in, hm.get(in));
}
if(in%3==0){
ouy.put(in, hm.get(in));
}if(in%3==1){
gaojin.put(in, hm.get(in));
}if(in%3==2){
zhouxingchi.put(in, hm.get(in));
}
这里错了,你直接判断牌的索引 来存取肯定不行啊,就像 if(in>=al.size()-3),符合规则的就只有最后3张牌,你自己定义个计数器,分别存取才行,要不就使用普通for,使用i 来判断发牌
作者:
ouyzm
时间:
2016-10-15 00:37
非常感谢.这么热心的回复!!!赞一个
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2