此局地主是:李四
张三: [梅花10, 方片2, 方片K, 方片J, 方片5, 黑桃6, 黑桃10, 红桃3, 梅花3, 黑桃2, 梅花8, 黑桃A, 红桃J, 梅花9, 红桃K, 方片9, 梅花Q]
李四: [红桃4, 黑桃8, 方片8, 方片3, 红桃2, 红桃6, 红桃5, 黑桃3, 黑桃4, 梅花7, 方片Q, 小王, 红桃8, 黑桃K, 方片6, 梅花A, 黑桃7]
王五: [方片4, 梅花4, 方片7, 黑桃5, 黑桃9, 红桃10, 梅花K, 方片A, 红桃Q, 黑桃J, 梅花2, 大王, 方片10, 红桃A, 梅花J, 梅花5, 红桃7]
底牌:[梅花6,红桃9,黑桃Q]
可通过 Map 集合将三名玩家的牌按大小排序,实现代码如下:
import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Random; import java.util.TreeSet; /** * 功能说明: * * @author 夏大昌 * @Date 2022/8/22 20:42 */ public class KaPai { public static void main(String[] args) { // 1.准备牌 String[] arr1 = { "黑桃", "红桃", "方片", "梅花" }; String[] arr2 = { "A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K" }; // 定义Map集合用来存放索引和牌 HashMap pokerMap = new HashMap<>(); // 定义List集合存储索引(索引为0-53) List indexList = new ArrayList<>(); // 定义索引值变量 int index = 0; // 将扑克牌与索引建立对应关系放入Map和List集合中 for (String num : arr2) { for (String color : arr1) { pokerMap.put(index, color + num); indexList.add(index); index++; } } pokerMap.put(index, "小王"); indexList.add(index++); pokerMap.put(index, "大王"); indexList.add(index); // 定义玩家 TreeSet zhangsan = new TreeSet<>(); TreeSet lisi = new TreeSet<>(); TreeSet wangwu = new TreeSet<>(); TreeSet buttoms = new TreeSet<>(); // 2. 洗牌 Collections.shuffle(indexList); // 3. 发牌 for (int i = 0; i < indexList.size(); i++) { if (i >= indexList.size() - 3) { buttoms.add(indexList.get(i)); } else if (i % 3 == 0) { zhangsan.add(indexList.get(i)); } else if (i % 3 == 1) { lisi.add(indexList.get(i)); } else { wangwu.add(indexList.get(i)); } } // 4. 看牌 pushBoss(); check(pokerMap, zhangsan, "张三"); check(pokerMap, lisi, "李四"); check(pokerMap, wangwu, "王五"); check(pokerMap, buttoms, "底牌"); } /** * * 看牌 * * * @param pokerMap * * @param player 玩家扑克牌对应索引集合 * * @param name 玩家昵称 * */ public static void check(HashMap pokerMap, TreeSet player, String name) { // 查看手中的牌 System.out.print(name + ":["); for (Object i : player) { System.out.print(pokerMap.get(i) + " "); } System.out.println("]"); } /** 随机地主 */ public static void pushBoss() { List players = new ArrayList(); players.add("张三"); players.add("李四"); players.add("王五"); Random r = new Random(); int bossIndex = r.nextInt(3); String boss = (String) players.get(bossIndex); System.out.println("此局地主是:" + boss); } }