我使用双循环来遍历我的对象列表并检查我的位置i处的机器人是否与位置j处的机器人相撞。我成功地检查了ii,jj组合并且那些不应该被完成,但我想要处理当i,j出现j时,我没有发生。例如,(1,1)不应该发生,然后检查(1,4),但是当它重新通过时,我不要想要(4,1)发生。
思考:
当发生这种情况时,我认为暂时保留,但是当多个机器人之间发生多次碰撞时会发生爆炸。有没有办法避免这个问题?我的问题不是关于模块化或使用双循环。
for(int i = 0; i < count; i++)
{
for(int j = 0; j < count; j++)
{
if(i != j)
{
if(vbot[i]->CollidedWith(vbot[j]))
{
vbot[i]->DoBattleWith(vbot[j]);
}
}
}
}
答案 0 :(得分:1)
只需将内循环更改为
for(int j = i + 1; j < count; j++)
并删除if
语句。
通过这些修改,代码只会考虑(i, j)
对i < j
。