Hero
クラスのattack
メソッドでmonster.name
を参照したいのですがデフォルトコンストラクタの初期値であるnull
となってしまい同様にmonster.hp
も0
となります。Goblin
クラスのrun
メソッドのthis.name
はゴブリン
を参照できているので指定の方法が悪いのでしょうか?
java
1nullに6ダメージを与えた 2-6 3ゴブリン Aは、必死に逃げ出した! 4ゴブリン Bは、必死に逃げ出した!
上の結果のnull
にGoblin A
と表示させたうえで現在のhp
からランダムで算出した値を引いてダメージ計算をしたいです。Goblin
クラスをインスタンス化してname
とhp
に値を代入したあと参照するにはどうすればいいのでしょうか?
java
1public class Hero { 2 int hp; 3 String name; 4 5 public int attack(Monster monster) { 6 int damage = (int) (Math.random() * 10); 7 System.out.println(monster.name + "に" + damage + "ダメージを与えた"); 8 9 int monsterHpNow = monster.hp - damage; 10 11 return monsterHpNow; 12 } 13}
java
1public abstract class Monster { 2 int hp; 3 String name; 4 5 public abstract void run(); 6}
java
1public class Goblin extends Monster { 2 String name = "ゴブリン"; 3 int hp = 10; 4 5 public Goblin(String name) { 6 this.name = this.name + " " + name; 7 } 8 9 public void run() { 10 System.out.println(this.name + "は、必死に逃げ出した!"); 11 } 12}
java
1public class Main { 2 3 public static void main(String[] args){ 4 Goblin goblinA = new Goblin("A"); 5 Monster goblinB = new Goblin("B"); 6 Hero hero = new Hero(); 7 8 int testPrint = hero.attack(goblinA); 9 System.out.println(testPrint); 10 goblinA.run(); 11 goblinB.run(); 12 } 13}
回答4件
あなたの回答
tips
プレビュー