2015-07-20 100 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的方法。