java金铲铲抽卡模拟器

最近迷上了金铲铲,无心上班,满脑子都是抽卡,阵容,,走路都是dddddd,为了过我的d瘾,自己写了一个抽卡模拟器,功能非常简单,只能d,仅供娱乐。

1.

首先随便创建一个springboot项目,甚至javaee也行,pom文件的话只导入lombok和hutool就行了

<dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>

        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>4.6.6</version>
        </dependency>

2.

然后创建几个实体类,主要是棋子,卡池,阵容等

棋子

@Data
public class Qizi {

    //费用
    private int cost;

    //名字
    private String name;

    private int index;


    private String[] zhongzu;

    private String[] zhiye;


    public Qizi(int cost,String name,int index,String[] zhongzu,String[] zhiye){
        this.cost=cost;
        this.name=name;
        this.index=index;
        this.zhongzu=zhongzu;
        this.zhiye=zhiye;
    }

}

卡池

public class Kachi {


    public static List<Qizi> kachi1 = new ArrayList<>();
    public static List<Qizi> kachi2 = new ArrayList<>();
    public static List<Qizi> kachi3 = new ArrayList<>();
    public static List<Qizi> kachi4 = new ArrayList<>();
    public static List<Qizi> kachi5 = new ArrayList<>();

    //1费卡数量
    private static final int num1=29;

    //2费卡数量
    private static final int num2=22;

    //3费卡数量
    private static final int num3=18;

    //4费卡数量
    private static final int num4=12;

    //5费卡数量
    private static final int num5=10;


