线上实训Day01

前言

以前来CSDN都只是为了完成作业来抄抄大佬的代码或者为了解决某些问题而百度进CSDN,该来的总会来,学代码的感觉逃不掉CSDN还有GITHUB了,这两个上面都是前辈的经验。这次终于要自己下水来贡献自己了。
第一次写,有点乱,见谅。

题目

需求:实现斗地主随机发牌后按照牌的大小实现自动排列牌序
老师上课带着我们写了斗地主的随机发牌,打斗地主嘛,发好牌后肯定要把牌按照顺序排列好才能更方便的打牌,这时候就需要我们的自动排列牌序了。

前置实现

扑克牌的生成

我们通过将 字符串List:numbers(A,2,3,4,5,6,7,8,9,10,J,Q,K)字符串List:color(♥,♣,♦,♠)
相加产生 字符串List:pokes并且再在poles里add大王和小王实现牌的生成。】
代码如下

List<String>pokes=new ArrayList<>();

        List<String>colors=new ArrayList<>();
        List<String>numbers=new ArrayList<>();

        colors.add("♥");
        colors.add("♣");
        colors.add("♦");
        colors.add("♠");
        numbers.add("A");
        for (int i=2;i<=10;i++){
            numbers.add(i+"");
        }
        numbers.add("J");
        numbers.add("Q");
        numbers.add("K");
		for (String c:numbers){
		            for (String n:colors){
		                String pai=n+c;
		                pokes.add(pai);
		            }
		        }
        pokes.add("大王");
        pokes.add("小王");

下图是按以上方法输出的已经生成的扑克牌
扑克的生成

洗牌

然后通过 Collections.shuffle()方法来打乱顺序洗牌
代码如下

        Collections.shuffle(pokes);
        System.out.println(pokes);

下图是按以上方法输出的已经洗过的扑克牌
洗牌后的牌

分发扑克

牌有了 那我们就要把牌分发给大家,用3个字符串List:来代替人,然后还要留三张牌作为地主的底牌。
所以我们就通过for循环和if来分发扑克
代码如下

      	ArrayList<String> xiaomianbao=new ArrayList<>();
        ArrayList<String> jingtongxue=new ArrayList<>();
        ArrayList<String> hualili=new ArrayList<>();
        ArrayList<String> dipai=new ArrayList<>();
        for(int i=0;i<pokes.size();i++){
            String pai=pokes.get(i);
            if(i>=51){
                dipai.add(pai);
            }else {
                if(i%3==0){
                    xiaomianbao.add(pai);

                }else if (i%3==1){
                    jingtongxue.add(pai);
                }else {
                    hualili.add(pai);
                }
            }
        }

下图是按以上方法输出的各个人的牌和底牌
(无敌的小面包拥有着王炸!)
发牌后的牌

正题的实现

由于斗地主的大小是从3最小开始然后到J,Q,K,A,2,小王,大王,按照TX的欢乐斗地主来说,牌的排列顺序是从左开始由大到小排列。
方法1:将牌转换为可以排序的数字
参考我的小宇宙同学
宇宙同学的csdn
方法2:写一个扑克的类,牌的属性由花色和数字组成,然后重写排序以数字排序,从而实现扑克的自动排序。
参考ysy同学

ysy同学的csdn

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值