2017-11-29 9 views
2

私は完全にプログラミングに新しいです、私はクラスのためのプログラムを作っていました。プロジェクトのために、私は「自ら指導」プログラムを作る必要があります。私は簡単なプログラムを作りたがっていました。私は戦闘シミュレータが欲しかった!だからプログラムのポイントはこれを行うことです: あなたを紹介し、戦いを開始します。攻撃は完全に無作為で、5人のうち1人が0馬力に達するまで、あなたと "敵"の戦いが行われます。私はプログラムを終了し、あなたとあなたの敵の健康を表示し、あなたが勝ったかどうかを教えてください。かなりシンプルですが、特に私が学んだプログラミングの欠如を考えるよりも難しいです。私はちょうどそれを修正するか、またはそれを簡素化するために必要がありますもしあなたが助けることができれば、情報をありがとう!以下のコード:私のプログラムは何度も必要以上にループしていますか?

import java.util.Scanner; 

public class TG_UN4EX13 { 

    public static void main(String[] args) { 
     Scanner scan = new Scanner(System.in); 

     String rumble = "startvalue"; 

     System.out.println("Welcome to the Ultimate Battle Game!"); 
     System.out.println("Have Fun!"); 

     // Attack Section // 
     int attack1 = 5; 
     int attack2 = 10; 
     int attack3 = 20; 
     int attack4 = 40; 
     int cower = 0; 

     // Character Section// 
     int playerhealth = 100; 
     // Character Section// 

     // Enemy Section// 
     int enemyhealth = 100; 
     // Enemy Section// 

     while (playerhealth >= 0 || enemyhealth >= 0 || rumble.equalsIgnoreCase("Yes")) { 
      int attacknumber = (int) (Math.random() * (5 - 1 + 1) + 1); 
      int attacknumber2 = (int) (Math.random() * (5 - 1 + 1) + 1); 

      if (attacknumber == 1) { 
       enemyhealth = enemyhealth - attack1; 
       System.out.println("You used Punch!"); 
       System.out.println("You did " + attack1 + " damage! \n"); 
      } else if (attacknumber == 2) { 
       enemyhealth = enemyhealth - attack2; 
       System.out.println("You used Kick!"); 
       System.out.println("You did " + attack2 + " damage! \n"); 
      } else if (attacknumber == 3) { 
       enemyhealth = enemyhealth - attack3; 
       System.out.println("You used Jab!"); 
       System.out.println("You did" + attack3 + " damage! \n"); 
      } else if (attacknumber == 4) { 
       enemyhealth = enemyhealth - attack4; 
       System.out.println("You used Roundhouse Kick!"); 
       System.out.println("You did " + attack4 + " damage! \n"); 
      } else if (attacknumber == 5) { 
       enemyhealth = enemyhealth - cower; 
       System.out.println("You cowered in fear!"); 
       System.out.println("You did " + cower + " damage! \n"); 
      } 

      if (attacknumber2 == 1) { 
       playerhealth = playerhealth - attack1; 
       System.out.println("They used Punch!"); 
       System.out.println("They did " + attack1 + " damage! \n"); 
      } else if (attacknumber2 == 2) { 
       playerhealth = playerhealth - attack2; 
       System.out.println("They used Kick!"); 
       System.out.println("They did " + attack2 + " damage! \n"); 
      } else if (attacknumber2 == 3) { 
       playerhealth = playerhealth - attack3; 
       System.out.println("They used Jab!"); 
       System.out.println("They did " + attack3 + " damage! \n"); 
      } else if (attacknumber2 == 4) { 
       playerhealth = playerhealth - attack4; 
       System.out.println("They used Roundhouse Kick!"); 
       System.out.println("They did " + attack4 + " damage! \n"); 
      } else if (attacknumber2 == 5) { 
       playerhealth = playerhealth - cower; 
       System.out.println("They cowered in fear!"); 
       System.out.println("They did " + cower + " damage! \n"); 
      } 

      System.out.println("You have " + playerhealth + " health!"); 
      System.out.println("They have " + enemyhealth + " health! \n"); 

     } 

     if (playerhealth > enemyhealth) { 
      System.out.println("You won!"); 
      System.out.println("Do you want to play again?"); 
      rumble = scan.nextLine(); 
     } else { 
      System.out.println("You lost!"); 
      System.out.println("Do you want to play again?"); 
      rumble = scan.nextLine(); 
     } 

     if (rumble.equalsIgnoreCase("no")) { 
      System.out.println("Well, goodbye!"); 
      System.exit(0); 
     } 

    } 
} 

P.S.これは簡単な編集ですが、ここに例があります:

健康は20です!彼らは20の健康を持っています!

あなたはJab!を使用しました。あなたはダメージ20でした!

ラウンドハウスキックを使用しました!彼らは40のダメージを与えた!

健康は-20です!彼らは0健康を持っています!

あなたはJab!を使用しました。あなたはダメージ20でした!

ラウンドハウスキックを使用しました!彼らは40のダメージを与えた!

あなたは-60の健康を持っています。彼らは-20健康を持っています!

あなたは紛失しました。もう一度遊びたいですか?

+2

コードでさらに移動する前に、IDEのツールを使用してコードを適切に書式設定/インデントします。今のところ、多くの小さな間違いを隠すのに役立つのは読めません。編集:私はあなたの例を書式化しましたが、将来はすべてのプロジェクトで自分自身でそれをやろうとします。 – Pshemo

+0

また、毎回の攻撃の後に健康状態が0であるかどうかを確認して、最近死亡した人に当たっていないようにする必要があります。 – Berdesdan

+0

@Berdesdanあなたがテストする必要がある理由;-) – bated

答えて

3

私は肯定的ではないんだけど、私はあなたが変更する必要があるかもしれないと思う:

while((playerhealth>0 && enemyhealth>0) || rumble.equalsIgnoreCase("Yes"))

while(playerhealth>=0 || enemyhealth>=0 || rumble.equalsIgnoreCase("Yes"))

健康が=0であれば、それは再び実行し、その削除されます=同様に

+0

これは私のために働いた!どうもありがとうございます!幸いなことに私はまだ勉強していて、本当に助けになりました。 –

1

ループの条件を見てください。あなたが "次の条件のいずれかのが真であるながら戦い続ける"、言っている

while (playerhealth >= 0 || enemyhealth >= 0 || rumble.equalsIgnoreCase("Yes")) { 
    //do stuff 
} 

  1. プレーヤーの健康は、正

  2. 敵の健康が正である

  3. ランブル=はい

ここでループを終了するには(ゲームを終了するために)何が必要か考えてみましょう。

  1. プレーヤー:あなたが「次のすべてに該当する場合に戦っ停止」、であるそれらの条件の反対をしたいので、ループを終了

    は、ループ内で滞在の反対であります健康が0未満

  2. 敵の健康は0未満の

  3. ランブルです!=はい

プレイヤーと敵の両方が負の健康を持っている、またはプレイヤーや敵のどちらかが負の健康を持っている場合?それが終了する必要があるときにのみ、最後まで戦いのために意味しますか

関連する問題