Java程序开发斗地主发牌

实现发牌前我们需先将牌 的顺序打乱,这个打乱的过程可以使用Java的内置函数,在java.util.Collections包中的shuffle方法,对牌的列表进行打乱顺序,然后通过循环遍历将牌分发三个玩家,最后留出三张底牌

第一步:定义容器,做好准备工作:

arr1 为牌的花色的数组,arr2为牌的数值大小

 // 准备牌操作
        ArrayList<String> card = new ArrayList<>();
        ArrayList<String> color1 = new ArrayList<>();
        String []arr1 = { "♠","♥","♣","♦"};
        for(String s2 :arr1){
            color1.add(s2);
        }
        ArrayList<String> number = new ArrayList<>();
        String []arr2 = {"2","3","4","5","6","7","8","9","10","J","Q","K","A"};
        for (String  s1 : arr2) {
            number.add(s1);
        }

第二步:组装牌。通过嵌套循环,然后使用字符串拼接将花色color和牌的数值number组装在一起。最后加入大王小王

//组装牌;
        for (String string : number) {
            for (String str : color1) {
                card.add(string+str);
            }
        }

        card.add("大王");
        card.add("小王");

第三步:洗牌

Collections.shuffle(card);

第四步:发牌,定义四个容器:玩家1,玩家2,玩家3,底牌。通过循环,按照顺序来进行发牌,最后留三张作为底牌。

        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<54;i++){
            if(i<51){
                player1.add(card.get(i));
                i++;
                player2.add(card.get(i));
                i++;
                player3.add(card.get(i));
            }else{
                dipai.add(card.get(i));
            }
        }

运行结果如下所示:

 

源代码



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

public class Poker{
    public Poker(){}
    public static void main(String[] args) {
        // 准备牌操作
        ArrayList<String> card = new ArrayList<>();
        ArrayList<String> color1 = new ArrayList<>();
        String []arr1 = { "♠","♥","♣","♦"};
        for(String s2 :arr1){
            color1.add(s2);
        }
        ArrayList<String> number = new ArrayList<>();
        String []arr2 = {"2","3","4","5","6","7","8","9","10","J","Q","K","A"};
        for (String  s1 : arr2) {
            number.add(s1);
        }
        //组装牌;
        for (String string : number) {
            for (String str : color1) {
                card.add(string+str);
            }
        }

        card.add("大王");
        card.add("小王");
        // 洗牌
        Collections.shuffle(card);
        // 发牌
        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<54;i++){
            if(i<51){
                player1.add(card.get(i));
                i++;
                player2.add(card.get(i));
                i++;
                player3.add(card.get(i));
            }else{
                dipai.add(card.get(i));
            }
        }
        //看牌
        System.out.println("玩家1:"+player1);
        System.out.println("玩家2:"+player2);
        System.out.println("玩家3:"+player3);
        System.out.println("底牌:"+dipai);

    }
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值