package practise;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.TreeSet;
public class Test {
public static void main(String[] args) {
//制作一副扑克牌
String[] num = {"3","4","5","6","7","8","9","10","J","Q","K","A","2"};
String[] color = {"方片","梅花","红桃","黑桃"};
HashMap<Integer, String> hm = new HashMap<>(); //存储索引和扑克牌,键是索引0~53,值是54张牌对应的字符串
ArrayList<Integer> list = new ArrayList<>(); //存储所有的索引
int index = 0;
for (String s1 : num) {
for (String s2 : color) {
hm.put(index, s2.concat(s1));
list.add(index ++);
}
}
hm.put(index, "小王");
list.add(index ++);
hm.put(index, "大王");
list.add(index);
//洗牌--> 洗索引
Collections.shuffle(list);
//发牌--> 三个玩家以及剩余底牌分别存储在4个TreeSet集合中(因为TreeSet可自动排序)
TreeSet<Integer> player1 = new TreeSet<>();
TreeSet<Integer> player2 = new TreeSet<>();
TreeSet<Integer> player3 = new TreeSet<>();
TreeSet<Integer> otherPokers = new TreeSet<>();
for (int i = 0; i < list.size(); i++) {
if (i >= list.size() - 3) //三张底牌扣下不发
otherPokers.add(list.get(i));
else if (i % 3 == 0)
player1.add(list.get(i));
else if (i % 3 == 1)
player2.add(list.get(i));
else player3.add(list.get(i));
}
//看牌
printPokers("玩家1", player1, hm);
printPokers("玩家2", player2, hm);
printPokers("玩家3", player3, hm);
printPokers("剩下的底牌", otherPokers, hm);
}
//看牌方法
public static void printPokers(String name, TreeSet<Integer> ts, HashMap<Integer, String> hm) {
System.out.print(name + "的牌:");
for (Integer index : ts) {
System.out.print(hm.get(index) + "\t");
}
System.out.println();
}
}
模拟斗地主洗牌、发牌
最新推荐文章于 2022-11-18 19:41:50 发布