简单的基于Java文本的游戏循环

时间:2016-10-03 02:35:48

标签: java if-statement for-loop while-loop

所以我创建了一个简单的基于文本的游戏但是我的循环有问题。所以我的角色与同一个敌人进行了3场战斗,但直到一个角色死亡之前战斗才结束。使用我当前的代码,它只会在第一场战斗中循环,但将战斗2和3留空。 惠普继续从战斗到战斗,但敌人惠普在每次后续战斗中重置为25。 当一个角色死亡时,如何让我的循环立即停止? 我究竟做错了什么?

    Scanner keyboard = new Scanner(System.in);
    Random rand = new Random();
    int characterHP = 0, characterStrength = 0, weaponMin = 0, weaponMax = 0;
    int enemyHP = 0, enemyStrength = 0, enemyWeaponMin = 0, enemyWeaponMax = 0;
    boolean running = true, characterHasntDied = true, enemyHasntDied = true;
    int choice;
    String characterChoice = null;
    String enemyChoice = null;
    int ATK = 0, enemyATK = 0;



    for (int i = 1; i <= 3; i++) {
            ATK = rand.nextInt((weaponMax - weaponMin) + 1) + weaponMin;
            enemyATK = rand.nextInt((enemyWeaponMax - enemyWeaponMin) + 1) + enemyWeaponMin;

            int valueOfAttack = (ATK + characterStrength);
            int enemyValueOfAttack = (enemyATK + enemyStrength);



                enemyHP -= valueOfAttack;
                characterHP -= enemyValueOfAttack;

                if (enemyHP < 1) {
                    characterHasntDied = false;
                    System.out.println(characterChoice + " has defeated Goblin " + i);
                    break;

                } else if (characterHP < 1) {
                    characterHasntDied = false;
                    System.out.println(characterChoice + " is defeated in battle!");
                    break;
                }
            }
        }

1 个答案:

答案 0 :(得分:0)

请勿使用break,因为它会突破loop

   if (enemyHP < 1) {
    /*... */

  } else if (characterHP < 1) {
    /*... */
  }

模拟两个玩家之间的三场战斗

Scanner keyboard = new Scanner(System.in);
Random rand = new Random();
int PowerPlayer1 =200;
int PowerPlayer2 = 200;
boolean winner=false;
int ATKPlaayer1 = 0, ATKPlaayer2 = 0;
String Player1 = "Rogue";
String Player2 = "Goblin";    

for (int i = 1; i <= 3; i++) { // i many battles

        while(!winner) /*while there is no winner*/
        {
            /* The Random method can improve it*/
          ATKPlaayer1 = rand.nextInt(200);
          System.out.println(Player1+ "  Attack : " + ATKPlaayer1);
          PowerPlayer2-= ATKPlaayer1;
          System.out.println(Player2 + " Power Diminished by the Attack "+ Player1 + " of "+ PowerPlayer2);
          ATKPlaayer2 = rand.nextInt(200);
          System.out.println(Player2+ "  Attack : " + ATKPlaayer2);
          PowerPlayer1-=ATKPlaayer2;
          System.out.println(Player1 + " Power Diminished by the Attack "+ Player2 + " of "+ PowerPlayer1);
          if(PowerPlayer1<=0)
          {
                System.out.println(Player2  + " has Winner");
                winner=true;
          }
          else if(PowerPlayer2<=0)
          {
                System.out.println(Player1 + " has Winner");
                winner=true;
          }

        }
        /* Reset Variables */
         winner = false; 
         PowerPlayer1 =200;
         PowerPlayer2 =200;
      }
相关问题