package poker.com;
import java.util.*;
public class PokerShuffleCards {
public static void main(String[] args) {
// TODO Auto-generated method stub
ArrayList<String> color = new ArrayList<String>();
color.add("❤");
color.add("♠");
color.add("♦");
color.add("♣");
ArrayList<String> number = new ArrayList<String>();
for(int i=3;i<=10;i++){
number.add(i+"");
}
number.add("J");
number.add("Q");
number.add("k");
number.add("A");
number.add("2");
HashMap<Integer, String> map = new HashMap<Integer, String>();
int index = 0;//表示牌的编号
for(String thisNumber:number){//外循环控制数字字符串
for(String thisColor:color){//内循环控制花色
map.put(index++, thisNumber + thisColor);
}
}
//加入大小王
map.put(index++, "小王");
map.put(index++, "大王");
//创建数字集合,代表54张牌
ArrayList<Integer> cards = new ArrayList<Integer>();
for(int i=0;i<=53;i++){
cards.add(i);
}
//洗牌,使用Collections的shuffle()方法
Collections.shuffle(cards);
//创建三个玩家和底牌
ArrayList<Integer> iplayer01 = new ArrayList<Integer>();
ArrayList<Integer> iplayer02 = new ArrayList<Integer>();
ArrayList<Integer> iplayer03 = new ArrayList<Integer>();
ArrayList<Integer> iSecretCards = new ArrayList<Integer>();
//遍历这副洗好的牌,遍历过程中,将牌发到三个玩家手中
for(int i=0;i<cards.size();i++){
if(i >=51 ){
iSecretCards.add(cards.get(i));
}else{
//与3取余为0的发给玩家1
if(i%3 == 0) iplayer01.add(cards.get(i));
//与3取余为1的发给玩家2
else if(i%3 == 1) iplayer02.add(cards.get(i));
//与3取余为2的发给玩家3
else iplayer03.add(cards.get(i));
}
}
//对每个人手中的牌排序,使用Collections工具类中的sort()方法
Collections.sort(iplayer01);
Collections.sort(iplayer02);
Collections.sort(iplayer03);
//对应数字形式中的每个人手中的牌。定义字符串形式的牌
ArrayList<String> sPlayer01 = new ArrayList<String>();
ArrayList<String> sPlayer02 = new ArrayList<String>();
ArrayList<String> sPlayer03 = new ArrayList<String>();
ArrayList<String> sScretCards = new ArrayList<String>();
//遍历主键,从map中获得纸牌
for (Integer key:iplayer01){ //第一个玩家手中的牌
sPlayer01.add(map.get(key));
}
for (Integer key:iplayer02){ //第二个玩家手中的牌
sPlayer02.add(map.get(key));
}
for (Integer key:iplayer03){ //第三个玩家手中的牌
sPlayer03.add(map.get(key));
}
for (Integer key:iSecretCards){ //底牌
sScretCards.add(map.get(key));
}
//看牌
System.out.println("玩家1:"+iplayer01);
System.out.println("玩家2:"+iplayer02);
System.out.println("玩家3:"+iplayer03);
System.out.println("底牌:"+iSecretCards);
}
}
运算结果:
玩家1:[0, 3, 5, 8, 10, 11, 14, 15, 24, 25, 27, 35, 39, 43, 44, 52, 53]
玩家2:[1, 6, 16, 17, 18, 21, 23, 26, 28, 29, 36, 38, 40, 41, 42, 45, 50]
玩家3:[2, 4, 9, 12, 13, 19, 22, 30, 31, 32, 33, 37, 46, 47, 48, 49, 51]
底牌:[7, 34, 20]
求帮助,帮我分析是哪里出错了