    //初始化卡池
    public static void initKachi() {


        Qizi qizi;
        /**
         * =========  一费卡  =========
         */
        //刀妹
        for (int i = 0; i < num1; i++) {
            qizi = new Qizi(1, "刀妹", i, new String[]{"艾欧尼亚"}, new String[]{"挑战者"});
            kachi1.add(qizi);
        }
        //大虫子
        for (int i = 0; i < num1; i++) {
            qizi = new Qizi(1, "大虫子", i, new String[]{"虚空"}, new String[]{"斗士"});
            kachi1.add(qizi);
        }
        //蚂蚱
        for (int i = 0; i < num1; i++) {
            qizi = new Qizi(1, "蚂蚱", i, new String[]{"虚空"}, new String[]{"法师"});
            kachi1.add(qizi);
        }
        //莎米拉
        for (int i = 0; i < num1; i++) {
            qizi = new Qizi(1, "莎米拉", i, new String[]{"诺克萨斯"}, new String[]{"挑战者"});
            kachi1.add(qizi);
        }
        //天使
        for (int i = 0; i < num1; i++) {
            qizi = new Qizi(1, "天使", i, new String[]{"德玛西亚"}, new String[]{"裁决战士"});
            kachi1.add(qizi);
        }
        //波比
        for (int i = 0; i < num1; i++) {
            qizi = new Qizi(1, "锤形态小炮", i, new String[]{"德玛西亚", "约德尔人"}, new String[]{"堡垒卫士"});
            kachi1.add(qizi);
        }
        //鳄鱼
        for (int i = 0; i < num1; i++) {
            qizi = new Qizi(1, "鳄鱼", i, new String[]{"恕瑞玛"}, new String[]{"格斗家"});
            kachi1.add(qizi);
        }
        //发条
        for (int i = 0; i < num1; i++) {
            qizi = new Qizi(1, "发条", i, new String[]{"皮尔特沃夫"}, new String[]{"法师"});
            kachi1.add(qizi);
        }
        //小炮
        for (int i = 0; i < num1; i++) {
            qizi = new Qizi(1, "炮形态波比", i, new String[]{"约德尔人"}, new String[]{"枪手"});
            kachi1.add(qizi);
        }
        //蛇女
        for (int i = 0; i < num1; i++) {
            qizi = new Qizi(1, "蛇女", i, new String[]{"恕瑞玛", "诺克萨斯"}, new String[]{"神谕者"});
            kachi1.add(qizi);
        }
        //佛爷
        for (int i = 0; i < num1; i++) {
            qizi = new Qizi(1, "佛爷", i, new String[]{"暗影岛"}, new String[]{"潜行者"});
            kachi1.add(qizi);
        }
        //烬
        for (int i = 0; i < num1; i++) {
            qizi = new Qizi(1, "烬", i, new String[]{"艾欧尼亚"}, new String[]{"亡眼射手"});
            kachi1.add(qizi);
        }
        //大树
        for (int i = 0; i < num1; i++) {
            qizi = new Qizi(1, "大树", i, new String[]{"暗影岛"}, new String[]{"堡垒卫士"});
            kachi1.add(qizi);
        }

        /**
         * =========  二费卡  =========
         */
        //艾希
        for (int i = 0; i < num2; i++) {
            qizi = new Qizi(2, "寒冰", i, new String[]{"弗雷尔卓德"}, new String[]{"亡眼射手"});
            kachi2.add(qizi);
        }
        //劫
        for (int i = 0; i < num2; i++) {
            qizi = new Qizi(2, "劫", i, new String[]{"艾欧尼亚"}, new String[]{"裁决战士", "潜行者"});
            kachi2.add(qizi);
        }
        //加里奥
        for (int i = 0; i < num2; i++) {
            qizi = new Qizi(1, "加里奥", i, new String[]{"德玛西亚"}, new String[]{"神谕者"});
            kachi2.add(qizi);
        }
        //腕豪
        for (int i = 0; i < num2; i++) {
            qizi = new Qizi(2, "腕豪", i, new String[]{"艾欧尼亚"}, new String[]{"主宰"});
            kachi2.add(qizi);
        }
        //星妈
        for (int i = 0; i < num2; i++) {
            qizi = new Qizi(2, "星妈", i, new String[]{"巨神峰"}, new String[]{"神谕者"});
            kachi2.add(qizi);
        }
        //金克斯
        for (int i = 0; i < num2; i++) {
            qizi = new Qizi(2, "金克斯", i, new String[]{"祖安"}, new String[]{"枪手"});
            kachi2.add(qizi);
        }
        //卡萨丁
        for (int i = 0; i < num2; i++) {
            qizi = new Qizi(2, "卡萨丁", i, new String[]{"虚空"}, new String[]{"堡垒卫士"});
            kachi2.add(qizi);
        }
        //克烈
        for (int i = 0; i < num2; i++) {
            qizi = new Qizi(2, "克烈", i, new String[]{"诺克萨斯", "约德尔人"}, new String[]{"裁决战士"});
            kachi2.add(qizi);
        }
        //乌鸦
        for (int i = 0; i < num2; i++) {
            qizi = new Qizi(2, "乌鸦", i, new String[]{"诺克萨斯"}, new String[]{"司令", "法师"});
            kachi2.add(qizi);
        }
        //岩雀
        for (int i = 0; i < num2; i++) {
            qizi = new Qizi(2, "岩雀", i, new String[]{"恕瑞玛"}, new String[]{"术士"});
            kachi2.add(qizi);
        }
        //提莫
        for (int i = 0; i < num2; i++) {
            qizi = new Qizi(2, "提莫", i, new String[]{"约德尔人"}, new String[]{"术士", "司令"});
            kachi2.add(qizi);
        }

        //薇
        for (int i = 0; i < num2; i++) {
            qizi = new Qizi(2, "薇", i, new String[]{"皮尔特沃夫"}, new String[]{"格斗家"});
            kachi2.add(qizi);
        }
        //狼人
        for (int i = 0; i < num2; i++) {
            qizi = new Qizi(2, "狼人", i, new String[]{"祖安"}, new String[]{"主宰", "挑战者"});
            kachi2.add(qizi);
        }

        /**
         * =========  三费卡  =========
         */
        //阿克尚
        for (int i = 0; i < num3; i++) {
            qizi = new Qizi(3, "阿克尚", i, new String[]{"恕瑞玛"}, new String[]{"亡眼射手"});
            kachi3.add(qizi);
        }
        //艾克
        for (int i = 0; i < num3; i++) {
            qizi = new Qizi(3, "艾克", i, new String[]{"祖安", "皮尔特沃夫"}, new String[]{"潜行者"});
            kachi3.add(qizi);
        }
        //冰女
        for (int i = 0; i < num3; i++) {
            qizi = new Qizi(3, "冰女", i, new String[]{"弗雷尔卓德"}, new String[]{"神谕者"});
            kachi3.add(qizi);
        }
        //卡尔玛
        for (int i = 0; i < num3; i++) {
            qizi = new Qizi(3, "卡尔玛", i, new String[]{"艾欧尼亚"}, new String[]{"神谕者"});
            kachi3.add(qizi);
        }
        //盖伦
        for (int i = 0; i < num3; i++) {
            qizi = new Qizi(3, "盖伦", i, new String[]{"德玛西亚"}, new String[]{"主宰"});
            kachi3.add(qizi);
        }
        //诺手
        for (int i = 0; i < num3; i++) {
            qizi = new Qizi(3, "诺手", i, new String[]{"诺克萨斯"}, new String[]{"主宰"});
            kachi3.add(qizi);
        }
        //杰斯
        for (int i = 0; i < num3; i++) {
            qizi = new Qizi(3, "杰斯", i, new String[]{"皮尔特沃夫"}, new String[]{"枪手"});
            kachi3.add(qizi);
        }
        //卡特
        for (int i = 0; i < num3; i++) {
            qizi = new Qizi(3, "卡特", i, new String[]{"诺克萨斯"}, new String[]{"潜行者"});
            kachi3.add(qizi);
        }
        //滑板鞋
        for (int i = 0; i < num3; i++) {
            qizi = new Qizi(3, "滑板鞋", i, new String[]{"暗影岛"}, new String[]{"挑战者"});
            kachi3.add(qizi);
        }
        //挖掘机
        for (int i = 0; i < num3; i++) {
            qizi = new Qizi(3, "挖掘机", i, new String[]{"虚空"}, new String[]{"格斗家"});
            kachi3.add(qizi);
        }
        //琴女
        for (int i = 0; i < num3; i++) {
            qizi = new Qizi(3, "琴女", i, new String[]{"德玛西亚"}, new String[]{"术士"});
            kachi3.add(qizi);
        }
        //宝石
        for (int i = 0; i < num3; i++) {
            qizi = new Qizi(3, "宝石", i, new String[]{"巨神峰"}, new String[]{"堡垒卫士", "法师"});
            kachi3.add(qizi);
        }
        //大眼
        for (int i = 0; i < num3; i++) {
            qizi = new Qizi(3, "大眼", i, new String[]{"虚空"}, new String[]{"术士", "法师"});
            kachi3.add(qizi);
        }

        /**
         * =========  四费卡  =========
         */
        //黄鸡
        for (int i = 0; i < num4; i++) {
            qizi = new Qizi(4, "黄鸡", i, new String[]{"恕瑞玛"}, new String[]{"司令"});
            kachi4.add(qizi);
        }
        //厄斐琉斯
        for (int i = 0; i < num4; i++) {
            qizi = new Qizi(4, "厄斐琉斯", i, new String[]{"巨神峰"}, new String[]{"亡眼射手"});
            kachi4.add(qizi);
        }
        //卡莎
        for (int i = 0; i < num4; i++) {
            qizi = new Qizi(4, "卡莎", i, new String[]{"虚空"}, new String[]{"挑战者"});
            kachi4.add(qizi);
        }
        //压缩
        for (int i = 0; i < num4; i++) {
            qizi = new Qizi(4, "压缩", i, new String[]{"艾欧尼亚"}, new String[]{"挑战者"});
            kachi4.add(qizi);
        }
        //皇子
        for (int i = 0; i < num4; i++) {
            qizi = new Qizi(4, "皇子", i, new String[]{"德玛西亚"}, new String[]{"司令"});
            kachi4.add(qizi);
        }
        //拉克丝
        for (int i = 0; i < num4; i++) {
            qizi = new Qizi(4, "拉克丝", i, new String[]{"德玛西亚"}, new String[]{"法师"});
            kachi4.add(qizi);
        }
        //螃蟹
        for (int i = 0; i < num4; i++) {
            qizi = new Qizi(4, "螃蟹", i, new String[]{"祖安"}, new String[]{"亡眼射手"});
            kachi4.add(qizi);
        }
        //格纹
        for (int i = 0; i < num4; i++) {
            qizi = new Qizi(4, "格纹", i, new String[]{"暗影岛"}, new String[]{"裁决战士"});
            kachi4.add(qizi);
        }
        //猪妹
        for (int i = 0; i < num4; i++) {
            qizi = new Qizi(4, "猪妹", i, new String[]{"弗雷尔卓德"}, new String[]{"格斗家"});
            kachi4.add(qizi);
        }
        //狗头
        for (int i = 0; i < num4; i++) {
            qizi = new Qizi(4, "狗头", i, new String[]{"恕瑞玛"}, new String[]{"主宰"});
            kachi4.add(qizi);
        }
        //慎
        for (int i = 0; i < num4; i++) {
            qizi = new Qizi(4, "慎", i, new String[]{"艾欧尼亚"}, new String[]{"神谕者", "堡垒卫士"});
            kachi4.add(qizi);
        }
        //泽丽
        for (int i = 0; i < num4; i++) {
            qizi = new Qizi(4, "泽丽", i, new String[]{"祖安"}, new String[]{"枪手"});
            kachi4.add(qizi);
        }


        /**
         * =========  五费卡  =========
         */
        //老黑
        for (int i = 0; i < num5; i++) {
            qizi = new Qizi(5, "老黑", i, new String[]{"恕瑞玛"}, new String[]{"堡垒卫士"});
            kachi5.add(qizi);
        }
        //狐狸
        for (int i = 0; i < num5; i++) {
            qizi = new Qizi(5, "狐狸", i, new String[]{"艾欧尼亚"}, new String[]{"法师"});
            kachi5.add(qizi);
        }
        //大头
        for (int i = 0; i < num5; i++) {
            qizi = new Qizi(5, "大头", i, new String[]{"皮尔特沃夫", "约德尔人"}, new String[]{"大发明家"});
            kachi5.add(qizi);
        }
        //赛娜
        for (int i = 0; i < num5; i++) {
            qizi = new Qizi(5, "赛娜", i, new String[]{"暗影岛"}, new String[]{"枪手", "涤魂圣枪"});
            kachi5.add(qizi);
        }
        //光头
        for (int i = 0; i < num5; i++) {
            qizi = new Qizi(5, "光头", i, new String[]{}, new String[]{"流浪法师", "神谕者"});
            kachi5.add(qizi);
        }
        //魔鬼鱼
        for (int i = 0; i < num5; i++) {
            qizi = new Qizi(5, "魔鬼鱼", i, new String[]{"虚空"}, new String[]{"女皇"});
            kachi5.add(qizi);
        }
        //塞恩
        for (int i = 0; i < num5; i++) {
            qizi = new Qizi(5, "塞恩", i, new String[]{"诺克萨斯"}, new String[]{"格斗家"});
            kachi5.add(qizi);
        }
        //剑魔
        for (int i = 0; i < num5; i++) {
            qizi = new Qizi(5, "剑魔", i, new String[]{}, new String[]{"暗裔", "裁决战士", "主宰"});
            kachi5.add(qizi);
        }




    }
}

