集合实现斗地主综合案例

斗地主综合案例

  • 准备54张扑克,存储到一个集合中去

    特殊牌:大王小王

    其他52张牌:定义一个数组/集合,存储四种花色

    ​ 定义一个数组/集合,存储13个序号

    循环嵌套遍历两个数组/集合组装52张牌

  • 洗牌

    使用工具类Collection的方法:

    static void shuffle(List<?> list)使用制定的随机源对固定列表进行置换

    会随机打乱集合元素中的数据

  • 发牌

    要求一人17张牌,剩余三张作为底牌,一人一张轮流发牌,集合的索引(0~53)%3

    定义四个集合,存储三个玩家的牌和底牌

    索引%2有两个值(0,1)

    索引%3有三个值(0,1,2)

    索引>=51,该给底牌发牌

  • 看牌

    直接遍历结合,遍历存储玩家和底牌的集合

实现

package demo.demo10;

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

public class DouDiZhu {
    public static void main(String[] args) {
        //定义一个数组,用来存储54张牌
        ArrayList<String> pocks = new ArrayList<String>();
        //定义两个数组,一个用来存储花色,一个用来存储牌的序号
        String[] color ={"红桃","黑桃","梅花","方块"};
        String[] numbers = {"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
        //先把大王小王存储到扑克中去
        pocks.add("大王");
        pocks.add("小王");
        //循环遍历两个数组,组装52张牌
        for (String number : numbers) {
            for (String s : color) {
                pocks.add(s+number);
            }
        }
//        System.out.println(pocks);
        //洗牌
        Collections.shuffle(pocks);
//        System.out.println(pocks);
        //发牌
        ArrayList<String> player01 = new ArrayList<String>();
        ArrayList<String> player02 = new ArrayList<String>();
        ArrayList<String> player03 = new ArrayList<String>();
        ArrayList<String> diPai = new ArrayList<String>();
        /*
        遍历pocks集合,获取每一张牌
        使用pocks集合的索引%3,给每个玩家轮流发牌
        剩余三张牌给底牌
        注意:
            先判断底牌(i>=51),否则底牌发没了
         */
        for (int i = 0; i < pocks.size(); i++) {
            String p = pocks.get(i);
            if(i>=51){
                diPai.add(pocks.get(i));
            }else if(i % 3==0){
                player01.add(pocks.get(i));
            }else if(i % 3==1){
                player02.add(pocks.get(i));
            }else {
                player03.add(pocks.get(i));
            }
        }
        //看牌
        System.out.println("play01:"+player01);
        System.out.println("play02:"+player02);
        System.out.println("play03:"+player03);
        System.out.println("diPai:"+diPai);
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

heromps

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

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

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

打赏作者

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

抵扣说明:

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

余额充值