美文网首页
Java基础---斗地主发牌案例

Java基础---斗地主发牌案例

作者: 王二麻子88 | 来源:发表于2020-11-23 00:09 被阅读0次

    Java基础--斗地主发牌案例

    package io.github.wangermaizi.day05;
    /*
    * 斗地主代码实现
    *   1. 准备牌
    *   2. 洗牌
    *   3. 发牌
    *   4. 看牌
    * */
    
    import io.github.wangermaizi.day03.Par;
    
    import java.lang.reflect.Array;
    import java.util.ArrayList;
    import java.util.Collection;
    import java.util.Collections;
    import java.util.List;
    
    public class Doudizhu {
        public static void main(String[] args) {
            // 1. 准备牌
            // 定义一个List用于存储的54张牌的集合, 类型是 String
            ArrayList<String> poker = new ArrayList<>();
    
            // 定义两个数组, 一个用于存储牌的花色, 一个用于存储牌的序号, 都是String类型
            String[] colors = {"黑", "红", "梅", "方"};
            String[] numbers = {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"};
    
            // 先把大王和小王存储到 扑克中
            poker.add("大王");
            poker.add("小王");
    
            // 渲染嵌套两个数组, 组装成 剩下的52张牌
            for (String number: numbers) {
                for (String color: colors) {
                    String tempCard = number + color;
                    // 将每张牌存到 扑克中
                    poker.add(tempCard);
                }
            }
            // 2. 洗牌 ==> Collections.shuffle直接改变原数组的内容
            Collections.shuffle(poker);
    
            // 3. 发牌
            /*
            * 定义四个集合, 用于存储三个玩家的牌和一套底牌
            *
            * */
    
            // 4.
    
            ArrayList<String> play1 = new ArrayList<>();
            List<String> play2 = new ArrayList<>();
            List<String> play3 = new ArrayList<>();
            List<String> dipai = new ArrayList<>();
    
            /*
            * 变量改变排序的  54张排序
            * */
    
            System.out.println(poker.size());
            // return;
            for (int i = 0; i < poker.size(); i++) {
                int rest = i % 3;
                // 先留三张做底牌
                if (i >= 51) {
                    dipai.add(poker.get(i));
                } else {
                    switch (rest) {
                        case 1:
                            // 给第一个玩家牌, 后续以此类推
                            play1.add(poker.get(i));
                            break;
                        case 2:
                            play2.add(poker.get(i));
                            break;
                        case 0:
                            play3.add(poker.get(i));
                            break;
                        default:
                            throw new Error("程序出现不可预期的错误");
                    }
                }
            }
    
            // 看牌
            System.out.println("play1: "+ play1);
            System.out.println("play2: "+ play2);
            System.out.println("play3: "+ play3);
            System.out.println("dipai: "+dipai);
        }
    }
    
    

    **小结: **

    当前只能完成做牌洗牌和发牌, 做好点话的话, 用过是将每张牌的信息存放到一个 map集合里面, 这样谁有叫地主的权利就可以被标记出来, 而在发牌的过程, 页面慢慢向选手手中追加牌的过程, 想简单粗暴点的话完全可以使用数组截取, 在洗牌结束之后, 直接分给玩家 17张牌并流3张底牌

    相关文章

      网友评论

          本文标题:Java基础---斗地主发牌案例

          本文链接:https://www.haomeiwen.com/subject/gotmiktx.html