阵容

@Data
public class Zhenrong {

    //羁绊  暂时没用到
    private Set<String> jiban = new HashSet<>();

    //金币
    private int coin;

    //备战区,目前所有棋子都进入备战区而且无限制
    private Beizhan beizhan=new Beizhan();
}

备战

@Data
public class Beizhan {

    private List<Qizi> beizhanqu=new ArrayList<>();
}

3.

模拟抽卡开始

首先是开始抽卡的方法,包括初始化卡池,金币等数据,初始化卡池在Kachi实体类中,可以设置不同费用的卡的数量,每张卡都是独一无二的

public static void jinchanchanchoukamoniqi() {
        System.out.println("=====金铲铲抽卡模拟器v0.1=====作者he");
        
        //初始化卡池
        Kachi.initKachi();
        //初始化阵容
        Zhenrong zhenrong = new Zhenrong();
        //初始化金币,后续考虑升级和和战斗的功能,目前先设置999
        zhenrong.setCoin(999);
        //d的次数
        int dCishu = 0;
        //回合数
        int huihe = 1;
        //等级
        int leave = 1;
        Scanner sc = new Scanner(System.in);
        //第一轮发牌

        ddd(leave);

        while (true) {
            System.out.println("请输入1-5表示你要拿的棋子,如果输入0则刷新,输入9升级");
            int shopIndex = sc.nextInt();
            switch (shopIndex) {
                case 1:
                    if (buyQizi(qizi1, zhenrong)) {
                        qizi1 = null;
                    }
                    printShop();
                    break;
                case 2:
                    if (buyQizi(qizi2, zhenrong)) {
                        qizi2 = null;
                    }
                    printShop();
                    break;
                case 3:
                    if (buyQizi(qizi3, zhenrong)) {
                        qizi3 = null;
                    }
                    printShop();
                    break;
                case 4:
                    if (buyQizi(qizi4, zhenrong)) {
                        qizi4 = null;
                    }
                    printShop();
                    break;
                case 5:
                    if (buyQizi(qizi5, zhenrong)) {
                        qizi5 = null;
                    }
                    printShop();
                    break;
                case 0:
                    backKachi();
                    ddd(leave);
                    dCishu++;
                    System.out.println("当前d卡次数为"+dCishu);
                    break;
                case 9:
                    if (leave < 9) {
                        leave++;
                    }
                    System.out.println("当前等级为:" + leave);

            }

        }
    }

