public class YSController {
//金光数组-设置前三个为UP物品
String[] goldLight = {"钟离","尤拉","甘雨","七七","莫娜","护摩之杖","和璞鸢","狼的末路","贯虹之槊","风鹰剑","枫原万叶"};
//紫光数组-设置前三个为UP物品
String[] purpleLight = {"早柚","行秋","班尼特","祭礼剑","钟剑","西风猎弓","暗巷猎手","烟绯","芭芭拉","笛剑"};
//蓝光数组
String[] blueLight = {"黎明神剑","冷刃","暗铁剑","白铁大剑","白樱枪","鸦羽弓","讨龙英杰谭","魔导绪论"};
//UP物品数组-state[0]为金光,state[1]为紫光
int[] state = {0,0};
//生成随机数
Random r = new Random();
List list = new ArrayList();
{//生成抽奖奖池共1000个元素,其中金色0有六个概率0.6%,紫色1有51个概率5.1%,蓝色2有943个
for (int i = 0; i < 1000; i++) {
if(i<6){list.add(i,0);}
else if (i <57){list.add(i,1);}
else {list.add(i,2);
}
}
}
public void playGame(){
Scanner s = new Scanner(System.in);
//接收抽奖池的值:0,1,2
int num;
int no_10 = 0;//十发保底累计,紫光积累
int no_90 = 0;//九十发保底累计,金光积累
int o = 0;//抽奖次数累计
System.out.println("开始抽奖=======>>>");
for (int i = 0; i < 1000; i++) {
System.out.println("累计抽奖"+o);
System.out.print("请开始十连抽奖:");
Object in = s.next();
for (int j = 0; j < 10; j++) {
//随机获取抽奖池的值
num = (int)list.get(r.nextInt(1000));
o++;
//no_10是从0开始,9为第十发,no_90是从0开始,89为第九十发
//num=0是金光,1是紫光,2是蓝光
//十连紫光保底no_10 == 9第十发并且num != 1不是紫光时给保底紫光
if (no_10 == 9 && num != 1){num = 1;no_10 = 0;no_90++;System.out.print("!保底!");}
//九十连金光保底no_90 == 89第九十发并且num != 0不是金光时给保底金光
else if (no_90 == 89 && num != 0){num = 0;no_90 = 0;no_10++;System.out.print("!保底!");}
else {
//保底累计计算
if (num == 1){no_10 = 0;no_90++;}
else if(num == 0){no_90 = 0;no_10++;}
else {no_10++;no_90++;}
}
operation(num,state);//实际出货
}
System.out.println();
}
}
public void operation(int num , int[] state){
String str = "";
int i;
if (num == 0){
//随机获取金光数组索引
i = r.nextInt(goldLight.length);
//如果是前三个物品则为UP物品,state[0] = 0
//如果不是前三个物品则为UP物品,state[0] = 1,下次出金必出UP物品
if (i < 3){
str = "UP限定[★金光★]"+goldLight[r.nextInt(2)];
state[0] = 0;
}else {
if (state[0] == 1){
str = "UP限定[★金光★]"+goldLight[r.nextInt(2)];
state[0] = 0;
}else {
str = "[★金光★]"+goldLight[i];
state[0] = 1;
}
}
}else if (num == 1){
//随机获取紫光数组索引
i = r.nextInt(purpleLight.length);
//如果是前三个物品则为UP物品,state[1] = 0
//如果不是前三个物品则为UP物品,state[1] = 1,下次出紫必出UP物品
if (i < 3){
str = "UP限定[☆紫光☆]"+purpleLight[r.nextInt(3)];
state[1] = 0;
}else {
if (state[1] == 1){
str = "UP限定[☆紫光☆]"+purpleLight[r.nextInt(3)];
state[1] = 0;
}else {
str = "[☆紫光☆]"+purpleLight[i];
state[1] = 1;
}
}
}else {
i = r.nextInt(blueLight.length);
str = "[蓝光]"+blueLight[i];
}
//输出出货物品
switch (num){
case 0:System.out.print(str + " ");break;
case 1:System.out.print(str + " ");break;
case 2:System.out.print(str + " ");break;
}
}
}
控制台输出:
祝大家单抽出金,十连满命。