我的代码出了点问题,找不到它

时间:2015-05-29 17:20:17

标签: java character

由于某些原因,下面的代码无法正常工作。这只是代码的结构,但我在这里想要做的是一对一的格斗游戏。你从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;
  }
}

3 个答案:

答案 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)

让游戏继续下去,只要其中至少有一个是真的:

  • 玩家的HP是> 0
  • 或敌人的HP是> 0

但是你希望一旦两个玩家中的一个死了就完成游戏,或者换句话说,你希望游戏继续进行,而两个玩家仍然活着,所以

while (player.getHP() > 0 && enemy.getHP() > 0)

此外,代码中缺少随机组件,游戏将始终相同:您正在导入Random类但从不使用它

答案 2 :(得分:2)

替换你的while循环条件

while(player.getHP()> 0&& enemy.getHP()> 0)

AND而不是OR