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集合模拟斗地主洗牌和随机发牌
最新推荐文章于 2020-08-24 21:24:47 发布