Java学习——斗地主

本文详细介绍了如何使用Java实现斗地主游戏的逻辑,包括需求分析、设计思路和具体实现步骤。从创建54张牌的牌库,到洗牌、发牌以及打印输出玩家手牌和底牌的过程,通过示例代码展示了每个环节的关键点,如使用ArrayList存储牌,利用%3实现玩家顺序摸牌等。
摘要由CSDN通过智能技术生成

需求

三个人斗地主,54张牌(包括大王、小王)。每人按顺序摸牌,最后剩3张底牌,请打印输出三个玩家的手牌以及所剩的底牌。

设计

逻辑很清晰,首先是准备好54张牌,对于牌来讲除过特殊牌大王、小王,剩下的可以用四种花色和13张数字不一样的牌进行组合,可通过一个非固定长度的集合来存储牌,分别存入普通牌和特殊牌;

其次是洗牌,这点很重要,根据常识每次玩牌前都会有洗牌的动作,对应到程序逻辑中就是将集合中的元素随机重排列;

第三点是发牌,由于三名玩家都是按顺序进行摸牌,这里可以用到集合索引%3的运算实现三人顺序摸牌(0%3=0 1%3=1 2%3=2 3%3=0,三个数一循环),将集合中相应的值存储到玩家集合中,另外就是会在51张牌的时候停止摸牌,留三张底牌,在程序逻辑中就是当集合索引大于等于51时,将剩下的元素存储底牌集合中(51-53索引);

最后是打印输出,分别打印玩家集合和底牌集合即可。

实现

1. 准备牌,此处使用String类型的ArrayList实现,并准备两个String类型的数组分别存储四种花色和13种数字,并对这两个数组进行双重循环遍历,组合花色+数字并存储到ArrayList中表示一张牌,遍历完后在ArrayList中加入大王和小王即可实现54张牌。

private static ArrayList<String> perpareCard() {
        //1. 准备牌 54张(大王 小王 4种花色 每种花色13张)
        //1.1 用String类型的ArrayList集合存储54张牌
        ArrayList<String> poker = new ArrayList<>();
        //1.2 用String类型数组存储四种花色(数组定义使用省略的静态初始化方法,推荐使用)
        String[] colors = {"♠","♣","♥","♦"};
        //1.3 用String类型数组存储13张牌(数组定义使用静态初始化方法)
        String[] numbers = new String[]{"2","A","K","Q","J","10","9","8","7","6","5","4","3"};
        //1.4.1 双重循环遍历colors数组和numbers数组,得到52张牌并存入poker集合中
        for(int i = 0; i < colors.length; i++){
            for(int j = 0; j < numbers.length; j++){
                //通过将两种String拼接在一起构成有花色有数字的一张牌
                poker.add(colors[i]+numbers[j]);
            }
        }
        //1.4.2 将大小王加入到poker中完成54张牌的准备工作
        poker.add("大王");
        poker.add("小王");
        return 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值