然后是ddd方法(就是刷新商店,懂的都懂,这类游戏的精髓就在这里,爽感和血压的控制器!),

我这里采用的是每一个商店刷新的棋子独立计算概率,根据每个等级不同棋子刷新的概率来更新商店,生成完棋子之后就把商店的棋子打印出来

/**
     * D
     */
    public static void ddd(int leave) {
        /**   等级      1费    2费    3费    4费    5费
         *    1         100    0     0      0      0
         *    2         100    0     0      0      0
         *    3         75     25    0      0      0
         *    4         55     30    15     0      0
         *    5         45     33    20     2      0
         *    6         25     40    30     5      0
         *    7         19     30    35     15     1
         *    8         16     20    35     25     4
         *    9         9      15    30     30     16
         */
        int gailv;
        switch (leave) {
            case 1:
            case 2:
                for (int i = 1; i < 6; i++) {
                    gailv = RandomUtil.randomInt(0, 100);
                    updateShop(i, 1);
                }
                break;
            case 3:
                for (int i = 1; i < 6; i++) {
                    gailv = RandomUtil.randomInt(0, 99);
                    if (gailv < 75) {
                        updateShop(i, 1);
                    } else {
                        updateShop(i, 2);
                    }
                }
                break;
            case 4:
                for (int i = 1; i < 6; i++) {
                    gailv = RandomUtil.randomInt(0, 100);
                    if (gailv < 55) {
                        updateShop(i, 1);
                    } else if (gailv < 85) {
                        updateShop(i, 2);
                    } else {
                        updateShop(i, 3);
                    }
                }
                break;
            case 5:
                for (int i = 1; i < 6; i++) {
                    gailv = RandomUtil.randomInt(0, 100);
                    if (gailv < 45) {
                        updateShop(i, 1);
                    } else if (gailv < 78) {
                        updateShop(i, 2);
                    } else if (gailv < 98) {
                        updateShop(i, 3);
                    } else {
                        updateShop(i, 4);
                    }
                }
                break;
            case 6:
                for (int i = 1; i < 6; i++) {
                    gailv = RandomUtil.randomInt(0, 100);
                    if (gailv < 25) {
                        updateShop(i, 1);
                    } else if (gailv < 65) {
                        updateShop(i, 2);
                    } else if (gailv < 95) {
                        updateShop(i, 3);
                    } else {
                        updateShop(i, 4);
                    }
                }
                break;
            case 7:
                for (int i = 1; i < 6; i++) {
                    gailv = RandomUtil.randomInt(0, 100);
                    if (gailv < 19) {
                        updateShop(i, 1);
                    } else if (gailv < 49) {
                        updateShop(i, 2);
                    } else if (gailv < 84) {
                        updateShop(i, 3);
                    } else if (gailv < 99) {
                        updateShop(i, 4);
                    } else {
                        updateShop(i, 5);
                    }
                }
                break;
            case 8:
                for (int i = 1; i < 6; i++) {
                    gailv = RandomUtil.randomInt(0, 100);
                    if (gailv < 16) {
                        updateShop(i, 1);
                    } else if (gailv < 36) {
                        updateShop(i, 2);
                    } else if (gailv < 71) {
                        updateShop(i, 3);
                    } else if (gailv < 96) {
                        updateShop(i, 4);
                    } else {
                        updateShop(i, 5);
                    }
                }
                break;
            case 9:
                for (int i = 1; i < 6; i++) {
                    gailv = RandomUtil.randomInt(0, 100);
                    if (gailv < 9) {
                        updateShop(i, 1);
                    } else if (gailv < 24) {
                        updateShop(i, 2);
                    } else if (gailv < 54) {
                        updateShop(i, 3);
                    } else if (gailv < 84) {
                        updateShop(i, 4);
                    } else {
                        updateShop(i, 5);
                    }
                }
                break;
        }
        printShop();

    }

