2015-06-13 26 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