public static void main(String[] args) {
//准备牌:
Map<Integer, String> poker=new HashMap<>();
ArrayList<Integer> keys=new ArrayList<>();
//准备花色,四色存入一个集合
ArrayList<String> color=new ArrayList<>();
color.add("♥");
color.add("♠");
color.add("♣");
color.add("♦");
//准备数字,按大小顺序存入一个数组
String[] num={"3","4","5","6","7","8","9","10","J","Q","K","A","2"};
//完成数字与纸牌的映射关系:
int key=0;
for (String string : num) {
for (String string1 : color) {
poker.put(key, string+string1);
keys.add(key);
key++;
}
}
poker.put(52, "小鬼");
keys.add(52);
poker.put(53, "大鬼");
keys.add(53);
//使用双列Map(HashMap)集合,完成一个数字与字符串纸牌的对应关系(相当于一个字典)。
//System.out.println(poker);
//洗牌:
// 通过数字完成洗牌发牌
Collections.shuffle(keys);
//System.out.println(keys+"="+poker.get(keys));
//发牌:
// 将每个人以及底牌设计为ArrayList<String>,将最后3张牌直接存放于底牌,剩余牌通过对3取模依次发牌。
ArrayList<Integer> player1=new ArrayList<>();
ArrayList<Integer> player2=new ArrayList<>();
ArrayList<Integer> player3=new ArrayList<>();
ArrayList<Integer> dipai=new ArrayList<>();
for (int i = 0; i < 54; i++) {
if (i<54&&i>=51) {
dipai.add(keys.get(i));
}else if (i%3==0) {
player1.add(keys.get(i));
}else if (i%3==1) {
player2.add(keys.get(i));
}else if (i%3==2) {
player3.add(keys.get(i));
}
}
// 存放的过程中要求数字大小与斗地主规则的大小对应。
Collections.sort(player1);
Collections.sort(player2);
Collections.sort(player3);
Collections.sort(dipai);
// 将代表不同纸牌的数字分配给不同的玩家与底牌。
//看牌:
// 通过Map集合找到对应字符展示。
for (Integer key1 : player1) {
System.out.print(poker.get(key1)+" ");
}
System.out.println();
for (Integer key1: player2) {
System.out.print(poker.get(key1)+" ");
}
System.out.println();
for (Integer key1 : player3) {
System.out.print(poker.get(key1)+" ");
}
System.out.println();
for (Integer key1 : dipai) {
System.out.print(poker.get(key1)+" ");
}
// 过查询纸牌与数字的对应关系,由数字转成纸牌字符串再进行展示
}
map集合之——应用:斗地主小游戏之发牌
最新推荐文章于 2020-12-07 09:43:13 发布