打印棋子的方法,棋子后面跟的是棋子的价格

/**
     * 打印出商店的棋子
     */
    public static void printShop() {
        StringBuffer str = new StringBuffer();
        if (qizi1 != null) {
            str.append("  棋子1:").append(qizi1.getName()).append("(").append(qizi1.getCost()).append(")");
        } else {
            str.append("  棋子1: 无");
        }
        if (qizi2 != null) {
            str.append("  棋子2:").append(qizi2.getName()).append("(").append(qizi2.getCost()).append(")");;
        } else {
            str.append("  棋子2: 无");
        }
        if (qizi3 != null) {
            str.append("  棋子3:").append(qizi3.getName()).append("(").append(qizi3.getCost()).append(")");;
        } else {
            str.append("  棋子3: 无");
        }
        if (qizi4 != null) {
            str.append("  棋子4:").append(qizi4.getName()).append("(").append(qizi4.getCost()).append(")");;
        } else {
            str.append("  棋子4: 无");
        }
        if (qizi5 != null) {
            str.append("  棋子5:").append(qizi5.getName()).append("(").append(qizi5.getCost()).append(")");;
        } else {
            str.append("  棋子5: 无");
        }
        System.out.println(str.toString());

    }

然后是生成商店的棋子,这里把方法抽象,通过棋子的顺序和卡池价值来刷新

