1 package Collect_test;
2
3 import java.util.ArrayList;
4 import java.util.Collections;
5 import java.util.List;
6
7 /**
8 * FileName: GameDemo
9 * Author: lps
10 * Date: 2022/4/13 18:19
11 * Sign:刘品水 Q:1944900433
12 */
13 public class GameDemo {
14 //1.定义一个静态集合存储所有的牌
15 public static List<Card> allCards = new ArrayList<>();
16
17 //2.做牌 定义静态代码块初始化数据
18 static {
19 //3.定义点数 个数确定 类型确定 使用数组
20 String[] sizes = {"3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A", "2"};
21 //4.定义花色 个数确定 类型确定
22 String[] colors = {"♥", "♠", "♦", "♣"};
23 //5.组合点数和花色
24 int index=0;//记录牌的大小
25 for (String size : sizes) {
26 index++;
27 for (String color : colors) {
28 //6.封装成一个牌对象
29 Card c = new Card(size, color,index);
30 //7.存入到集合容器中
31 allCards.add(c);
32 }
33 }
34 //8.将大小王耶添加到集合中
35 Card c1 = new Card("", "小王",++index);
36 Card c2 = new Card("", "大王",++index);
37 //static <T> boolean addAll(Collection<? super T> c, T... elements) 将所有指定的元素添加到指定的集合。
38 Collections.addAll(allCards, c1, c2);
39 System.out.println("新牌" + allCards);
40 }
41
42 public static void main(String[] args) {
43 //9.洗牌
44 //static void shuffle(List<?> list) 使用默认的随机源随机排列指定的列表。
45 Collections.shuffle(allCards);
46 System.out.println("洗牌后" + allCards);
47 //10.发牌(定义三个玩家 每个玩家的牌是个集合容器)
48 List<Card> lps = new ArrayList<>();
49 List<Card> wyr = new ArrayList<>();
50 List<Card> zw = new ArrayList<>();
51
52 //11.开始发牌 从集合发出51张牌给三个玩家 剩余三张做底牌
53 for (int i = 0; i < allCards.size()-3; i++) {
54 //先拿到当前牌对象
55 Card c=allCards.get(i);
56 if (i%3==0){
57 lps.add(c);
58 }else if (i%3==1){
59 wyr.add(c);
60 }else if(i%3==2){
61 zw.add(c);
62 }
63 }
64 //12.拿到最后三张底牌
65 //List<E> subList(int fromIndex, int toIndex) 返回指定的 fromIndex (含)和 toIndex之间的列表部分的视图。
66 List<Card> lastThreeCards = allCards.subList(allCards.size()-3, allCards.size());
67
68 //13.给玩家的牌排序(从大到小)
69 sortCard(lps);
70 sortCard(wyr);
71 sortCard(zw);
72
73
74 //14.输出玩家的牌
75 System.out.println("刘品水:"+lps);
76 System.out.println("王雅茹"+wyr);
77 System.out.println("张伟"+zw);
78 System.out.println("底牌:"+lastThreeCards);
79
80 }
81
82 /**
83 * 给牌排序
84 * @param cards
85 */
86
87 private static void sortCard(List<Card> cards) {
88 //4♠, 8♦, J♣, 小王, 大王, A♣, 9♣, 6♠, 7♣, K♠, 8♥, K♣, 5♦, 6♦, 5♠, 6♣
89 /* Collections.sort(cards, new Comparator<Card>() {
90 @Override
91 public int compare(Card s1, Card s2) {
92 return s2.getIndex()-s1.getIndex();
93 }
94 });*/
95 Collections.sort(cards, (s1, s2) -> s2.getIndex()-s1.getIndex());
96 }
97
98 }
1 package Collect_test;
2
3 /**
4 * FileName: Card
5 * Author: lps
6 * Date: 2022/4/13 18:21
7 * Sign:刘品水 Q:1944900433
8 */
9 public class Card {
10 private String size;
11 private String color;
12 private int index;//牌的真正大小
13
14 @Override
15 public String toString() {
16 return size + color;
17 }
18
19 public String getSize() {
20 return size;
21 }
22
23 public void setSize(String size) {
24 this.size = size;
25 }
26
27 public String getColor() {
28 return color;
29 }
30
31 public void setColor(String color) {
32 this.color = color;
33 }
34
35 public Card() {
36 }
37
38 public int getIndex() {
39 return index;
40 }
41
42 public void setIndex(int index) {
43 this.index = index;
44 }
45
46 public Card(String size, String color, int index) {
47 this.size = size;
48 this.color = color;
49 this.index=index;
50 }
51 }
![]()