所以我创建了一个简单的基于文本的游戏,但我在此过程中想出了异常/错误。 我有3个类,一个是名为Main的类,一个是名为Mage的类,另一个是名为Warrior的类。
因此,在游戏玩家使用能力时,它会降低其他玩家的健康点数。
因此,当player1使用abbility时,例如在这种情况下,Fireball会调用Warrior类中的reduceHP方法,将player2的HP减少44.方法reduceHP获取传入的数字并将其从健康状态中减去球员的分数。
Warrior player2 = new Warrior();
public void FireBall(){
player2.reduceHP(44);
}
同样的事情发生在Mage类中。当player1使用Warrior abbility时,它会将player2的HP降低65。
Mage player1 = new Mage();
public void Stab(){
player1.reduceHP(65);
}
现在的问题是,当我在主类中调用这些abbility / abbilities(stab和fireball)时,我得到以下错误
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很新。感谢所有的帮助,非常感谢,我希望这不是一个非常愚蠢的问题。
答案 0 :(得分:1)
问题是两个字段player1
和player2
。我想你想要有两个对象,一个用于Player 1,一个用于Player 2.相反,你在(隐式)构造函数中创建了无数个对象。
我猜你是初学者,所以我不会在这里讨论细节。要解决这个问题,您可能想要创建一个知道这两个玩家的第三个类(可能名为Game
?)。
答案 1 :(得分:0)
您应该在Main
类中实例化玩家,然后通过setter传递对它们的引用。这样,每个对象都有一个实例,它们将互相引用。