Java基础:集合案例 “斗地主“

斗地主集合综合案例

  • 介绍:按照斗地主的规则,完成洗牌发牌的动作
  • 具体规则:使用54张牌打乱顺序,三个玩家参与游戏,三人交替摸牌,每人17张,最后三张做底牌。

案例分析:
1.准备牌

  • 牌可以设计成一个ArrayList,每个字符串为一张牌。
  • 每张牌由花色数字两部分组成,我们可以使用花色集合和数字集合迭代完成一张牌的组装
  • 牌由Collection类的shuffle方法进行随机排序
    2.发牌
  • 将每个人以及底牌设计为ArrayList,将最后3张牌存放于底牌,剩余牌对3取模依次发牌
    3.看牌
  • 直接打印每个集合
public class Demo01 {
    public static void main(String[] args) {
        /*1.准备牌
         * 2.发牌
         * 3.看牌*/
        //定义一个集合储存所有牌
        ArrayList<String> poker = new ArrayList<>();
        //再定义两个数组储存花色,再嵌套遍历,导入poker集合
        String[] colors = {"♡", "♤", "♢", "♣"};
        String[] nums = {"A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"};
        for (String color : colors) {
            for (String num : nums) {
                poker.add(color + num);
            }
        }
        poker.add("大王");
        poker.add("小王");
//        System.out.println(poker);
        //发牌使用Collections中的方法打乱,再%3对四个集合进行发牌
        // static void shuffle(List<?> list) 使用默认随机源对指定列表进行置换。
        Collections.shuffle(poker);
//        System.out.println(poker);
        //定义四个集合,三个玩家,一个存放底牌
        ArrayList<String> player1 = new ArrayList<>();
        ArrayList<String> player2 = new ArrayList<>();
        ArrayList<String> player3 = new ArrayList<>();
        ArrayList<String> DiPai = new ArrayList<>();
        for (int i = 0; i < poker.size(); i++) {
            String s = poker.get(i);
            if (i >= 51){
                DiPai.add(s);
            }else if (i%3==0){
                player1.add(s);
            }else if (i%3==1){
                player2.add(s);
            }else if (i%3==2){
                player3.add(s);
            }
        }
        System.out.println("小王:"+player1);
        System.out.println("小红:"+player2);
        System.out.println("小华:"+player3);
        System.out.println("底牌:"+DiPai);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值