0

我有一个 if 函数,每次 2 个对象相互重叠时执行,结果是 HP 应该只减少 1,但是只要它们重叠,HP 的值就会不断减少,所以它会从 3 直接变为0。

int HP = 3;

void collision ()
{
  for(int i = 0; i < balls.length; i++) 
  {
    if (dist(balls[i].bx,balls[i].by,X,Y)< 15)
    {
      HP-=1;
    }
  }
}
4

1 回答 1

0
int HP = 3;

void collision ()
{
   bool check = false;
   for(int i = 0; i < balls.length; i++) 
   {
      if ((dist(balls[i].bx,balls[i].by,X,Y)< 15) && check == false)
      {
         HP-=1;
         check = true;
      }
   }
}

选择:

int HP = 3;

void collision ()
{
   for(int i = 0; i < balls.length; i++) 
   {
      if ((dist(balls[i].bx,balls[i].by,X,Y)< 15))
      {
         HP-=1;
         break;
      }
   }
}

选择

每次循环只有一次:

int HP = 3;

void collision () {
   int temp = 0;
   for(int i = 0; i < balls.length; i++) {
      if ((dist(balls[i].bx,balls[i].by,X,Y)< 15)) {
         temp += 1;
      }
   }
   if (temp > 0) {
      HP = HP - 1;
   }
}
于 2013-01-06T14:34:26.987 回答