2017-06-09 12 views
-1

単純なテキストベースのゲームを作成していますが、途中で例外/エラーが発生しました。 私は3つのクラスを持っています。一つはMainと呼ばれるクラスであり、一つはMageと呼ばれるクラスです。一つはWarriorというクラスです。2つのオブジェクトが互いにインスタンス化しているときの例外

したがって、プレイヤーが能力を使用するゲームでは、他のプレイヤーのヘルスポイントを証明書の量だけ減らします。

したがって、player1がこの場合Fireballでabilitiesを使用すると、WarriorクラスのreduceHPメソッドが呼び出され、player2のHPが44だけ減少します。reduceHPメソッドは、渡された数値を取り、プレーヤーのヘルスポイント。

Warrior player2 = new Warrior(); 

public void FireBall(){ 

player2.reduceHP(44); 

} 

メイジクラスでも同じことが起こります。それは65

Mage player1 = new Mage(); 

public void Stab(){ 

player1.reduceHP(65); 


} 

によってplayer2のHPを減らしabbility player1は戦士を使用すると今の問題は、私はメインクラスでこれらabbility/abbilities(刺しと火の玉)を呼び出すときに、私は次のエラー

を取得しています
at Warrior.<init>(Warrior.java:4) 
at Mage.<init>(Mage.java:4) 
at Warrior.<init>(Warrior.java:4) 
at Mage.<init>(Mage.java:4) 
at Warrior.<init>(Warrior.java:4) 
at Mage.<init>(Mage.java:4) 
at Warrior.<init>(Warrior.java:4) 
at Mage.<init>(Mage.java:4) 
at Warrior.<init>(Warrior.java:4) 
at Mage.<init>(Mage.java:4) 
at Warrior.<init>(Warrior.java:4) 
at Mage.<init>(Mage.java:4) 
at Warrior.<init>(Warrior.java:4) 

ETC... it keeps on going 

なぜこれが起こるのでしょうか?これを行う別の方法がある場合は、私はJavaにはかなり新しいので、私に知らせてください。すべての助けをありがとう、それは非常に高く評価されています、そして、私はこれがここで尋ねる本当にばかな質問ではないことを願っています。

+2

完全なクラスを追加してください – Jens

答えて

0

あなたはMainクラスのプレーヤーをインスタンス化し、setterによって参照を渡す必要があります。このようにして、各オブジェクトのインスタンスが1つずつ作成され、相互に参照されます。

+0

ああ大丈夫ですね。しかし、この質問とは何の関係もありません。私がMageクラスのWarriorクラスをインスタンス化すると、方法で参照変数を使用するとWarriorクラスのメソッドしか使用できません。他の場所で参照変数を使用し、Warriorクラスとメソッド/そのクラスにある変数にアクセスしようとすると何も出ません。 –

+1

コメントで質問しないでください。そのための新しい質問を作成します。 –

1

2つのフィールドplayer1player2が問題になります。プレイヤー1とプレイヤー2の2つのオブジェクトを正確に作成したいと考えています。代わりに、(暗黙の)コンストラクター内に無限の数のオブジェクトを作成しています。

私はあなたが初心者だと思うので、ここでは詳しく説明しません。この問題を解決するには、2人のプレーヤーについて知っている第3のクラス(おそらくGameという名前)を作成したいと思うかもしれません。

関連する問題