在一个 while 循环中的两个嵌套 while 循环之间切换

登斯塔默

我是一个菜鸟程序员,在我的包含 while 循环的分配中遇到问题。

目前,我正在编写一款游戏的战斗系统,该游戏有两个需要相互循环的阶段(攻击和防御阶段)。它是作为一种方法创建的,我将能够在游戏中多次调用它。我原本打算让代码工作的方式是创建一个 while 循环,该循环将一直持续到演员的一个生命值达到 0。接下来,我在第一个 while 循环中嵌套了 while 循环,以使用满足嵌套循环条件的布尔值继续在两者之间切换。然而,在测试代码并尝试其他循环代码的方法后,它似乎卡在循环防御阶段而不是切换回攻击阶段。

我非常感谢反馈并帮助防止代码这样做。也忽略“使用项目”位代码,我还没有添加它作为选择,所以它现在只是文本。

import java.util.*;

public class CombatSystemTesting 
{
// Combat Variables
public static boolean attackStance = true;
public static boolean defenceStance = false;

// Player Variables
public static int playerGold = 0;
public static int playerHP = 20;
public static int playerArmour = 0;
public static int playerShield = 1;
public static int playerAttack = 3;

// Enemy Variables
public static int enemyHP = 12;
public static int enemyDF = 0;
public static int enemyAttack = 3;

public static void main(String[] args) 
{
    battle1();
}

    public static void battle1()
    {
        int enemyAttackChance = (int)(Math.random()*3)+1;
        int enemyDefendChance = (int)(Math.random()*3)+1;

        Scanner sc = new Scanner(System.in);

        while (playerHP <= 0 || enemyHP <= 0);
        {
            while (attackStance = true)
            {
                System.out.println("(Attack Phase)");
                System.out.println("");
                System.out.println("'1' - [Attack]");
                System.out.println("'2' - [Strike]");
                System.out.println("'3' - [Use Item]");
                System.out.println("");
                System.out.println("HP: " + playerHP + " DF: " + playerArmour + " Gold: " + playerGold);
                System.out.println("");
                System.out.println("Enemy HP: " + enemyHP + " Enemy DF: " + enemyDF);
                System.out.println("");
                System.out.print("Your choice: ");
                int choice = sc.nextInt();

                System.out.println("");
                System.out.println("----------------------------------------------------------------------------------------------");
                System.out.println("");

                if (choice == 1)
                {
                    if (enemyDefendChance == 1 || enemyDefendChance == 2)
                    {
                        System.out.println("You used: Attack!");
                        System.out.println("Rat Used: Defend!");

                        enemyDF = enemyDF + 1;
                        playerAttack = playerAttack - enemyDF;
                        enemyHP = enemyHP - playerAttack;
                        playerAttack = playerAttack + enemyDF;
                        enemyDF = enemyDF - 1;

                        attackStance = false;
                        defenceStance = true;
                    }
                    else if (enemyDefendChance == 3)
                    {
                        System.out.println("You used: Attack!");
                        System.out.println("Rat Used: Counter!");
                        System.out.println("");

                        playerAttack = playerAttack - enemyDF;
                        enemyHP = enemyHP - playerAttack;
                        playerAttack = playerAttack + enemyDF;

                        attackStance = false;
                        defenceStance = true;
                    }
                }
                if (choice == 2)
                {
                    if (enemyDefendChance == 1 || enemyDefendChance == 2)
                    {
                        System.out.println("You used: Strike!");
                        System.out.println("Rat Used: Defend!");
                        System.out.println("");

                        playerAttack = playerAttack * 2;
                        enemyDF = enemyDF + 1;
                        enemyHP = enemyHP - playerAttack + enemyDF;
                        enemyDF = enemyDF - 1;
                        playerAttack = playerAttack / 2;

                        attackStance = false;
                        defenceStance = true;
                    }
                    else if (enemyDefendChance == 3)
                    {
                        System.out.println("You used: Strike!");
                        System.out.println("Rat Used: Counter!");
                        System.out.println("");

                        playerHP = playerHP - playerAttack * 2 + playerArmour;

                        attackStance = false;
                        defenceStance = true;
                    }
                }
            while (defenceStance = true)
                {
                System.out.println("(Defence Phase)");
                System.out.println("");
                System.out.println("'1' - [Defend]");
                System.out.println("'2' - [Counter]");
                System.out.println("'3' - [Use Item]");
                System.out.println("");
                System.out.println("HP: " + playerHP + " DF: " + playerArmour + " Gold: " + playerGold);
                System.out.println("");
                System.out.println("Enemy HP: " + enemyHP + " Enemy DF: " + enemyDF);
                System.out.println("");
                System.out.print("Your choice: ");
                choice = sc.nextInt();

                System.out.println("");
                System.out.println("----------------------------------------------------------------------------------------------");
                System.out.println("");

                if (choice == 1)
                {
                    if (enemyAttackChance == 1 || enemyAttackChance == 2)
                    {
                        System.out.println("You used: Defend!");
                        System.out.println("Rat Used: Attack!");

                        playerArmour = playerArmour + playerShield;
                        enemyAttack = enemyAttack - playerArmour;
                        playerHP = playerHP - enemyAttack;
                        enemyAttack = enemyAttack + playerArmour;
                        playerArmour = playerArmour - playerShield;
                        System.out.println("");

                        attackStance = true;
                        defenceStance = false;
                    }
                    else if (enemyAttackChance == 3)
                    {
                        System.out.println("You used: Defend!");
                        System.out.println("Rat Used: Strike!");

                        enemyAttack = enemyAttack * 2;
                        playerArmour = playerArmour + playerShield;
                        playerHP = playerHP - enemyAttack + playerArmour;
                        playerArmour = playerArmour - playerShield;
                        enemyAttack = enemyAttack / 2;
                        System.out.println("");

                        attackStance = true;
                        defenceStance = false;
                    }
                }
                else if (choice == 2)
                {
                    if (enemyAttackChance == 1 || enemyAttackChance == 2)
                    {
                        System.out.println("You used: Counter!");
                        System.out.println("Rat Used: Attack!");

                        enemyAttack = enemyAttack - playerArmour;
                        playerHP = playerHP - enemyAttack;
                        enemyAttack = enemyAttack + playerArmour;

                        attackStance = true;
                        defenceStance = false;
                    }
                    else if (enemyAttackChance == 3)
                    {
                        System.out.println("You used: Attack!");
                        System.out.println("Rat Used: Counter!");
                        System.out.println("");

                        playerAttack = playerAttack - enemyDF;
                        enemyHP = enemyHP - playerAttack;
                        playerAttack = playerAttack + enemyDF;

                        attackStance = true;
                        defenceStance = false;
                    }
                }
            }
        }
    }       
    //Pending code will be added later
    System.out.println("You shouldn't see this message till you or oppenent have reached 0 HP");
}
}
泰兹拉

