JavaEE | 集合的一个练习:模拟洗牌发牌
思路:
代码
package PokerGame;
import java.util.*;
public class MyTest {
public static void main(String[] args) {
//1.HashMap存储牌盒
//2.ArrayList记录洗牌后的顺序
//3.TreeSet存储发牌后的索引
//1.HashMap存储牌盒
HashMap<Integer, String> pokerBox = new HashMap<>();
String[] colour={"♥", "♠", "♦", "♣"};
String[] nums={"A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"};
for (int i = 0; i < nums.length; i++) {
for (int j = 0; j < colour.length; j++) {
String val=nums[i].concat(colour[j]);
pokerBox.put(i*colour.length+j,val);
}
}
pokerBox.put(52,"小王");
pokerBox.put(53,"大王");
// System.out.println(pokerBox);
//2.ArrayList记录洗牌后的顺序
ArrayList<Integer> order = new ArrayList<>();
for (int i = 0; i < pokerBox.size(); i++) {
order.add(i);
}
Collections.shuffle(order);//随机打乱集合中元素的顺序,模拟洗牌
Collections.shuffle(order);//随机打乱集合中元素的顺序,模拟洗牌
Collections.shuffle(order);//随机打乱集合中元素的顺序,模拟洗牌
// System.out.println(order);
//3.TreeSet存储发牌后的索引
TreeSet<Integer> pokerA = new TreeSet<>(); //17
TreeSet<Integer> pokerB = new TreeSet<>();
TreeSet<Integer> pokerC = new TreeSet<>();
TreeSet<Integer> pokerL = new TreeSet<>(); //3
//发牌操作
for (int i = 0; i < order.size(); i++) {
if(i>=order.size()-3){
pokerL.add(order.get(i));
}else if( i % 3 == 0 ){
pokerA.add(order.get(i));
}else if( i %3 == 1 ){
pokerB.add(order.get(i));
}else if( i % 3 == 2 ){
pokerC.add(order.get(i));
}
}
// System.out.println(pokerA);
// System.out.println(pokerB);
// System.out.println(pokerC);
// System.out.println(pokerL);
//看牌
lookpoker("A",pokerA,pokerBox);
lookpoker("B",pokerB,pokerBox);
lookpoker("C",pokerC,pokerBox);
lookpoker("L",pokerL,pokerBox);
}
private static void lookpoker(String s, TreeSet<Integer> poker,HashMap<Integer, String> pokerBox ) {
System.out.println(s+"的牌");
//System.out.println(s);
for (Integer integer : poker) {
String s1 = pokerBox.get(integer);
System.out.print(s1+" ");
}
System.out.println();
System.out.println();
}
}