2013-01-06 60 views
0

我有一個if函數,每次有2個對象相互重疊時執行,結果是HP應該只減1,但是HP的值一直下降,只要它們重疊,所以它會從3直爲0如何阻止if函數在處理中執行後執行?

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; 
    } 
    } 
} 
+1

用什麼語言? – Popnoodles

+0

處理程序設計語言 –

回答

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

替代

只有一次,每個TI我它循環:

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; 
    } 
} 
+0

如果我引用「boolean check = false;」,第一個在某種程度上起作用在我的代碼的頂部,而不是在void collision()中。但if函數在每次對象重疊時都不執行,它只執行一次。 –

+0

如果我理解正確,你希望if語句在整個循環中只能工作一次嗎?或者你的意思是它應該只在你每次循環時工作一次? –

+0

每次循環時只有一次。 –