对于循环,检查相同的对

时间:2014-10-20 21:11:04

标签: c++ visual-c++ for-loop

我使用双循环来遍历我的对象列表并检查我的位置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]);
            }
         }
      }
   }

1 个答案:

答案 0 :(得分:1)

只需将内循环更改为

  for(int j = i + 1; j < count; j++)

并删除if语句。

通过这些修改,代码只会考虑(i, j)i < j