/**
     * 生成商店的棋子
     *
     * @param index 第几个棋子
     * @param kachi 几费卡池
     */
    public static void updateShop(int index, int kachi) {
        switch (index) {
            case 1:
                switch (kachi) {
                    case 1:
                        qizi1 = Kachi.kachi1.get((RandomUtil.randomInt(Kachi.kachi1.size())));
                        Kachi.kachi1.remove(qizi1);
                        break;
                    case 2:
                        qizi1 = Kachi.kachi2.get((RandomUtil.randomInt(Kachi.kachi2.size())));
                        Kachi.kachi2.remove(qizi1);
                        break;
                    case 3:
                        qizi1 = Kachi.kachi3.get((RandomUtil.randomInt(Kachi.kachi3.size())));
                        Kachi.kachi3.remove(qizi1);
                        break;
                    case 4:
                        qizi1 = Kachi.kachi4.get((RandomUtil.randomInt(Kachi.kachi4.size())));
                        Kachi.kachi4.remove(qizi1);
                        break;
                    case 5:
                        qizi1 = Kachi.kachi5.get((RandomUtil.randomInt(Kachi.kachi5.size())));
                        Kachi.kachi5.remove(qizi1);
                        break;
                }
                break;
            case 2:
                switch (kachi) {
                    case 1:
                        qizi2 = Kachi.kachi1.get((RandomUtil.randomInt(Kachi.kachi1.size())));
                        Kachi.kachi1.remove(qizi2);
                        break;
                    case 2:
                        qizi2 = Kachi.kachi2.get((RandomUtil.randomInt(Kachi.kachi2.size())));
                        Kachi.kachi2.remove(qizi2);
                        break;
                    case 3:
                        qizi2 = Kachi.kachi3.get((RandomUtil.randomInt(Kachi.kachi3.size())));
                        Kachi.kachi3.remove(qizi2);
                        break;
                    case 4:
                        qizi2 = Kachi.kachi4.get((RandomUtil.randomInt(Kachi.kachi4.size())));
                        Kachi.kachi4.remove(qizi2);
                        break;
                    case 5:
                        qizi2 = Kachi.kachi5.get((RandomUtil.randomInt(Kachi.kachi5.size())));
                        Kachi.kachi5.remove(qizi2);
                        break;
                }
                break;
            case 3:
                switch (kachi) {
                    case 1:
                        qizi3 = Kachi.kachi1.get((RandomUtil.randomInt(Kachi.kachi1.size())));
                        Kachi.kachi1.remove(qizi3);
                        break;
                    case 2:
                        qizi3 = Kachi.kachi2.get((RandomUtil.randomInt(Kachi.kachi2.size())));
                        Kachi.kachi2.remove(qizi3);
                        break;
                    case 3:
                        qizi3 = Kachi.kachi3.get((RandomUtil.randomInt(Kachi.kachi3.size())));
                        Kachi.kachi3.remove(qizi3);
                        break;
                    case 4:
                        qizi3 = Kachi.kachi4.get((RandomUtil.randomInt(Kachi.kachi4.size())));
                        Kachi.kachi4.remove(qizi3);
                        break;
                    case 5:
                        qizi3 = Kachi.kachi5.get((RandomUtil.randomInt(Kachi.kachi5.size())));
                        Kachi.kachi5.remove(qizi3);
                        break;
                }
                break;
            case 4:
                switch (kachi) {
                    case 1:
                        qizi4 = Kachi.kachi1.get((RandomUtil.randomInt(Kachi.kachi1.size())));
                        Kachi.kachi1.remove(qizi4);
                        break;
                    case 2:
                        qizi4 = Kachi.kachi2.get((RandomUtil.randomInt(Kachi.kachi2.size())));
                        Kachi.kachi2.remove(qizi4);
                        break;
                    case 3:
                        qizi4 = Kachi.kachi3.get((RandomUtil.randomInt(Kachi.kachi3.size())));
                        Kachi.kachi3.remove(qizi4);
                        break;
                    case 4:
                        qizi4 = Kachi.kachi4.get((RandomUtil.randomInt(Kachi.kachi4.size())));
                        Kachi.kachi4.remove(qizi4);
                        break;
                    case 5:
                        qizi4 = Kachi.kachi5.get((RandomUtil.randomInt(Kachi.kachi5.size())));
                        Kachi.kachi5.remove(qizi4);
                        break;
                }
                break;
            case 5:
                switch (kachi) {
                    case 1:
                        qizi5 = Kachi.kachi1.get((RandomUtil.randomInt(Kachi.kachi1.size())));
                        Kachi.kachi1.remove(qizi5);
                        break;
                    case 2:
                        qizi5 = Kachi.kachi2.get((RandomUtil.randomInt(Kachi.kachi2.size())));
                        Kachi.kachi2.remove(qizi5);
                        break;
                    case 3:
                        qizi5 = Kachi.kachi3.get((RandomUtil.randomInt(Kachi.kachi3.size())));
                        Kachi.kachi3.remove(qizi5);
                        break;
                    case 4:
                        qizi5 = Kachi.kachi4.get((RandomUtil.randomInt(Kachi.kachi4.size())));
                        Kachi.kachi4.remove(qizi5);
                        break;
                    case 5:
                        qizi5 = Kachi.kachi5.get((RandomUtil.randomInt(Kachi.kachi5.size())));
                        Kachi.kachi5.remove(qizi5);
                        break;
                }
                break;
        }

    }

