2.4 集合的综合案例
2.4.1 案例介绍
按照斗地主的规则,完成洗牌发牌的动作。
具体规则:
使用54张牌打乱顺序,三个玩家参与游戏,三人交替摸牌,每人17张牌,最后三张留作底牌。
2.4.2 案例分析
牌可以设计为一个ArrayList<String>
,每个字符串为一张牌。
每张牌由花色数字两部分组成,我们可以使用花色集合与数字集合嵌套迭代完成每张牌的组装。
牌由Collections类的shuffle方法进行随机排序。
将每个人以及底牌设计为ArrayList<String>
,将最后3张牌直接存放于底牌,剩余牌通过对3取模依次发牌。
直接打印每个集合。
2.4.3 代码实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
| import java.util.ArrayList; import java.util.Collections;
public class Poker { public static void main(String[] args) {
ArrayList<String> pokerBox = new ArrayList<String>(); ArrayList<String> colors = new ArrayList<String>();
ArrayList<String> numbers = new ArrayList<String>();
colors.add("♥"); colors.add("♦"); colors.add("♠"); colors.add("♣");
for(int i = 2;i<=10;i++){ numbers.add(i+""); } numbers.add("J"); numbers.add("Q"); numbers.add("K"); numbers.add("A"); for (String color : colors) { for(String number : numbers){ String card = color+number; pokerBox.add(card); } } pokerBox.add("小☺"); pokerBox.add("大☠");
Collections.shuffle(pokerBox); ArrayList<String> player1 = new ArrayList<String>(); ArrayList<String> player2 = new ArrayList<String>(); ArrayList<String> player3 = new ArrayList<String>(); ArrayList<String> dipai = new ArrayList<String>();
for(int i = 0;i<pokerBox.size();i++){ String card = pokerBox.get(i); if(i>=51){ dipai.add(card); } else { if(i%3==0){ player1.add(card); }else if(i%3==1){ player2.add(card); }else{ player3.add(card); } } } System.out.println("令狐冲:"+player1); System.out.println("田伯光:"+player2); System.out.println("绿竹翁:"+player3); System.out.println("底牌:"+dipai); } }
|
本文标题:第三部分 第二章 4.集合的综合案例
文章作者:foreverSFJ
发布时间:2019-08-20 15:11:52
最后更新:2019-08-20 15:11:52
原始链接:Notes/Java/Basic/Part03/02_4 集合的综合案例.html
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-ND 4.0 许可协议。转载请注明出处!