斗地主代码,大佬给点指导意见

这是一个简单的Java程序,用于模拟斗地主游戏的发牌过程。程序首先创建四种花色和数字2-10、J、Q、K、A的扑克牌,然后通过嵌套循环将它们组合成牌组,接着使用Collections.shuffle打乱顺序,最后按规则将牌分配给三个玩家和底牌。程序还包含一个简单的判断,确定哪个玩家拿到红桃3即为地主。

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

package diba;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class DouDiZhu {
    public static void main(String[] args) {
        //先造出四个花色
        List<String> colors = new ArrayList<>();
        colors.add("♥");
        colors.add("♠");
        colors.add("♣");
        colors.add("♦");

        //造出10个 2-10
        List<String> numbers = new ArrayList<>();
        for (int i = 2; i <=10 ; i++) {
            numbers.add(i+"");
        }
        numbers.add("J");
        numbers.add("Q");
        numbers.add("K");
        numbers.add("A");

        //上面的colors 和 number 进行一个整合
        //放入一个新的集合中 做到嵌套循环
        //创建新的集合
        //Set<String> piker = new HashSet<>();
        List<String> piker = new ArrayList<>();
        for (String color : colors) {
            for (String number : numbers) {
                piker.add(color+number);

            }
        }
        piker.add("BigKing");
        piker.add("LittleKing");
        System.out.println("piker = " + piker);
        System.out.println("piker = " + piker.size());
        //如果使用set集合也无法分开排序 用 Collections.suffle(piker)
        //只能打乱list 因为set时无序的
        //打乱list排序
        Collections.shuffle(piker);
        System.out.println("piker = " + piker);
        //给player1 player2 player3 发牌
        List<String> player1 = new ArrayList<>();//玩家1
        List<String> player2 = new ArrayList<>();//玩家2
        List<String> player3 = new ArrayList<>();//玩家3
        //底牌
        List<String> diPai = new ArrayList<>();
        for (int i = 0; i <piker.size(); i++) {
            //每张扑克牌
            String pName = piker.get(i);
            if (diPai.contains("♥3") == false) {
                //怎么发牌
                if (i >= 51) {
                    //埋后三张底牌
                    diPai.add(pName);
                }else{
                    //给玩家1 2 3发剩余的51张牌
                    if(i%3==0){
                        player1.add(pName);
                    }else if(i%3==1){
                        player2.add(pName);
                    } else{
                        player3.add(pName);
                    }

                }}else {
                System.out.println("底牌不能有♥3,请重新运行");
                break;
            }
        }
        System.out.println("diPai = " + diPai);
        System.out.println("player1 = " + player1);
        System.out.println("player1 = " + player1.size());
        System.out.println("player2 = " + player2);
        System.out.println("player2 = " + player2.size());
        System.out.println("player3 = " + player3);
        System.out.println("player3 = " + player3.size());



        //list 的快速排序(不是人工指定的排序,下节讲人工排序)
        //Collections.sort(piker);
        //规定个地主,  规定 谁摸到红桃3 谁是地主,  注意:  底牌里面不能包含红桃3 .

        if(player1.contains("♥3")==true){
            System.out.println("player1是地主");
            player1.addAll(diPai);
            System.out.println("player1 = " + player1);
        }else if(player2.contains("♥3")==true){
            System.out.println("player2是地主");
            player2.addAll(diPai);
            System.out.println("player2 = " + player2);
        }else if(player3.contains("♥3")==true){
            System.out.println("player3是地主");
            player3.addAll(diPai);
            System.out.println("player3 = " + player3);
        }

    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值