对于循环,检查将相同的对

For loop, checking pairs that would be identical

本文关键字:检查 于循环 循环      更新时间:2023-10-16

我使用双for循环来循环我的对象列表,并检查我在位置I的机器人是否与在位置j的机器人发生碰撞。我成功地检查了ii、jj组合,但这些组合不应该完成,但我希望在I、j出现时处理j、I没有出现的问题。例如,(1,1)不应该发生,但它被检查为(1,4),但当它重新出现时,IDONT希望发生(4,1)。

想法:

我以为发生这种情况时会有一个临时状态,但当多个机器人发生多次碰撞时,它就会爆炸。有什么办法可以避免这个问题吗?我的问题不是关于模块化或使用双for循环。

   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]);
            }
         }
      }
   }

只需将内部循环更改为

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

并去掉CCD_ 1语句。

通过这些修改,代码将只考虑(i, j)对,使得i < j