Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我的代码有问题,可以';我找不到_Java_Character - Fatal编程技术网

Java 我的代码有问题,可以';我找不到

Java 我的代码有问题,可以';我找不到,java,character,Java,Character,由于某些原因,下面的代码无法正常工作。这只是代码的结构,但我想做的是一对一的格斗游戏。你可以从3个不同的选项中选择一个角色,然后与电脑战斗,电脑也选择了一个角色。生命值达到0的人会输 因此,这段代码中的问题是,计算机在每种情况下都会获胜。我只是把角色3作为我的角色,让它被压制(1000点生命,20点力量,相比之下是120点生命和8点力量),但我的角色仍然在流失。我猜问题很简单,但我就是看不出来 提前谢谢 import java.util.Random; public class Test{

由于某些原因,下面的代码无法正常工作。这只是代码的结构,但我想做的是一对一的格斗游戏。你可以从3个不同的选项中选择一个角色,然后与电脑战斗,电脑也选择了一个角色。生命值达到0的人会输

因此,这段代码中的问题是,计算机在每种情况下都会获胜。我只是把角色3作为我的角色,让它被压制(1000点生命,20点力量,相比之下是120点生命和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;
  }
}
试着改变

while (player.getHP() > 0 || enemy.getHP() > 0){

让游戏继续下去,只要其中至少有一条是正确的:

  • 玩家的生命值>0
  • 或者敌人的生命值大于0
但是你希望游戏在两个玩家中的一个死后尽快结束,或者换句话说,你希望游戏在两个玩家都还活着的时候继续,所以

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

此外,您的代码中缺少随机组件,游戏将始终保持不变:您正在导入
随机
类,但从未使用它

将while循环条件替换为

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


我建议避免使用与JRE中的类名相同的类名,尤其是java.lang包中的类名(例如
Character
while (player.getHP() > 0 || enemy.getHP() > 0)
while (player.getHP() > 0 && enemy.getHP() > 0)