Java 使循环中的随机值保持该值

Java 使循环中的随机值保持该值,java,text,Java,Text,我正在制作一个地下城游戏。我希望玩家有机会变异,并随着时间的推移造成健康损失。我的问题是,当序列被循环,战斗阶段结束时,突变再次被随机分配。这意味着,如果我变异并受到伤害,而敌人仍然活着,它会重新执行“while”语句,并再次随机化变异值 if(input.equals("1")) { int damageDealt = rand.nextInt(attackDamage); int damageTaken = rand.nextInt(enemyAttackDamage);

我正在制作一个地下城游戏。我希望玩家有机会变异,并随着时间的推移造成健康损失。我的问题是,当序列被循环,战斗阶段结束时,突变再次被随机分配。这意味着,如果我变异并受到伤害,而敌人仍然活着,它会重新执行“while”语句,并再次随机化变异值

if(input.equals("1")) {
    int damageDealt = rand.nextInt(attackDamage);
    int damageTaken = rand.nextInt(enemyAttackDamage);
    int taken = rand.nextInt(mutation); //variable to see if a mutation occurs. Integer for mutation is 100.
    if (taken < 10) { 
// How do I tell the program to keep the number for taken?
// it will just re-loop and find a new rand.nextInt(mutation);
        enemyHealth -= damageDealt; //damage taken for enemy
        health -= damageTaken; //damage taken for player
        health -= rand.nextInt(maxMutationDamage); //damage taken from mutation. maxMutationDamage is 15
        JOptionPane.showMessageDialog(null, "You hit the " + enemy + " for " + damageDealt + " damage." + "\nYou receieved " + damageTaken + " damage." + "\nyour mutation did " + taken + " damage.");
    }
    else { 
        // I added this so that if the mutation didn't occur
        // the calculations for the fight still renders.
        enemyHealth -= damageDealt;
        health -= damageTaken;
        JOptionPane.showMessageDialog(null, "You hit the " + enemy + " for " + damageDealt + " damage." + "\nYou receieved " + damageTaken + " damage.");
    }
    if(health < 1) {
        JOptionPane.showMessageDialog(null, "you have taken to much damage!");
        break;
    }
}
else if (input.equals("2")) {
    if(numBandages > 0) {
        health += bandagesHealAmount;
        numBandages --;
        JOptionPane.showMessageDialog(null, "You bandaged yourself for " + bandagesHealAmount + "."
                +"\nYou now have " + health + " HP."
                +"\nYou have " + numBandages + " bandages left.");
    }
    else {
        JOptionPane.showMessageDialog(null, "You have no bandages in inventory to heal!");
    }
}
else if (input.equals("3")) {
    JOptionPane.showMessageDialog(null, "You ran away from the " + enemy + "!");
    continue GAME; //it resets the sequence of the dungeon to a new fight
}
if(input.equals(“1”)){
int DAMAGEMAGEDOMED=随机数下一次(攻击伤害);
int DAMAGETAKED=rand.nextInt(enemyAttackDamage);
int take=rand.nextInt(mutation);//用于查看是否发生突变的变量。突变的整数为100。
如果(取<10){
//我如何告诉程序保留该号码以备使用?
//它将重新循环并找到一个新的rand.nextInt(突变);
enemyHealth-=造成的伤害;//为敌人造成的伤害
生命-=受到的伤害;//对玩家造成的伤害
健康-=rand.nextInt(maxMutationDamage);//从突变中获得的伤害。maxMutationDamage为15
JOptionPane.showMessageDialog(null,“你击中了“+敌人+”以获得“+伤害造成的+”伤害。“+”\n你收到了“+伤害造成的+”伤害。“+”\n你的变异造成了“+伤害造成的+”);
}
否则{
//我加了这个,这样如果没有发生突变
//这场战斗的计算结果仍然令人满意。
enemyHealth-=造成的损害;
健康-=受到的损害;
JOptionPane.showMessageDialog(空,“你击中“+敌人+”表示“+伤害造成+”伤害。“+”\n你收到“+伤害造成+”伤害。“);
}
如果(健康状况<1){
showMessageDialog(null,“您受到了很大的伤害!”);
打破
}
}
else if(输入等于(“2”)){
如果(编号>0){
健康+=绷带数;
麻布达日--;
showMessageDialog(null,“您为“+bandagesHealAmount+”而包扎自己”
+\n您现在拥有“+健康+”HP
+“\n您还有“+麻布绷带+”绷带。”);
}
否则{
showMessageDialog(null,“库存中没有要治疗的绷带!”);
}
}
else if(输入等于(“3”)){
showMessageDialog(null,“您从“+敌人+”!”中逃跑了”;
继续游戏;//它将地牢的顺序重置为新的战斗
}
还有,如果你们能帮忙,我怎么能让玩家即使跑掉也无法痊愈,但他还是会因为变异而受伤呢


只有当愈合完成时,突变才会停止。

一些代码显示了如何设置和保持状态变量。不确定何时返回初始状态

int taken = -1;
while(...){ // continue game
    switch(input){
    case "1":
        if( taken == -1 ) taken = rand.nextInt(mutation);
        if(taken < 10 ){
            ...
        }
        ...
        break;
    case "2":
        ...
        // Does healing happen here?
        taken = -1; // return to initial state
        break;
    case "3":
        ...
        break;
    }
}
int-take=-1;
而(…){//继续游戏
开关(输入){
案例“1”:
if(take==-1)take=rand.nextInt(突变);
如果(取<10){
...
}
...
打破
案例“2”:
...
//愈合发生在这里吗?
take=-1;//返回初始状态
打破
案例“3”:
...
打破
}
}

那么,您想在什么时候为take分配一个新的随机值?显然,不是每次执行输入“1”的操作时,而是何时执行?while循环在哪里?while循环就在if语句的上方。如果你们也需要的话,我可以加进去@劳恩,我想让他们输入1,就有可能发生突变。当这种情况发生时,我希望取值保持为真,这样if(取值<10)将始终发生。虽然当我们痊愈时它会停止。但如果我们逃跑了,还是保持真实。我该把这个放在哪里?我对cases&switch的概念还很陌生。switch是用来取代if级联的。您必须主要通过从那里复制代码来填补空白(…)。