質問: enemyname; } } ```
回答: ※あくまで興味本位で作ったものです。 =================== なのでコードに対して解説はしません。(もともと丸投げ質問なので) コードを見て気になったこと。 * HPとNameしか持ってないなら個別クラスは用意しなくて良い。大きくなったら別途親クラスもって継承させるとかになるんじゃないかな。 * 「ダメージを与えた」という文言だけで実際にHP減らしてないから延々と終わらない * breakはswitch抜けるだけでは? * whileの終了条件はどっちかのHPが0以下になったときだけ?「逃げ出した」じゃ終わらないの? * 要件としてはBraverは先行で且つ2回連続行動できるということでしょうか。1回行動だけだと毎回魔法使ってもEnemyには勝てない。 * 残HP表示ないと次の行動考えられないのでは。 下記は興味本位で作っただけのコードです。 ざっと作ってざっと確認しただけなのでどこかおかしいところあるかもしれませんが、冒頭に書いたとおり解説はしませんので自身で修正してください。それも勉強になるでしょう。 **これで動いたからって分かった気にならないように気をつけてください。** 本当に全て理解して自分でヒント無しで組めるようになってから「解決済み」としていただきたいのが本音です。 Main.java ``` import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws IOException { Character Braver = new Character(100, "Braver"); Character Enemy = new Character(100, "Enemy"); System.out.println("敵に遭遇しました。"); boolean fin = false; //終了フラグ while (!fin) { for (int i = 0; i < 2; i++) { System.out.println(Braver.getName() + "の行動1:たたかう 2:まほう 3:にげる"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int num = Integer.parseInt(br.readLine()); switch (num) { case 1: System.out.println("たたかう"); System.out.println(Enemy.getName() + "に10のダメージを与えた"); Enemy.setHP((Enemy.getHP() - 10)); if (Enemy.getHP() <= 0) { fin = true; } break; case 2: System.out.println("魔法"); System.out.println(Enemy.getName() + "に20のダメージを与えた"); Enemy.setHP((Enemy.getHP() - 20)); if (Enemy.getHP() <= 0) { fin = true; } break; case 3: System.out.println("にげる"); System.out.println(Braver.getName() + "は逃げ出した"); return; default: System.out.println(Braver.getName() + "は何もしなかった"); } nowHp(Braver,Enemy); } if (!fin) { System.out.println(Enemy.getName() + "の行動"); System.out.println(Enemy.getName() + "の攻撃"); System.out.println(Braver.getName() + "に25のダメージ"); Braver.setHP((Braver.getHP() - 25)); nowHp(Braver,Enemy); } if (Braver.getHP() <= 0) { fin = true; } } if (Enemy.getHP() <= 0) { System.out.println(Enemy.getName() + "をやっつけた"); } if (Braver.getHP() <= 0) { System.out.println(Braver.getName() + "は倒された"); } } static void nowHp(Character Braver,Character Enemy) { System.out.println(Braver.getName() +" 残HP:"+Braver.getHP()); System.out.println(Enemy.getName() + "残HP:"+Enemy.getHP()); } } ``` Character.java ``` public class Character { Character(int hp,String name){ this.setHP(hp); this.setName(name); } private int HP = 0; private String Name = ""; public int getHP() { return HP; } public void setHP(int hp) { HP = hp; } public String getName() { return Name; } public void setName(String name) { Name = name; } } ```