我的java游戏不是';行不通

我的java游戏不是';行不通,java,Java,所以我还是一个初学者,但我成功地得到了这个代码,但它并没有像我想要的那样工作,我的主要问题是,每次我按1时,它都会重置敌人,而不是保持原来的敌人。如果有人能帮助我,我将不胜感激。到目前为止,我只做了一些写作 package Game; import java.util.Random; import java.util.Scanner; public class Main { public static void main(String[] args) { Scann

所以我还是一个初学者,但我成功地得到了这个代码,但它并没有像我想要的那样工作,我的主要问题是,每次我按1时,它都会重置敌人,而不是保持原来的敌人。如果有人能帮助我,我将不胜感激。到目前为止,我只做了一些写作

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.");
        }
    }
}
打包游戏;
导入java.util.Random;
导入java.util.Scanner;
公共班机{
公共静态void main(字符串[]args){
扫描仪输入=新扫描仪(系统输入);
随机r=新随机();
System.out.println(“欢迎来到龙心”);
System.out.println(“1.Start”);
System.out.println(“2.Quit”);
int输入=0,enemyhealth=75,enemyattack=15,playerhealth=100,PlayerTack,随机;
布尔值enemydead=true,playerdead=false;
input=in.nextInt();
如果(输入=1){
System.out.println(“游戏开始了!”);
而(0!=1){
如果(enemydead=true){
enemyhealth=r.nextInt(50)+51;
enemyattack=r.nextInt(15)+6;
System.out.println(“一个敌人出现,它有“+敌人健康+”生命点和“+敌人攻击+”攻击点”);
}否则{
System.out.println(“敌人现在有“+敌人健康+”生命点数”);
}
System.out.println(“1.Attack”);
System.out.println(“2.defect”);
System.out.println(“3.Run-away”);
System.out.println(“4.什么都不做”);
input=in.nextInt();
如果(输入=1){
playerattack=r.nextInt(5)+21;
随机=r.nextInt(2)+1;
enemyhealth=enemyhealth-playerattack;
如果(随机==1){
玩家健康=玩家健康-敌人攻击;
}

如果(enemyhealth你的防守逻辑是可疑的,但你的问题是:

if(enemydead = true)
您每次都将
enemydead
重新指定为
true

你真的想检查敌人是否死亡,这是通过以下方法实现的:

if(enemydead)
此外,您可以将
while(0!=1)
清理为
while(true)
。但是,您需要在该循环中的某个位置包含
break
语句,以便它不像现在这样是一个无限循环


最后,最好使用大写的软件包名称。

请更改标题以反映实际问题。我们知道您的游戏不起作用。否则您就不会发布。很抱歉,我不确定如何解释问题。如果您能给我一个建议,我会更改名称。设置一个标题以反映实际问题ect通常是您遇到的问题。在帖子中写下您遇到的问题以及问题是什么。如果是例外,还包括
stacktrace
。以及您可以添加的任何更多信息,只需添加。我们是来帮助您的,但您需要先指导我们。@Tiny
0!=1
看起来非常
正确
>对我来说。啊,是的,就是这样……我知道那条线有问题。为了澄清答案,在进行比较时,使用==。=是赋值运算符,这意味着每次调用if语句时,enemydead都被设置为true,所以你的敌人总是死的。使用==运算符进行比较,或者,正如他提到的,因为enemydead是一个布尔值,您可以简单地使用if(enemydead)。只是为了澄清,
if(enemydead==true)
仍然是一个正确的条件,因为
=
vs
=
通常是我们在开始时都会犯的错误:)@vikingsteve:虽然您在技术上是正确的,但我在IDE中设置了几个警告,并且经过5年的调整,禁止我编写布尔比较,然后将其与
true
false
进行比较。您当然是正确的,而且大多数IDE都应该允许您简化条件,如前所述这一点——对java初学者来说,基本了解正在发生的事情很重要:)