【发布时间】:2019-04-02 17:05:35
【问题描述】:
目前,我们正在开发一款射击游戏。我们有针对子弹和敌人的课程。我们还创建了两个数组列表,可以在其中找到这些元素。每当子弹击中敌人时,该敌人就会消失。相反,我们得到了这个错误。
void hit()
{
for(int i = 0; i < Bullet.size(); i++)
{
Bullet bul = (Bullet) Bullet.get(i);
Enemy enm = (Enemy)enemies.get(i);
if(bul.x < enm.x + enm.l && bul.x > enm.x - enm.l && enm.y<bul.y)
{
enm.health -= 1;
println("Pew");
if(enm.health <= 0)
{
enm = null;
enemies.remove(i);
}
}
}
}
【问题讨论】:
-
为什么要使用
i变量来循环两个单独的列表?您不需要两个单独的索引吗?另外请发布minimal reproducible example,而不是断开连接的sn-p。 -
您是否查看过此错误以了解其含义?你试过调试吗?
-
正如上面所指出的,代码正在访问具有相同索引的两个数组。您可以这样做,但您需要添加一个保护以确保索引在范围内。但是..您可能真的不想在两个数组上使用相同的索引..也许您想循环通过每颗子弹的所有敌人?请参阅:stackoverflow.com/questions/5554734/… 如果您仍有问题,则可以编辑以提出您的具体问题。
标签: java arraylist processing