package demo;
import java.util.*;
public class DouDiZhu {
public static void main(String[] args) {
//建立m1集合存放所有的扑克牌
Map<Integer, String> m1 = new HashMap<>();
//建立l1集合存放所有的扑克牌编号
List<Integer> l1 = new ArrayList<>();
//建立s1数组存放扑克牌花色
String[] s1 = {"♦", "♣", "♥", "♠"};
//建立s2数组存放扑克牌点数
String[] s2 = {"3", "4", "5", "6", "7", "8", "9", "X", "J", "Q", "K", "A", "2"};
//i1为每张牌的编号
int i1 = 0;
//通过增强for循环将每一张扑克牌的花色和点数进行拼接
for (String s3 : s1) {
for (String s4 : s2) {
//s5是每一张拼接后的扑克牌
String s5 = s3 + s4;
//将编号存入l1集合中
l1.add(i1);
//将编号和扑克牌存放入m1集合中
m1.put(i1, s5);
i1++;
}
}
//向l1集合添加小王的编号
l1.add(i1);
向l1集合添加小王的编号和扑克牌
m1.put(i1, "s🃏");
i1++;
//向l1集合添加大王的编号
l1.add(i1);
//向l1集合添加大王的编号和扑克牌
m1.put(i1, "B🃏");
//洗牌
Collections.shuffle(l1);
//d集合存放底牌编号
List<Integer> d = new ArrayList<>();
//A集合存放玩家A的牌编号
List<Integer> A = new ArrayList<>();
//B集合存放玩家B的牌编号
List<Integer> B = new ArrayList<>();
//C集合存放玩家C的牌编号
List<Integer> C = new ArrayList<>();
//通过for循环和if语句进行发牌
for (int i2 = 0; i2 < l1.size(); i2++) {
//i3是通过索引i2找到l1集合中的对应编号
Integer i3 = l1.get(i2);
if (i2 >= l1.size() - 3) { //将最后三张作为底牌
//将底牌存放入d集合中
d.add(i3);
} else if (i2 % 3 == 0) { //将索引i2取余后余数为0的非底牌发给A玩家
//将索引i2取余后余数为0的非底牌存放入A集合中
A.add(i3);
} else if (i2 % 3 == 1) { //将索引i2取余后余数为1的非底牌发给B玩家
//将索引i2取余后余数为1的非底牌存放入B集合中
B.add(i3);
} else { //将其余(索引i2取余后余数为2)的非底牌发给C玩家
//将其余(索引i2取余后余数为2)的非底牌存放入C集合中
C.add(i3);
}
}
//调用printPuke方法打印底牌
printPuke(d, m1);
//调用printPuke方法打印玩家A的扑克牌
printPuke(A, m1);
//调用printPuke方法打印玩家B的扑克牌
printPuke(B, m1);
//调用printPuke方法打印玩家C的扑克牌
printPuke(C, m1);
}
//创建打印根据集合中的编号获取到该集合中所有对应的扑克牌的方法
public static void printPuke(List<Integer> list, Map<Integer, String> map) {
//将集合中的编号进行升序排列
Collections.sort(list);
//创建容器sb1
StringBuilder sb1 = new StringBuilder();
//通过增强for循环遍历集合
for (int i : list) {
//s1是根据集合中的编号获取到对应的扑克牌
String s1 = map.get(i);
//将获取到的扑克牌存放入sb1容器中并用空格符隔开
sb1.append(s1).append(" ");
}
//将sb1容器转换为字符串形式输出
String s2 = sb1.toString();
//打印去除首尾空格的字符串s2
System.out.println(s2.trim());
}
}
Java斗地主
于 2022-11-01 23:06:26 首次发布