defenceStance = true是赋值,而不是比较,因此while(defenceStance = true)将始终为真,因为它正在测试赋值是否成功。您需要使用==来比较值。但是由于您正在测试 true,因此您可以说while(defenceStance)因为 bool == true 将始终仅导致 bool 的值。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在“ while”循环中嵌套“ awk”,逐行解析两个文件并比较列值

来自分类Dev

了解两个嵌套while循环中的时间复杂度

来自分类Dev

如何在while循环中连接两个值?

来自分类Dev

解析for / while循环中输入的两个文件

来自分类Dev

如何在while循环中连接两个变量

来自分类Dev

杀死一个嵌套的while循环

来自分类Dev

Python:如何在while循环中满足两个完全不同的条件中的一个或两个

来自分类Dev

切换语句和While循环

来自分类Dev

While循环和切换表头

来自分类Dev

编写一个文本文件,其行中的两个单词之间用逗号分隔,而while循环中则用逗号分隔

来自分类Dev

需要帮助两个While循环

来自分类Dev

While循环两个查询

来自分类Dev

合并两个while循环

来自分类Dev

在while循环中如何使用最后一个命令?

来自分类Dev

Bash:在while循环中放入一个read

来自分类Dev

在 while 循环中(与外部)声明一个对象

来自分类Dev

if-while循环中的三个案例中的一个似乎不起作用,而另外两个则可以吗?

来自分类Dev

一个或两个语句中的while循环有什么区别?

来自分类Dev

将python的两个while循环合并为一个

来自分类Dev

获得一个while循环,以在PHP中使用两个条件运行“ X”次

来自分类Dev

如何在while循环的一个结果集中使用两个条件?

来自分类Dev

在一个while循环内的cin

来自分类Dev

我需要在 Javascript 中做两个循环,一个 do/while 和一个 For

来自分类Dev

比较C中两个while循环中两个文件中的字符串

来自分类Dev

在两个循环之间切换

来自分类Dev

在两个循环之间切换

来自分类Dev

为什么一个嵌套的 while 循环比另一个嵌套的 while 循环快?

来自分类Dev

在另一个while循环中使用while循环输出特定数据

来自分类Dev

在另一个while循环中使用while循环时出错

Related 相关文章

  1. 1

    在“ while”循环中嵌套“ awk”,逐行解析两个文件并比较列值

  2. 2

    了解两个嵌套while循环中的时间复杂度

  3. 3

    如何在while循环中连接两个值?

  4. 4

    解析for / while循环中输入的两个文件

  5. 5

    如何在while循环中连接两个变量

  6. 6

    杀死一个嵌套的while循环

  7. 7

    Python:如何在while循环中满足两个完全不同的条件中的一个或两个

  8. 8

    切换语句和While循环

  9. 9

    While循环和切换表头

  10. 10

    编写一个文本文件,其行中的两个单词之间用逗号分隔,而while循环中则用逗号分隔

  11. 11

    需要帮助两个While循环

  12. 12

    While循环两个查询

  13. 13

    合并两个while循环

  14. 14

    在while循环中如何使用最后一个命令?

  15. 15

    Bash:在while循环中放入一个read

  16. 16

    在 while 循环中(与外部)声明一个对象

  17. 17

    if-while循环中的三个案例中的一个似乎不起作用,而另外两个则可以吗?

  18. 18

    一个或两个语句中的while循环有什么区别?

  19. 19

    将python的两个while循环合并为一个

  20. 20

    获得一个while循环,以在PHP中使用两个条件运行“ X”次

  21. 21

    如何在while循环的一个结果集中使用两个条件?

  22. 22

    在一个while循环内的cin

  23. 23

    我需要在 Javascript 中做两个循环,一个 do/while 和一个 For

  24. 24

    比较C中两个while循环中两个文件中的字符串

  25. 25

    在两个循环之间切换

  26. 26

    在两个循环之间切换

  27. 27

    为什么一个嵌套的 while 循环比另一个嵌套的 while 循环快?

  28. 28

    在另一个while循环中使用while循环输出特定数据

  29. 29

    在另一个while循环中使用while循环时出错

热门标签

归档