Collection集合——斗地主洗牌、发牌

本文介绍了如何使用Java实现斗地主游戏的洗牌和发牌功能。首先创建了包含所有牌的集合,然后利用Collections的shuffle方法进行洗牌。接着,创建四个集合用于存放玩家和底牌,通过循环按特定规则发牌,当发到第51张时,剩余的三张作为底牌。

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

创建牌面集合,花色集合,数字集合
通过循环将花色集合与数字集合拼接,再将拼接好的字符串放入牌面集合
再利用Collections 的api方法 Collections.shuffle(pokerbox); 进行洗牌
在创建四个集合 用来储存 发的 玩家的牌和底牌
利用 循环对三整除求余 分别将牌分发 当发到第 51 张牌的时候 留三张当做底牌

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

public class Poker {
    public static void main(String[] args) {
        /*
        * 1 . 准备牌
        *
        * */
//        创建牌盒 用来储存牌面
        ArrayList<String> pokerbox = new ArrayList<>();

//        创建花色集合
        ArrayList<String> colors = new ArrayList<>();

//        创建数字集合
        ArrayList<String> numbers = new ArrayList<>();

//        分别给花色 以及 数字集合添加元素
        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) {
            //color 每一个花色
            //遍历数字集合
            for (String number : numbers) {
                // 结合
                String card = color+number;
                // 储存到牌盒中
                pokerbox.add(card);
            }
        }
         // 大王小王
        pokerbox.add("小☺");
        pokerbox.add("小☠");
        // System.out.println(pokerBox);
        // 洗牌 是不是就是将 牌盒中 牌的索引打乱
        // Collection 类 工具类 都是静态方法
        // shuffer 方法
        /*
        *
        * Static void shuffle(list<?> list)
        * 使用默认随机源对指定列表进行置换
        *
        * */
        //  洗 牌
        Collections.shuffle(pokerbox);
        //  发 牌
        //  创建 三个 玩家集合 创建一个底牌集合
        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 < pokerbox.size(); i++) {
            // 获取 牌面
            String card = pokerbox.get(i);
            // 留出三张底牌  存到  底牌集合中
            if(i>=51){
                //存牌到底牌集合中
                dipai.add(card);
            }else{

                if (i%3==0){//玩家 1 %3==0;

                    player1.add(card);

                }else if(i%3==1) {// 玩家2  %3==1

                    player2.add(card);
                } else {// 玩家3

                    player3.add(card);
                }
            }
        }
        // 发牌
        System.out.println("性感荷官:发牌咯");
        System.out.println("p1"+player1);
        System.out.println("p2"+player2);
        System.out.println("p3"+player3);
        System.out.println("底牌"+dipai);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

狂神我的神

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值