我创建了一个简单的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;
更改
charAttackTotal
或charAttackBase
不会导致charAttackMod
自动更新。每当您对其他变量进行更改时,都需要显式更新charAttackTotal
。另一种方法是在需要时计算
charAttackTotal
,也许使用一个函数。