由于某些原因,下面的代码无法正常工作。这只是代码的结构,但我在这里想要做的是一对一的格斗游戏。你从3个不同的选项中选择一个角色并与计算机对战,而计算机也挑选了一个角色。达到0 HP的人会输。
因此,此代码中的问题是计算机在每种情况下都会获胜。我只把character3作为我的角色,让它制服了(1000马力,20强度相比120HP和8强度),但我的角色仍在失败。我猜这个问题很简单,但我只是看不清它/想出来。
提前致谢。
import java.util.Random;
public class Test{
public static void main(String[] args){
Character character1 = new Character("Test1", 100, 10);
Character character2 = new Character("Test2", 120, 8);
Character character3 = new Character("Test3", 1000, 20);
Character player = character3;
Character enemy = character2;
boolean playersTurn = true;
while (player.getHP() > 0 || enemy.getHP() > 0){
if (playersTurn == true){
enemy.damage(player.getStrength());
} else {
player.damage(enemy.getStrength());
}
playersTurn = !playersTurn;
}
if (player.getHP() > 0){
System.out.println("Player won!");
} else {
System.out.println("Enemy won!");
}
}
}
class Character{
protected String name;
protected int HP;
protected int strength;
public Character(String name, int HP, int strength){
this.name = name;
this.HP = HP;
this.strength = strength;
}
public String getName(){
return this.name;
}
public int getHP(){
return this.HP;
}
public int getStrength(){
return this.strength;
}
public void damage(int amount){
int sum = this.HP - amount;
this.HP = sum;
}
}
答案 0 :(得分:3)
尝试更改
while (player.getHP() > 0 || enemy.getHP() > 0){
到
while (player.getHP() > 0 && enemy.getHP() > 0){
答案 1 :(得分:2)
while (player.getHP() > 0 || enemy.getHP() > 0)
让游戏继续下去,只要其中至少有一个是真的:
但是你希望一旦两个玩家中的一个死了就完成游戏,或者换句话说,你希望游戏继续进行,而两个玩家仍然活着,所以
while (player.getHP() > 0 && enemy.getHP() > 0)
此外,代码中缺少随机组件,游戏将始终相同:您正在导入Random
类但从不使用它
答案 2 :(得分:2)
用
替换你的while循环条件while(player.getHP()> 0&& enemy.getHP()> 0)
AND而不是OR