2015-07-20 41 views
0

我试图创建一个文本冒险游戏的战斗系统,随机生成一个随机健康池随机敌人,但每个产生的敌人似乎没有自己的健康池,而不是“主“敌人健康变量在攻击时持续递增。所以输出结果显示新的健康负面健康的敌人,而不是一个新的健康池。 我迄今为止代码:文本冒险游戏战斗系统的方法

public class Combat{ 

    //enemy variables 
    private int enemyHealth = (int) (Math.random()*75); 
    private int maxEnemyDamage = 25; 
    private String enemyName; 
    //player variables 
    private int playerHealth = 100; 
    private int playerDamage = 50; 
    //health potion variables 
    private int numHealthPotions = 3; 
    private int healAmount = 30; 
    private int dropChance = 50; //percentage 

    public String getEnemyName() { 
     String[] enemy = {"Zombie", "Witch", "Hell Dog", "Skeleton"}; 
     int i = (int) (Math.random() * 4); 
     this.enemyName = enemy[i]; 
     return this.enemyName; 
    } 
    public int getEnemyHealth(){ 
     return enemyHealth; 
    } 
    public void enemyAppears(){ 
     String enemy = getEnemyName(); 
     System.out.println("A " + enemy + " has appeared with " + enemyHealth + " health."); 
    } 
    public void attack() { 
     int damageTaken =(int) (Math.random() * maxEnemyDamage); 
     int damageDealt =(int) (Math.random() * playerDamage); 
     enemyHealth -= damageDealt - getEnemyHealth(); 
     playerHealth -= damageTaken; 
     System.out.println("You strike for " + damageDealt); 
     System.out.println("You have been hit for " + damageTaken); 
     System.out.println("You have " + playerHealth + " hp left.\n The enemy has " + enemyHealth + " hp left."); 
     if (playerHealth < 0){ 
      System.out.println("You died."); 
      System.exit(15); 
     } 

调用这些方法的主要方法:

Combat combat = new Combat(); 
    Scanner input = new Scanner(System.in); 
    System.out.println("Welcome to the dungeon"); 
    boolean running = true; 
    GAME: 
    while(running){ 

     combat.enemyAppears(); 

     System.out.println("Choose:\n1. To Attack \n2. To Heal \n3. To Run"); 
     String choice = input.next(); 
     if(choice.equals("1")) { 
      combat.attack(); 
     } else if (choice.equals("2")){ 
      combat.heal(); 
     } else { 
      combat.run(); 
      break; 
     } 
    } 
} 

我想产卵敌人的对象(我只是随机产生的名称作为是)因为我觉得这会解决这个问题,但我无法完全弄清楚我需要用我的构造函数。我可以猜测为什么我的代码不工作,但我无法修复它。有一个简单的构造函数或setter可以解决这个问题吗?

+1

'enemyHealth'永远不会重置 – depperm

回答

1

您只有变量enemyHealth。如果你想让每个敌人都有自己的健康变量,你必须使用int[]。除此之外,真正的面向对象方法是将敌人作为对象来执行。小注:您可以使用java.util.Random这个类别创建随机数字。这个班级还提供了在给定范围内直接创建随机int的方法。