0

2つのオブジェクトが互いにオーバーラップするたびに実行されるif関数があり、その結果、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;
      }
   }
}

ループするたびに1回だけ:

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 に答える