方法一:
方法一:发出的牌随机排序没有使用
public static void main(String[] args) {
faPoKer();
}
// 创建一个方法 , 获取 所有的牌 , 并将顺序打乱 .
public static ArrayList<String> getPoKer() {
// 1. 准备牌
//定义一个集合,存储54张牌牌
ArrayList<String> pai = new ArrayList<>();
//先把大小王放进去
pai.add("大王");
pai.add("小王");
// 创建两个数组 , 存储花色和序号 .
String[] huaSe = {"黑桃♠", "红桃♥", "梅花♣", "方片♦"};
String[] num = {"2", "A", "K", "Q", "J", "10", "9", "8", "7", "6", "5", "4", "3"};
// 循环嵌套两个数组 , 拼接牌
for (int i = 0; i < huaSe.length; i++) {
for (int j = 0; j < num.length; j++) {
// 把所有的牌 拼接之后 装进集合中
pai.add(huaSe[i] + num[j]);
}
}
// System.out.println(pai); 输出所有的牌
// 2 . 洗牌 - 把牌的顺序打乱 .
Collections.shuffle(pai);
return pai;
}
// 创建一个方法 , 进行发牌 和 看牌 .
public static void faPoKer() {
// 调用getPoker()方法拿到所有的牌
List<String> poKer = getPoKer();
// 创建四个集合 , 三个玩家和底牌
List<String> person01 = new ArrayList<>();
List<String> person02 = new ArrayList<>();
List<String> person03 = new ArrayList<>();
List<String> diPai = new ArrayList<>();
// 遍历集合 , 发牌 .
for (int i = 0; i < poKer.size(); i++) {
// 得到牌
String s = poKer.get(i);
if (i >= 51) { // 剩余的最后三张牌留下来作为底牌.
diPai.add(s);
} else if (i % 3 == 0) { // 按顺序依次把牌交给各个玩家.
person01.add(s);
} else if (i % 3 == 1) {
person02.add(s);
} else if (i % 3 == 2) {
person03.add(s);
}
}
// 输出集合 , 4.看牌 .
System.out.println("张三:" + person01);
System.out.println("李四:" + person02);
System.out.println("赵五:" + person03);
System.out.println("底牌:" + diPai);
方法二:
使用map 双列集合,将key值用数表示,然后通过比较key值进行排序。比较而言map的功能比list强大但是使用复杂一点
public static void main(String[] args) {
fapai();
}
private static void fapai() {
Map<Integer, String> pai = new HashMap<>();
int count = 1;
//先把大小王放进去
pai.put(count++, "大王");
pai.put(count++, "小王");
//创建集合存储花色和牌的数
List<String> huaSe = new ArrayList<>();
List<String> num = new ArrayList<>();
Collections.addAll(huaSe, "黑桃♠", "红桃♥", "梅花♣", "方片♦");
Collections.addAll(num, "2", "A", "K", "Q", "J", "10", "9", "8", "7", "6", "5", "4", "3");
//强循环遍历
for (String n : num) {
for (String h : huaSe) {
String card=h+n;
pai.put(count++, card);
}
}
Set<Integer> set = pai.keySet();
List<Integer> list = new ArrayList<>();
list.addAll(set);
Collections.shuffle(list);
// 创建四个集合 , 三个玩家和底牌
List<Integer> person01 = new ArrayList<>();
List<Integer> person02 = new ArrayList<>();
List<Integer> person03 = new ArrayList<>();
List<Integer> diPai = new ArrayList<>();
// 遍历集合 , 发牌 .
for (int i = 0; i < pai.size(); i++) {
// 得到牌
if (i >= 51) { // 剩余的最后三张牌留下来作为底牌.
diPai.add(list.get(i));
} else if (i % 3 == 0) { // 按顺序依次把牌交给各个玩家.
person01.add(list.get(i));
} else if (i % 3 == 1) {
person02.add(list.get(i));
} else if (i % 3 == 2) {
person03.add(list.get(i));
}
}
Collections.sort(person01);
Collections.sort(person02);
Collections.sort(person03);
Collections.sort(diPai);
List<String> player1 = new ArrayList<>();
List<String> player2 = new ArrayList<>();
List<String> player3 = new ArrayList<>();
List<String> diPai1 = new ArrayList<>();
for (Integer integer : diPai) {
diPai1.add(pai.get(integer));
}
System.out.println(diPai1);
for (Integer integer : person01) {
player1.add(pai.get(integer));
}
for (Integer integer : person02) {
player2.add(pai.get(integer));
}
for (Integer integer : person03) {
player3.add(pai.get(integer));
}
System.out.println(player1);
System.out.println(player2);
System.out.println(player3);
// 输出集合 , 4.看牌 .
}
}