Я использую цикл double для цикла, чтобы перебирать список объектов и проверять, что мой бот в позиции я столкнулся с ботом в позиции 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]);
}
}
}
}
Просто измените внутренний цикл на
for(int j = i + 1; j < count; j++)
и избавиться от утверждения if
.
С этими изменениями код будет рассматривать только пары (i, j)
такие, что i < j
.