作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在制作一款类似卡牌的游戏。下面的方法处理对手的攻击。它应该检查对手的牌(它们之间有两秒的延迟)并执行他们的攻击(dealDamage() 返回伤害)。首先它应该检查当前对手是否处于 Activity 状态(即没有被杀死)以及是否已经攻击,如果是,则执行他们的攻击。之后,方法转移到下一个活跃的对手。在最后一轮之后,它应该停止迭代并更改为下一轮。虽然在第一轮中一切都按计划进行,但在第二轮或最后一轮(当只有一个对手处于 Activity 状态时)它经常崩溃。最多可以有 5 个对手。我显然错过了一些明显的事情,但我无法让它发挥作用。
编辑错误出现在 while(gm.opponentList.get(i).is available...例如,索引超出范围:索引 4 大小 4。
public void opponentAttack(){
this.registerUpdateHandler(new TimerHandler(2f, true, new ITimerCallback() {
int i = 0;
@Override
public void onTimePassed(TimerHandler pTimerHandler) {
if (i < gm.opponentList.size()) {
while (gm.opponentList.get(i).isAvailable == false
|| gm.opponentList.get(i).attacked == true) {
i++;
}
if (gm.opponentList.get(i).isAvailable == true
&& gm.opponentList.get(i).attacked == false) {
gm.negotiationStrength = gm.negotiationStrength - gm.opponentList.get(i).dealDamage();
i++;
}
if (gm.negotiationStrength < 1) {
gm.negotiationEnded = true;
gm.playersTurn = false;
}
i = 0;
}else{
pTimerHandler.setAutoReset(false);
}
}
}));
gm.nextRound();
}
最佳答案
while (gm.opponentList.get(i).isAvailable == false
|| gm.opponentList.get(i).attacked == true) {
i++;
}
如果从未满足退出条件,则不断增加 i
,当它超过 gm.opponentList
的大小时,会抛出 IndexOutBoundExcetion
。您可能想在 while 循环中检查 i
与 gm.opponentList.size()
关于java - TimeHandler 中抛出 IndexOutOf range 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29274495/
我正在制作一款类似卡牌的游戏。下面的方法处理对手的攻击。它应该检查对手的牌(它们之间有两秒的延迟)并执行他们的攻击(dealDamage() 返回伤害)。首先它应该检查当前对手是否处于 Activit
我是一名优秀的程序员,十分优秀!