質問: 60; } Hero h1 =new Hero(); void status() { System.out.println("敵"+this.name1+"\nHP"+this.hp1+"\nlevel"+this.level1); } void appaer() { System.out.println(this.name1+"レベル"+this.level1+"現れた!"); } void atack() { h1.hp=40; System.out.println(this.name1+"の攻撃"); System.out.println("毒ガス攻撃により"+h1.name+"のhpは40減少した!"); } void escape() { System.out.println(this.name1+"逃げて行った"); } } //RPGゲームの敵役クラス といったソースコードになります。ネットで検索してみましたがメモリーの使用上限を超えた際に出るエラーとの情報は得られましたがはっきりとした解決策が出てこずこの場を借りてご質問させていただきます。お忙しい中とは思いますが、どなたかアドバイスをよろしくお願いいたします。
回答: ヒーローを new すると、インスタンス変数として敵が new され、 敵を new すると、インスタンス変数としてヒーローが new され、 これが無限に繰り返されますね。 まさに憎しみの連鎖ですね。 Enemy1k のインスタンス変数 Hero h1 は外部から与える、とかすると、とりあえず動くと思います。 ``` public class Enemy1k { String name1; int hp1; final int level1 =5; Hero h1; Enemy1k(Hero hero){ this.name1 = "毒キノコ"; this.hp1 = 60; this.h1 = hero; } ``` ``` Hero h1 = new Hero(); Enemy1k e1 = new Enemy1k(h1); ``` 本当は attack メソッドの引数に攻撃対象として Hero とか Enemy1k のインスタンスを渡すのが良いと思いますが、そのへんは頑張ってください。 (atack はスペルミスです。)