import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.TreeSet; /** * * @author Tracy Xiao * */ public class Main { public static void main(String[] args) { /** * 创建牌花色数字数组 */ String[] num = {"3","4","5","6","7","8","9","10","J","Q","K","A","2"}; String[] color = {"红桃","黑桃","方片","梅花"}; String[] king = {"小王","大王"}; /** * 初始化保存牌序号及花色 */ ArrayList<Integer> pokerIndex = new ArrayList<>();//牌序号 HashMap<Integer, String> pokerMap = new HashMap<>();//牌序号和花色Map int index = 0; /** * 创建玩家和底牌,用treeset排序,玩家集合中存放的排序号 */ TreeSet<Integer> three = new TreeSet<>();//底牌 TreeSet<Integer> player1 = new TreeSet<>(); TreeSet<Integer> player2 = new TreeSet<>(); TreeSet<Integer> player3 = new TreeSet<>(); /** * 将牌数组储存到map和list中 */ for(String s1 : num) { for(String s2 : color) { pokerIndex.add(index); pokerMap.put(index++, s2.concat(s1));//字符串拼接 } } /** * 添加大小王 */ pokerIndex.add(index); pokerMap.put(index++, king[0]); pokerIndex.add(index); pokerMap.put(index, king[1]); /** * 洗牌 */ Collections.shuffle(pokerIndex); /** * 给玩家发牌 */ for (int i = 0; i < pokerIndex.size(); i++) { if(i >= pokerIndex.size() - 3) {//最后3张为底牌 three.add(pokerIndex.get(i)); } else if(i % 3 == 0) { player1.add(pokerIndex.get(i)); } else if(i % 3 == 1) { player2.add(pokerIndex.get(i)); } else { player3.add(pokerIndex.get(i)); } } /** * 看牌 */ seePoker("Three",three,pokerMap); seePoker("player1",player1,pokerMap); seePoker("player2",player2,pokerMap); seePoker("player2",player2,pokerMap); } /** * 看牌 * @param ts * @param hm */ private static void seePoker(String name,TreeSet<Integer> ts,HashMap<Integer, String> hm) { int index = 0; System.out.print(name+" : "); for(Integer i : ts) { System.out.print(hm.get(i)); if(index++ < ts.size() - 1) { System.out.print(","); } } System.out.println();//换行 } }
用java集合模拟斗地主洗牌和随机发牌
猜你喜欢
转载自blog.csdn.net/pastthewind/article/details/80116039
今日推荐
周排行