我创建了一个简单的RPG游戏,您可以在其中与怪物战斗。产生攻击的方式是通过生成一个随机数,并将最大值设为攻击统计数据。上课开始时,进攻状态宣告为0,但后来根据玩家选择的级别而设置为3个数字之一(10、15或20)。然后我用这条线来产生玩家的攻击:

charDamage = rand.nextInt(charAttackTotal) + 10;


但是当我运行它时,它给我一个错误,说n(charAttackTotal)必须为正。

这是我如何获取charAttackTotal的方法:

static int charAttackBase = 0;   this is what is set to 10,15, or20

static int charAttackMod = 0;    this is set by what weapons the player has

static int charAttackTotal = charAttackBase + charAttackMod - 10;


但是当我把它放在一个空的类中时,它就很好了。将这些变量声明在函数(方法)之外然后在方法内部使用是错误的吗?如果您想在这里查看链接,我已将所有代码放在pastebin上:

http://pastebin.com/RBMScyss
错误在第124行,如果您查看pastebin,则所有变量均在开头声明

最佳答案

只需声明

    static int charAttackTotal = charAttackBase + charAttackMod;


更改charAttackTotalcharAttackBase不会导致charAttackMod自动更新。每当您对其他变量进行更改时,都需要显式更新charAttackTotal

另一种方法是在需要时计算charAttackTotal,也许使用一个函数。

10-01 23:42