具体规则:
1. 组装54张扑克牌
2.将54张牌顺序打乱
3. 三个玩家参与游戏,三人交替摸牌,每人17张牌,最后三张留作底牌。
4. 查看三人各自手中的牌(按照牌的大小排序)、底牌
手中扑克牌从大到小的摆放顺序:大☺,小☺,2,A,K,Q,J,10,9,8,7,6,5,4,3
package com.web;
import java.util.*;
public class Test48 {
public static void main(String[] args) {
HashMap<Integer, String> poker = new HashMap<>();
ArrayList<Integer> pokerId = new ArrayList<>();
for (int i = 0; i <= 53; i++) {
pokerId.add(i);
}//pokerId = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11....., 47, 48, 49, 50, 51, 52, 53]
//System.out.println("pokerId = " + pokerId);
ArrayList<String> pokerColor = new ArrayList<>();
Collections.addAll(pokerColor, "クラブ", "ダイヤ", "スペード", "ハート");//クラブ♣,ダイヤ♦,スペード♠,ハート♥
ArrayList<String> pokerNumber = new ArrayList<>();
Collections.addAll(pokerNumber, "J", "Q", "K", "A");
/* for (int i = 10; i >= 2; i--) {
pokerNumber.add(String.valueOf(i));//pokerNumber = [A, K, Q, J, 10, 9, 8, 7, 6, 5, 4, 3, 2]
}*/
for (int i = 2; i <= 10; i++) {
pokerNumber.add(i + "");//pokerNumber = [A, K, Q, J, 2, 3, 4, 5, 6, 7, 8, 9, 10]
}
poker.put(0, "Big King");
poker.put(1, "Small King");
/*
for (String number : pokerNumber) {
for (String color : pokerColor) {
System.out.println(color+number);
}
}*/
//创建扑克牌
int index = 2;
for (String color : pokerColor) {
for (String number : pokerNumber) {
poker.put(index, color + number);
index++;
}
}
/*
* 通过Map的对象调用keySet函数获得Map中的key值并保存到Set集合
* 所有的key键都保存到以下的set集合中了
*/
Set<Integer> keys = poker.keySet();
//使用迭代器迭代Set集合
for (Iterator<Integer> it = keys.iterator(); it.hasNext(); ) {
//分别取出每个key值
Integer key = it.next();
//使用Map的对象调用get函数根据key获得value
String value = poker.get(key);
//输出key和value
//System.out.println(key + "-" + value);
}
System.out.println("PokerSize = " + poker.size());//mapSize
System.out.println("PokerIdSize = " + pokerId.size());//ArrayListSize
// 洗牌 其实就是在打乱保存编号的集合顺序
Collections.shuffle(pokerId);//pokerId = [27, 19, 16, 43, 46, 36, 29, 3, 22, 31, 35, 7, 18, 42, 47, 33, 26, 12, 53, 9, 14, 8, 45, 25, 4....]
//创建3个玩家,剩余底牌分到到的牌Id的集合
ArrayList<Integer> player1 = new ArrayList<>();
ArrayList<Integer> player2 = new ArrayList<>();
ArrayList<Integer> player3 = new ArrayList<>();
ArrayList<Integer> restPoker = new ArrayList<>();
for (int i = 0; i < pokerId.size(); i++) {
if (i >= pokerId.size() - 3) {
restPoker.add(pokerId.get(i));
} else {
if (i % 3 == 0) {
player1.add(pokerId.get(i));
} else if (i % 3 == 1) {
player2.add(pokerId.get(i));
} else if (i % 3 == 2) {
player3.add(pokerId.get(i));//pokerId.get(i)=i 这么写不行,发牌的顺序就被写死了,此i非彼i
}
}
}
System.out.println(player1);//[52, 9, 1, 37, 28, 30, 10, 25, 53, 16, 6, 43, 11, 48, 39, 34, 47]
System.out.println(player2);//[18, 41, 22, 36, 45, 21, 26, 8, 19, 50, 12, 31, 5, 7, 27, 29, 44]
System.out.println(player3);//[17, 32, 20, 49, 14, 35, 23, 13, 0, 3, 15, 38, 42, 24, 51, 4, 2]
System.out.println(restPoker);//[51, 52, 53]
watchPoker(poker, player1, "player1");
watchPoker(poker, player2, "player2");
watchPoker(poker, player3, "player3");
watchPoker(poker, restPoker, "restPoker");
}
private static void watchPoker(HashMap<Integer, String> poker, ArrayList<Integer> player, String name) {
StringBuilder sb = new StringBuilder(name).append(": ");//还能这么写呢
for (Integer key : player) {
String value = poker.get(key);
sb.append(value + " ");
}
System.out.println(sb);
}
}