最近迷上了金铲铲,无心上班,满脑子都是抽卡,阵容,,走路都是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可以发现刷的卡已经变高级了