Java之使用集合来实现一个简单的斗地主的洗牌和发牌功能

mac2024-08-23  61

**

Java之使用集合来实现一个简单的斗地主的洗牌和发牌功能:

**

难点:对洗牌后的顺序实现一个自动重排,这里我们可以使用索引,利用HashMap集合的键值对思想,将每张扑克牌的牌面值与其索引进行对应,然后我们可以通过操作索引实现对扑克牌的洗牌和发牌,最后再获取对应索引值的牌面值即可:

package puker_game; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; public class 斗地主的制牌洗牌和发牌的进阶 { public static void main(String[] args) { // 准备牌表,牌表用于对应制作好的牌面跟索引的值,即54张扑克牌,每张对应一个索引 HashMap<Integer, String> table = new HashMap<>(); // 准备牌组,用于存放制作好的扑克牌 ArrayList<Integer> paizu = new ArrayList<>(); // 制作花色 String[] color = { "♠", "♥", "♦", "♣" }; // 制作数字 String[] num = { "A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K" }; // 制作牌面,将牌面添加进牌表中,形成对应关系,给定初始索引,外层循环数字内存循环花色,可实现最后的齐牌功能 int index = 0; for (String nu : num) { for (String co : color) { String face = nu + co; // 将制作好的牌面放入牌表中 table.put(index, face); // 将制作好的牌面同时放入扑克牌牌组中 paizu.add(index); index++; } } // 将大小王添加进牌表 table.put(index, "小王"); paizu.add(index); index++; table.put(index, "大王"); paizu.add(index); // 洗牌 Collections.shuffle(paizu); // 准备底牌 ArrayList<Integer> dipai = new ArrayList<>(); for (int i = 0; i < 3; i++) { dipai.add(paizu.remove(0)); } // 准备玩家 ArrayList<Integer> zhangsan = new ArrayList<>(); ArrayList<Integer> lisi = new ArrayList<>(); ArrayList<Integer> wangwu = new ArrayList<>(); // 给玩家发牌 while (true) { if (!(paizu.isEmpty())) { zhangsan.add(paizu.remove(0)); } if (!(paizu.isEmpty())) { lisi.add(paizu.remove(0)); } if (!(paizu.isEmpty())) { wangwu.add(paizu.remove(0)); } else { break; } } // 发牌后排序 Collections.sort(dipai); Collections.sort(zhangsan); Collections.sort(lisi); Collections.sort(wangwu); // System.out.println(zhangsan); // 看牌 System.out.println("底牌:" + query(table, dipai)); System.out.println("张三:" + query(table, zhangsan)); System.out.println("李四:" + query(table, lisi)); System.out.println("王五:" + query(table, wangwu)); } private static String query(HashMap<Integer, String> table, ArrayList<Integer> wanjia) { StringBuilder sb = new StringBuilder("["); for (Integer index : wanjia) { String face = table.get(index); sb.append(face).append(","); } return sb.replace(sb.length() - 1, sb.length(), "]").toString(); } }
最新回复(0)