然后是购买棋子,购买棋子需要先判断该下标的棋子是否已经被购买,再去判断是否有足够的金币,

购买成功后需要去刷新自己的阵容,也就是备战区

//购买棋子
    public static boolean buyQizi(Qizi qizi, Zhenrong zhenrong) {
        if (qizi == null) {
            System.out.println("当前位置的棋子已经被购买,请重新选择或刷新");
            return false;
        }
        //先判断是否够钱
        if (qizi.getCost() <= zhenrong.getCoin()) {
            //扣钱
            zhenrong.setCoin(zhenrong.getCoin() - qizi.getCost());
            System.out.println("购买成功,您当前还有金币:" + zhenrong.getCoin());
            zhenrong.getBeizhan().getBeizhanqu().add(qizi);
            updateZhenrong(zhenrong);
            return true;
        } else {
            System.out.println("您没有足够的金币");
            return false;
        }

    }

更新阵容代码,所有的棋子在卡池中初始都是1星,三张1星卡可以合成一个2星卡,3张2星卡合成一个3星卡,所以是9张1星卡合成一个3星卡(祝大家把把三星5费☺)

//更新阵容,每次拿牌后更新
    public static void updateZhenrong(Zhenrong zhenrong) {

        System.out.println("======您当前的阵容=====");
        Map<String, Long> collect = zhenrong.getBeizhan().getBeizhanqu().stream().collect(Collectors.groupingBy(Qizi::getName, Collectors.counting()));
        // 输出结果
        collect.forEach((name, count) -> {
            if (count == 1) {
                System.out.println("1☆" + name + "*1");
            } else if (count == 2) {
                System.out.println("1☆" + name + "*2");
            } else if (count == 3) {
                System.out.println("2☆" + name + "*1");
            } else if (count == 4) {
                System.out.println("2☆" + name + "*1"+"  1☆" + name + "*1");
            } else if (count == 5) {
                System.out.println("2☆" + name + "*1"+"  1☆" + name + "*2");
            } else if (count == 6) {
                System.out.println("2☆" + name + "*2");
            } else if (count == 7) {
                System.out.println("2☆" + name + "*2"+"  1☆" + name + "*1");
            } else if (count == 8) {
                System.out.println("2☆" + name + "*2"+"  1☆" + name + "*2");
            } else if (count == 9) {
                System.out.println("3☆" + name + "*1");
            }

        });
        System.out.println("======================");
    }

