269-271 模拟斗地主升级版案例分析

269-271 模拟斗地主升级版案例分析,第1张

269-271 模拟斗地主升级版案例分析

269 (案例)模拟斗地主

【需求】

做牌——创建花色数组,创建数字数组,然后组合成牌,

做牌盒——创建ArrayList集合

装牌——添加花色牌、大王、小王元素到集合

洗牌——shuffle随机排序

发牌——给3个玩家发牌,遍历集合

看牌——3个玩家看牌,输出写屏

> heart,club,diamond,spade

--------------------------------------------------------------

1 package e269;

2 3 import java.util.ArrayList;

4 import java.util.Collections;

5 6 public class PokerDemo {

7     public static void main(String[] args) {

8 //        ---the box---

9         ArrayList l = new ArrayList();

10

11 //        ---cards---

12         String[] cjihe = {"D","C","H","S"};

13         String[] njihe = {"2","3","4","5","6","7","8","9","10","J","Q","K","A"};

14 //        ATTENTION!!!用增强for遍历2个数组,并用2个数组组装出52个扑克牌

15         for (String c : cjihe){

16             for (String n :njihe){

17                 l.add(c+n);

18             }

19         }

20         l.add("KING");

21         l.add("QUEEN");

22         System.out.println("beginnt"+l);

23         Collections.shuffle(l);

24

25 //        ---shuffle---

26         System.out.println("after shufflent"+l);

27

28 //        ---players---

29         ArrayList player1 = new ArrayList<>();

30         ArrayList player2 = new ArrayList<>();

31         ArrayList player3 = new ArrayList<>();

32         ArrayList hand = new ArrayList<>();

33

34 //        ---deal---

35         for (int i=0;i

36             String card = l.get(i);

37             if (i>=l.size()-3){

38                 hand.add(card);

39             }else if (i%3==0){

40                 player1.add(card);

41             }else if (i%3==1){

42                 player2.add(card);

43             }else if (i%3==2){

44                 player3.add(card);

45             }

46         }

47

48 //        ---have a look---

49         System.out.println("show the cards");

50         System.out.println("player1nt"+player1);

51         System.out.println("player2nt"+player2);

52         System.out.println("player3nt"+player3);

53         System.out.println("handnt"+hand);

54

55 //        ---show---

56         show("MOLE",player1);

57         show("RAT",player2);

58         show("BADGER",player3);

59         show("HAND",hand);

60

61     }

62     public static void show(String name,ArrayList l){

63         System.out.println("cards of player1");

64         System.out.println("t");

65         for (String cards : l){

66             System.out.print(cards+",");

67         }

68         System.out.println();

69     }

70 }

71

270 模拟斗地主升级版案例分析

(这节课只是分析,不写代码)

【需求】

实现洗牌、发牌、看牌

要求:对牌排序,这里使用对索引进行排序的方式

HashMap做牌

ArrayList发牌

TreeSet拿牌

key

value

(自动按升序排列每个玩家手里的牌)

0

H

0

1

S

1

2

D

2

KING

53

QUEEN

53

【思路】

  1. 创建HashMap,键是编号,值是牌
  2. 创建ArrayList,存储编号
  3. 创建花色数组和点数数组
  4. 从0开始往HashMap里存储编号,并存储对应的牌,往ArrayList里面存储编号
  5. 洗牌(洗编号),用Collections.shuffle方法实现随机排序
  6. 发牌(发编号),用TreeSet集合接收以实现编号自然排序
  7. 遍历看牌

271 模拟斗地主升级版代码实现

1 package e271;2

3 import java.util.ArrayList;

4 import java.util.Collections;

5 import java.util.HashMap;

6 import java.util.TreeSet;

7

8 public class PokerDemo {

9     public static void main(String[] args) {

10         HashMap cardC = new HashMap<>();

11         ArrayList noC = new ArrayList<>();

12

13         String[] nArray = {"3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A", "2" };

14         String[] cArray = {"D.", "C.", "S.", "H." };

15

16         int no = 0;

17         for (String n : nArray) {

18             for (String c : cArray) {

19                 cardC.put(no,c+n);

20                 noC.add(no);

21                 no++;

22             }

23         }

24

25         cardC.put(52,"KING");

26         noC.add(no);

27         no++;

28

29         cardC.put(53,"QUEEN");

30         noC.add(no);

31

32         Collections.shuffle(noC);

33

34         TreeSet player1 = new TreeSet<>();

35         TreeSet player2 = new TreeSet<>();

36         TreeSet player3 = new TreeSet<>();

37         TreeSet hand = new TreeSet<>();

38

39         for (int i=0;i

40             int handCard = noC.get(i);//

41             if (i>=noC.size()-3){

42                 hand.add(noC.get(i));

43             }else if (i%3==0){

44                 player1.add(noC.get(i));

45             }else if (i%3==1){

46                 player2.add(noC.get(i));

47             }else if (i%3==2){

48                 player3.add(noC.get(i));

49             }

50         }

51

52         System.out.println("nplayer1");

53         show("player1",player1,cardC);

54         System.out.println("nplayer2");

55         show("player2",player2,cardC);

56         System.out.println("nplayer3");

57         show("player3",player3,cardC);

58     }

59

60     public static void show(String name,TreeSet ts,HashMap cardC){

61         System.out.println("57.show the cardst");

62         for (Integer jian : ts){

63             String showCard = cardC.get(jian);

64             System.out.print(showCard+",");

65         }

66     }

67 }

68

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5564338.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-14
下一篇 2022-12-14

发表评论

登录后才能评论

评论列表(0条)

保存