2015-06-13 50 views
-3

因此,我仍然是初學者,但我設法得到了這段代碼,但它並沒有像我想要的那樣工作,我的主要問題是每次按1時都會重置敵人,而不是保持同一個。如果有人能幫助我,我將不勝感激。到目前爲止,我只是寫作1做一些事情。我的java遊戲無法正常工作

package Game; 

import java.util.Random; 
import java.util.Scanner; 

public class Main { 
    public static void main(String[] args) { 

     Scanner in = new Scanner(System.in); 
     Random r = new Random(); 
     System.out.println("Welcome to Dragon Heart"); 
     System.out.println("1. Start"); 
     System.out.println("2. Quit"); 

     int input = 0, enemyhealth = 75, enemyattack = 15, playerhealth = 100, playerattack, random; 
     boolean enemydead = true, playerdead = false; 
     input = in.nextInt(); 

     if (input == 1) { 
      System.out.println("Game started!"); 
      while (0 != 1) { 
       if (enemydead = true) { 
        enemyhealth = r.nextInt(50) + 51; 
        enemyattack = r.nextInt(15) + 6; 
        System.out.println("An enemy appears, it has " + enemyhealth + " health points and " + enemyattack + " attack points"); 
       } else { 
        System.out.println("The enemy now has " + enemyhealth + "health points"); 
       } 
       System.out.println("1. Attack"); 
       System.out.println("2. Defend"); 
       System.out.println("3. Run away"); 
       System.out.println("4. Do nothing"); 
       input = in.nextInt(); 
       if (input == 1) { 
        playerattack = r.nextInt(5) + 21; 
        random = r.nextInt(2) + 1; 
        enemyhealth = enemyhealth - playerattack; 
        if (random == 1) { 
         playerhealth = playerhealth - enemyattack; 
        } 
        if (enemyhealth <= 0) { 
         enemydead = true; 
         System.out.println("The enemy has been killed"); 
        } else { 
         enemydead = false; 
        } 
       } 

      } 

     } else if (input == 2) { 
      System.out.println("Game quit."); 
     } 
    } 
} 
+3

請更改您的標題以反映實際問題。我們知道你的遊戲無法正常工作。你不會另外發布。 –

+0

對不起,我只是不確定我怎麼能解釋這個問題。如果你能給我一個建議,我會改名。 –

+0

設置一個標題,以反映您遇到的問題。寫在帖子裏,當你遇到問題和問題是什麼。如果它是例外,也包括'stacktrace'。還有更多可以添加的信息,只需添加即可。我們在這裏爲您提供幫助,但您需要先引導我們。 –

回答

4

您的防禦邏輯走是半信半疑,但你的問題是在這裏:

if(enemydead = true) 

你重新分配enemydeadtrue每一次。

你真的要檢查如果敵人是死的,這是與此完成:

if(enemydead) 

此外,你可以清理while (0 != 1)while(true)代替。但是,您需要在該循環的某個位置包含一個break語句,以便它不像現在這樣是一個無限循環。

最後,最好有lower-case package names而不是大寫的包名稱。

+1

啊,是的,就是這樣......我知道這條線有問題。 爲了在此澄清答案,在進行比較時,使用==。 =是一個賦值操作符,這意味着每次調用聲明時,敵方的敵人都會被設置爲真,所以你的敵人總是死掉。使用==運算符進行比較,或者,正如他所提到的,由於enemydead是一個布爾值,因此您可以簡單地使用if(enemydead)。 – lmcphers

+2

只是爲了澄清,'if(enemydead == true)'仍然是一個正確的條件,因爲'=='vs'='往往是我們在開始時犯的一個錯誤:) – vikingsteve

+0

@vikingsteve:當你技術上是正確的,我有幾個警告設置在我的IDE和5年的條件限制,禁止我寫一個布爾比較,然後將其與「真」或「假」進行比較。 – Makoto

相關問題