模拟斗地主,按顺序初始化54张扑克牌,然后进行洗牌,随机抽取三张底牌,剩下的按照顺序进行发牌,打印出三个人的牌和底牌(ArrayList)

本程序实现了简单的斗地主发牌过程。程序首先创建一副扑克牌,包括大小王,并将其随机排列。随后,从洗好的牌中抽取三张作为底牌,并将剩余的牌随机分配给三位玩家。最后确定哪位玩家成为地主。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package PuKe;

import java.util.*;

/**
 * @ClassName DouDiZhu
 * @Author GY
 * @Date 2022/10/9 15:48
 */
public class DouDiZhu {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList();
        list.add("♠️");
        list.add("♥️");
        list.add("♣️");
        list.add("♦️");

        ArrayList list2 = new ArrayList();
        list2.add("A");
        for (int i = 2; i < 11; i++) {
            list2.add(i);
        }
        list2.add("J");
        list2.add("Q");
        list2.add("K");

        ArrayList list3 = new ArrayList();
        for (int i = 0; i < list.size(); i++) {
            for (int j = 0; j < list2.size(); j++) {
                list3.add(list.get(i)+list2.get(j));
            }
        }
        list3.add("🎴");
        list3.add("🃏");
        System.out.println("初始牌:"+list3);
        Collections.shuffle(list3);
        System.out.println("打乱后的牌:"+list3);


        ArrayList list4 = new ArrayList();
        Random random = new Random();
        int length = list3.size();
        for(int i = 0; i < 3; i++) {

            int a = random.nextInt(length);
            list4.add(list3.get(a));
            list3.remove(a);
            length--;
        }
        System.out.println("底牌"+list4);

        LinkedHashSet set = new LinkedHashSet();
        for(Object o : list3) {
            set.add(o);
        }
        System.out.println("抽取底牌后的牌:"+set);

        int a = random.nextInt(50)+1;
        System.out.println("抽到第"+a+"张牌的人是地主");


        ArrayList list5 = new ArrayList();
        ArrayList list6 = new ArrayList();
        ArrayList list7 = new ArrayList();

        Iterator id = set.iterator();
        for(int i = 0; i < set.size(); i++) {
            if((i+1)%3==1){
                list5.add(id.next());
            }else if((i+1)%3==2){
                list6.add(id.next());
            }else{
                list7.add(id.next());
            }
        }

        System.out.println("aa的牌:"+list5);
        System.out.println("bb的牌:"+list6);
        System.out.println("cc的牌:"+list7);
        if(a%3==1){
            System.out.println("aa是地主");
        } else if (a % 3 == 2) {
            System.out.println("bb是地主");
        }else {
            System.out.println("cc是地主");
        }
        System.out.println("底牌:"+list4);

    }
}

结果图:

 

 

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值