1 public class CardDemo {
2 private String size;
3 private String color;
4 private int index;
5
6 public CardDemo(String size, String color, int index) {
7 this.size = size;
8 this.color = color;
9 this.index = index;
10 }
11
12 public int getIndex() {
13 return index;
14 }
15
16 public void setIndex(int index) {
17 this.index = index;
18 }
19
20 public CardDemo() {
21 }
22
23 public String getSize() {
24 return size;
25 }
26
27 public void setSize(String size) {
28 this.size = size;
29 }
30
31 public String getColor() {
32 return color;
33 }
34
35 public void setColor(String color) {
36 this.color = color;
37 }
38
39 @Override
40 public String toString() {
41 return size + color;
42 }
43 }
1 public class CardGamesDemo {
2
3 // 牌面 {"3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A", "2"};
4 // 花色 {"♠","♥","♣","♦"};
5 public static List<CardDemo> allCards = new ArrayList<>();
6
7 static {
8 // 定义牌面
9 String[] sizes = {"3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A", "2"};
10 // 定义花色
11 String[] colors = {"♠","♥","♣","♦"};
12 // 定义大小
13 int index = 0;
14 for (String size : sizes) {
15 index ++;
16 for (String color : colors) {
17 CardDemo c = new CardDemo(size, color, index);
18 allCards.add(c);
19 }
20 }
21
22 // 大小王添加到集合中
23 CardDemo small = new CardDemo("", "🐍", ++index);
24 CardDemo big = new CardDemo("", "🐉", ++index);
25 Collections.addAll(allCards, big, small);
26 System.out.println("新牌" + allCards);
27 }
28
29 public static void main(String[] args) {
30 Collections.shuffle(allCards);
31 System.out.println("洗牌后:" + allCards);
32
33 // 定义三个玩家(每个玩家都是一个集合)
34 List<CardDemo> gName1 = new ArrayList<>();
35 List<CardDemo> gName2 = new ArrayList<>();
36 List<CardDemo> gName3 = new ArrayList<>();
37
38 // 发牌(从集合中将 51 张牌分发给三位玩家,留三张为底牌)
39 for (int i = 0; i < allCards.size() - 3; i++) {
40 // 先拿到当前排对象
41 CardDemo c = allCards.get(i);
42 if (i % 3 == 0){
43 gName1.add(c);
44 }else if (i % 3 == 1){
45 gName2.add(c);
46 } else if (i % 3 == 2) {
47 gName3.add(c);
48 }else {
49 System.out.println("少牌,从新来!!!");
50 }
51 }
52 // 拿到最后三张底牌(把最后三张底牌截取一个子集合)
53 List<CardDemo> last = allCards.subList(allCards.size() - 3, allCards.size());
54
55 // 给玩家的牌排序
56 sortCards(gName1);
57 sortCards(gName2);
58 sortCards(gName3);
59 // 输出玩家的拍
60 System.out.println("玩家1" + gName1);
61 System.out.println("玩家2" + gName2);
62 System.out.println("玩家3" + gName3);
63 System.out.println("底牌:" + last);
64 }
65
66 // 给牌排序
67 private static void sortCards(List<CardDemo> cards) {
68 Collections.sort(cards, new Comparator<CardDemo>() {
69 @Override
70 public int compare(CardDemo o1, CardDemo o2) {
71 // 制定规则
72 return o2.getIndex() - o1.getIndex();
73 }
74 });
75 }
76 }