Files
javaSE260715/s-day04/src/com/inmind/test07/Test14.java
T

92 lines
3.1 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package com.inmind.test07;
import java.util.*;
/*
按照斗地主的规则,完成洗牌发牌的动作。
具体规则:
组装54张扑克牌将
54张牌顺序打乱
三个玩家参与游戏,三人交替摸牌,每人17张牌,最后三张留作底牌。
查看三人各自手中的牌(按照牌的大小排序)、底牌
要求:使用双列集合实现
<Integer,String>:键为牌的序号(排序),值为牌的名称
可以通过键找值的方式,来排序后看牌
*/
public class Test14 {
public static void main(String[] args) {
//创建一个双列集合,键为牌的序号,值为牌名称
HashMap<Integer,String> pokers = new HashMap<>();
//组装牌
String[] nums = {"3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A", "2"};
String[] colors = {"♦", "♣", "♥","♠" };
//1~54 对应54张牌,54张打乱
ArrayList<Integer> keys = new ArrayList<>();
int key = 1;
for (String num : nums) {
for (String color : colors) {
pokers.put(key, color + num);
keys.add(key++);
}
}
//大小王
pokers.put(key, "小王");
keys.add(key++);
pokers.put(key, "大王");
keys.add(key);
System.out.println(pokers);
System.out.println(keys);
//洗牌
Collections.shuffle(keys);
System.out.println( keys);
//创建4个集合(3个玩家和1个底牌)
//创建一个降序的比较器给TreeSet使用
Comparator<Integer> comparator = new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o2-o1;
}
};
TreeSet<Integer> player1 = new TreeSet<>(comparator);
TreeSet<Integer> player2 = new TreeSet<>(comparator);
TreeSet<Integer> player3 = new TreeSet<>(comparator);
TreeSet<Integer> dipai = new TreeSet<>(comparator);
/*
玩家1 0 3 6 %3 = 0
玩家2 1 4 7 %3 = 1
玩家3 2 5 8 %3 = 2
*/
for (int i = 0; i < keys.size(); i++) {
if (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 {
player3.add(keys.get(i));
}
}
}
//看牌
showPokers("玩家1", player1, pokers);
showPokers("玩家2", player2, pokers);
showPokers("玩家3", player3, pokers);
showPokers("底牌", dipai, pokers);
}
public static void showPokers(String name, TreeSet<Integer> pokerKeys, Map<Integer, String> pokers) {
String content = name + "";
//遍历键值,双列集合中,键找值
for (Integer pokerKey : pokerKeys) {
content += pokers.get(pokerKey) + " ";
}
System.out.println(content);
}
}