然后是d(刷新)之后的逻辑,没有被购买的棋子回归卡池,可以被再次刷新出来,暂时没有开发出售棋子的逻辑,出售的话需要先记录每一张2星或者3星的卡是由哪几张1星卡合成的,然后出售时回收这些1星卡

//棋子回归卡池
    public static void backKachi() {
        if (qizi1 != null) {
            switch (qizi1.getCost()) {
                case 1:
                    Kachi.kachi1.add(qizi1);
                    break;
                case 2:
                    Kachi.kachi2.add(qizi1);
                    break;
                case 3:
                    Kachi.kachi3.add(qizi1);
                    break;
                case 4:
                    Kachi.kachi4.add(qizi1);
                    break;
                case 5:
                    Kachi.kachi5.add(qizi1);
                    break;
            }
        }
        if (qizi2 != null) {
            switch (qizi2.getCost()) {
                case 1:
                    Kachi.kachi1.add(qizi2);
                    break;
                case 2:
                    Kachi.kachi2.add(qizi2);
                    break;
                case 3:
                    Kachi.kachi3.add(qizi2);
                    break;
                case 4:
                    Kachi.kachi4.add(qizi2);
                    break;
                case 5:
                    Kachi.kachi5.add(qizi2);
                    break;
            }
        }
        if (qizi3 != null) {
            switch (qizi3.getCost()) {
                case 1:
                    Kachi.kachi1.add(qizi3);
                    break;
                case 2:
                    Kachi.kachi2.add(qizi3);
                    break;
                case 3:
                    Kachi.kachi3.add(qizi3);
                    break;
                case 4:
                    Kachi.kachi4.add(qizi3);
                    break;
                case 5:
                    Kachi.kachi5.add(qizi3);
                    break;
            }
        }
        if (qizi4 != null) {
            switch (qizi4.getCost()) {
                case 1:
                    Kachi.kachi1.add(qizi4);
                    break;
                case 2:
                    Kachi.kachi2.add(qizi4);
                    break;
                case 3:
                    Kachi.kachi3.add(qizi4);
                    break;
                case 4:
                    Kachi.kachi4.add(qizi4);
                    break;
                case 5:
                    Kachi.kachi5.add(qizi4);
                    break;
            }
        }
        if (qizi5 != null) {
            switch (qizi5.getCost()) {
                case 1:
                    Kachi.kachi1.add(qizi5);
                    break;
                case 2:
                    Kachi.kachi2.add(qizi5);
                    break;
                case 3:
                    Kachi.kachi3.add(qizi5);
                    break;
                case 4:
                    Kachi.kachi4.add(qizi5);
                    break;
                case 5:
                    Kachi.kachi5.add(qizi5);
                    break;
            }
        }

    }

4.抽卡,启动!

可以ddd和买买买

 

 

 先升个级

升完级再d可以发现刷的卡已经变高级了

 

好了,简单的抽卡模拟器已经做完了,希望大家把把五星!!! 

  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
金铲网页制作需要使用HTML、CSS和JavaScript等技术。以下是一个简单的HTML网页结构示例: ```html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>金铲网页制作</title> <link rel="stylesheet" href="style.css"> <script src="script.js"></script> </head> <body> <header> <h1>金铲网页制作</h1> <nav> <ul> <li><a href="#">首页</a></li> <li><a href="#">关于我们</a></li> <li><a href="#">服务项目</a></li> <li><a href="#">联系我们</a></li> </ul> </nav> </header> <main> <section> <h2>欢迎来到金铲网页制作</h2> <p>我们提供专业的网页制作服务,包括HTML、CSS、JavaScript等技术。</p> </section> <section> <h2>我们的服务项目</h2> <ul> <li>网页设计</li> <li>网页制作</li> <li>网页优化</li> </ul> </section> </main> <footer> <p>版权所有 © 2021 金铲网页制作</p> </footer> </body> </html> ``` 其中,`<!DOCTYPE html>`声明文档类型为HTML5,`<html>`标签表示HTML文档的根元素,`<head>`标签包含了文档的元数据,如字符集、标题、样式表和脚本等。`<body>`标签包含了文档的内容,如标题、段落、列表、链接、图像等。`<header>`标签表示文档或节的头部,`<nav>`标签表示导航链接,`<main>`标签表示文档的主要内容,`<section>`标签表示文档中的节或区域,`<footer>`标签表示文档或节的脚注。 CSS文件用于定义网页的样式,如颜色、字体、布局等。JavaScript文件用于实现网页的交互效果,如动态效果、表单验证等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值