public class PokerGame { static ArrayList<String> list = new ArrayList<>();//牌盒 //创建一个集合,用来添加牌的价值 static HashMap<String,Integer> hm = new HashMap<>(); // 使用静态代码块保证牌只有一副 static{ String[] color = {"♥","♦","♣","♠"}; String[] number = {"3","4","5","6","7","8","9","10","J","Q","K","A","2"};
for (int i = 0; i < color.length; i++) { for (int j = 0; j < number.length; j++) { list.add(color[i]+number[j]); } } list.add(" 小王"); list.add(" 大王"); // 给牌盒中的每一张牌添加价值 hm.put("小王",100); hm.put("大王",101); for (int i = 0; i < number.length; i++) { hm.put(number[i],i+3); } System.out.println("牌盒中的牌和价值为:"+hm); }
public PokerGame() {//空参构造 Collections.shuffle(list);//洗牌 // 发牌 ArrayList<String> player1 = new ArrayList<>(); ArrayList<String> player2 = new ArrayList<>(); ArrayList<String> player3 = new ArrayList<>(); ArrayList<String> dipai = new ArrayList<>(); for (int i = 0; i < list.size(); i++) { if (i >= list.size() - 3) { dipai.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 if (i % 3 == 2) { player3.add(list.get(i)); } } order(player1); order(player2); order(player3); order(dipai); // 打印玩家牌和底牌 System.out.println("玩家1:" + player1); System.out.println("玩家2:" + player2); System.out.println("玩家3:" + player3); System.out.println("底牌: " + dipai); }
public void order(ArrayList<String> list){ Collections.sort(list, new Comparator<String>() { @Override public int compare(String o1, String o2) { //o1表示当前要插入到有序序列中的牌 //o2表示有序序列中的牌 String color1=o1.substring(0,1); int value1=getValue(o1); String color2=o2.substring(0,1); int value2=getValue(o2); int result=value1-value2; if (result==0){//如果价值相等,比较花色 return color1.compareTo(color2); } return result; } }); } public int getValue(String poker){ String number1=poker.substring(1); if (hm.containsKey(number1)){//如果牌面是数字或JQKA2 return hm.get(number1); }else {//如果牌面是小王或大王 return Integer.parseInt(number1); } } }