Java之斗地主洗牌发牌的实现

mac2024-05-12  29

最开始在HashMap中存入键值对(即扑克牌的索引和花色点数),创建好每个玩家的集合;通过创建虚拟的扑克牌编码集合ArrayList,并将0-53,共54张牌,洗牌后,每个玩家按顺序拿牌,拿完牌,并对拿到的牌进行排序(注意此时还指的是扑克编码集合);每个玩家看牌时,传入HashMap集合点数花色,根据刚才拿到的牌索引编码,在hashMap中拿对应的值(牌); 显示效果如下:

代码如下:

package org.westos.demo8; import javax.naming.Name; import java.util.*; public class Test { public static void main(String[] args) { String[] colors = {"♥", "♣", "♠", "♦"}; String[] nums = {"A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"}; //创建存放花色和点数扑克牌的集合 HashMap<Integer, String> hashMap = new HashMap<>(); //创建扑克牌的索引编码集合 ArrayList<Integer> arrayList = new ArrayList<>(); int i1 = 0; //向存放扑克牌集合里面添加元素(每张牌索引+花色点数) //向扑克牌索引编码集合里面添加元素(每张牌索引) for (int i = 0; i < nums.length; i++) { for (int j = 0; j < colors.length; j++) { arrayList.add(i1); hashMap.put(i1++, (colors[j] + nums[i])); } } //添加大小王进扑克牌集合; hashMap.put(52, "☀"); hashMap.put(53, "🌙"); //添加大小王索引进扑克牌索引集合 arrayList.add(52); arrayList.add(53); //洗牌 Collections.shuffle(arrayList); //创建玩家的扑克牌索引集合 ArrayList<Integer> arrayList1 = new ArrayList<>(); ArrayList<Integer> arrayList2 = new ArrayList<>(); ArrayList<Integer> arrayList3 = new ArrayList<>(); ArrayList<Integer> arrayList4 = new ArrayList<>(); //让每个玩家根据扑克牌打乱后的索引依次拿牌(同样拿的是扑克牌索引值) for (int i = 0; i < arrayList.size(); i++) { if (i >= arrayList.size() - 3) { Integer integer = arrayList.get(i); arrayList4.add(integer); } else if (i % 3 == 0) { Integer integer = arrayList.get(i); arrayList1.add(integer); } else if (i % 3 == 1) { Integer integer = arrayList.get(i); arrayList2.add(integer); } else { Integer integer = arrayList.get(i); arrayList3.add(integer); } } //对扑克进行排序; Collections.sort(arrayList1); Collections.sort(arrayList2); Collections.sort(arrayList3); Collections.sort(arrayList4); //创建方法拿牌; lookpooker("player1", arrayList1, hashMap); lookpooker("player2", arrayList2, hashMap); lookpooker("player3", arrayList3, hashMap); lookpooker("底牌", arrayList4, hashMap); } private static void lookpooker(String name, ArrayList<Integer> arrayList, HashMap<Integer, String> hashMap) { System.out.print(name); for (int i = 0; i < arrayList.size(); i++) { Integer key = arrayList.get(i);//按照顺序在每个玩家的索引集合里拿牌(拿的是从扑克牌索引集合里面的值) String s = hashMap.get(key);//按照索引在扑克牌花色点数拿牌,返回的是键对应的值; System.out.print(" " + s + " "); } System.out.println(); } }
最新回复(0)