2016-10-03 6 views
0

私は単純なテキストベースのゲームを作成していますが、私のループに問題があります。だから、私のキャラクターは同じ敵と3つの戦いがありますが、戦闘は1人のキャラクターが死ぬまで続きます。私の現在のコードでは、最初の戦闘だけをループしますが、戦闘2と3は空白のままにします。 HPは戦闘から戦闘に移りますが、後続の戦闘ごとにHPが25にリセットされます。 そして、キャラクターが死んですぐにループを止めるにはどうすればいいですか? 何が間違っていますか?シンプルなJavaテキストベースのゲームループ

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; 
       } 
      } 
     } 
+0

が示されていない何か、例えばになりloop

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

が2人の選手の間に3つの戦いをシミュレートしてから抜け出すますのでbreakを使用しないでください。 'characterHasntDied'はどこに定義されていますか?コードを実行するときに、その出力と実際の出力を含めることができます。 – dave

+0

戦闘後に値(hp、characterHasntDiedなど)をリセットしますか?重要なコードをすべて提供してください(http://stackoverflow.com/help/mcveを参照)。たとえば、コードを分かりやすくするために、System.out.printlnsなどの値を変更していないコードの部分を削除します。 –

答えて

0

それはそれはいくつかのコードを思わ

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; 
     } 
+0

条件が満たされるとすぐにループを終了しますか?例えば、私の出力で: ATK = 6 + 4 = 10 ローグHPとゴブリンの攻撃は現在34である - = 11 - ATK 10 = 24 不正攻撃= 3 + 8 = 11 ゴブリンHPは現在14でありますATK = 6 + 4 = 10 ローグHPで3回の ゴブリン攻撃は現在24である - ここ= -8 **端11 - ATK = 3 + 8 = 11 ゴブリンHP 10 = 14回の 不正攻撃今3であります** \ nは **代わりに、ここで余分な敵の攻撃を可能にする** ATK = 6 + 4 = 10 ローグHPと ゴブリンの攻撃は今14から10まで4 ローグはゴブリン2敗北しました=******悪党対ゴブリンの戦い3 *** –

+0

休憩では、フォーラムを終了するので、あなたはそれを行う最初の反復:) –

+0

希望私の答えのヘルプを更新します。 –

関連する問題