所以我创建了一个简单的基于文本的游戏但是我的循环有问题。所以我的角色与同一个敌人进行了3场战斗,但直到一个角色死亡之前战斗才结束。使用我当前的代码,它只会在第一场战斗中循环,但将战斗2和3留空。 惠普继续从战斗到战斗,但敌人惠普在每次后续战斗中重置为25。 当一个角色死亡时,如何让我的循环立即停止? 我究竟做错了什么?
Scanner keyboard = new Scanner(System.in);
Random rand = new Random();
int characterHP = 0, characterStrength = 0, weaponMin = 0, weaponMax = 0;
int enemyHP = 0, enemyStrength = 0, enemyWeaponMin = 0, enemyWeaponMax = 0;
boolean running = true, characterHasntDied = true, enemyHasntDied = true;
int choice;
String characterChoice = null;
String enemyChoice = null;
int ATK = 0, enemyATK = 0;
for (int i = 1; i <= 3; i++) {
ATK = rand.nextInt((weaponMax - weaponMin) + 1) + weaponMin;
enemyATK = rand.nextInt((enemyWeaponMax - enemyWeaponMin) + 1) + enemyWeaponMin;
int valueOfAttack = (ATK + characterStrength);
int enemyValueOfAttack = (enemyATK + enemyStrength);
enemyHP -= valueOfAttack;
characterHP -= enemyValueOfAttack;
if (enemyHP < 1) {
characterHasntDied = false;
System.out.println(characterChoice + " has defeated Goblin " + i);
break;
} else if (characterHP < 1) {
characterHasntDied = false;
System.out.println(characterChoice + " is defeated in battle!");
break;
}
}
}
答案 0 :(得分:0)
请勿使用break
,因为它会突破loop
if (enemyHP < 1) {
/*... */
} else if (characterHP < 1) {
/*... */
}
模拟两个玩家之间的三场战斗
Scanner keyboard = new Scanner(System.in);
Random rand = new Random();
int PowerPlayer1 =200;
int PowerPlayer2 = 200;
boolean winner=false;
int ATKPlaayer1 = 0, ATKPlaayer2 = 0;
String Player1 = "Rogue";
String Player2 = "Goblin";
for (int i = 1; i <= 3; i++) { // i many battles
while(!winner) /*while there is no winner*/
{
/* The Random method can improve it*/
ATKPlaayer1 = rand.nextInt(200);
System.out.println(Player1+ " Attack : " + ATKPlaayer1);
PowerPlayer2-= ATKPlaayer1;
System.out.println(Player2 + " Power Diminished by the Attack "+ Player1 + " of "+ PowerPlayer2);
ATKPlaayer2 = rand.nextInt(200);
System.out.println(Player2+ " Attack : " + ATKPlaayer2);
PowerPlayer1-=ATKPlaayer2;
System.out.println(Player1 + " Power Diminished by the Attack "+ Player2 + " of "+ PowerPlayer1);
if(PowerPlayer1<=0)
{
System.out.println(Player2 + " has Winner");
winner=true;
}
else if(PowerPlayer2<=0)
{
System.out.println(Player1 + " has Winner");
winner=true;
}
}
/* Reset Variables */
winner = false;
PowerPlayer1 =200;
PowerPlayer2 =200;
}