前提・実現したいこと
敵のHPを0にして終わりたい
発生している問題・エラーメッセージ
int enemy_hp = 1000;のところを1000ではなく、100にした場合敵のHPを削り切れることがあるのですが、
1000だと削れ切れずに途中でfor文のループが終わることが多いです。
一応コンパイルも通りますし、実行もできます。
該当のソースコード
import java.util.*;
public class memo{
public static void main(String[] args){ System.out.println("名前を入力してください"); String name =new java.util.Scanner(System.in).next(); System.out.println("好きな食べ物を2つ入力してください"); String food1 =new java.util.Scanner(System.in).next(); String food2 =new java.util.Scanner(System.in).next(); System.out.println(""); int enemy_hp = 1000; for(int i = 0;i < enemy_hp;i++){ enemy_hp -= attack(name); if(enemy_hp < 0){ System.out.println("敵のHPは残り" + 0 + "です");//敵の体力を0で終わらせるコード }else{ System.out.println("敵のHPは残り" + enemy_hp + "です"); } System.out.println(""); }//繰り返して敵の体力を削る System.out.println(""); System.out.println(name + "は敵を倒した"); System.out.println(""); System.out.println("敵は宝箱を落とした"); System.out.println(""); chest(name, food1, food2); } public static int attack(String player){ System.out.println(player + "はモンスターを攻撃した"); int rand = (int)(Math.random()* 7 + 1);//1~7までのサイコロ if(rand == 1){ int miss = 0; System.out.println(miss + "のダメージ!攻撃失敗!"); return miss; }else if (rand == 7){ int critical = 100; System.out.println("急所に当たった!"+ critical + "のダメージを与えた"); return critical; }else { int dmg = (int)(Math.random()* 50 + 1);//1~50のダメージ System.out.println(dmg + "のダメージを与えた"); return dmg; } } public static void chest(String player, String fd1, String fd2){ ArrayList<String> box = new ArrayList<>(Arrays.asList("塩タン")); box.add(fd1); box.add(fd2); Collections.shuffle(box); System.out.println(player + "は宝箱から" + box.get(0) + "を手に入れた"); }
}
試したこと
mainメソッドのfor文の条件式あたりが怪しいと思っていろいろいじってみたのですがうまくいきませんでした。助けてください。
補足情報(FW/ツールのバージョンなど)
・sakuraエディター
・コマンドプロンプト
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/05/08 15:22