2012-04-07 8 views
0

Ich weiß nicht warum, aber das scheint nicht zu funktionieren. Grundsätzlichphp im Vergleich 2 Co-Orden

Ich möchte dies um wahr zu sein, wenn die player1 ($playerX, $playerY) innerhalb eines Quadrats von player2 ist ($rs[x], $rs[y])

if (($rs[x] > $playerX-2 or $rs[x] < $playerX+2) && ($rs[y] > $playerY-2 or $rs[y] < $playerY+2)) { 
    // code 

Jede Idee, was ich falsch mache?

+0

ersetzen oder mit und – hakre

Antwort

0

Wenn Sie mit einigen Testwerte ersetzen, könnten Sie erhalten:

if((3 > 5 or 3 < 9) && (13 > 15 or 13 < 19)) 

Natürlich ist dies immer der Fall ist.

Sie sollten && statt or in diesem Fall verwenden.

+0

im solchen tit, Dank – user1022585

0

Es ist nur ein Fall von or mit and ersetzen. Hier ist ein sauberere Weg, um Ihre Schreibweise if-Anweisung für Bonuspunkte:

if(abs($playerX - $rs[x]) < 2 && abs($playerY - $rs[y]) < 2) { 
    // code 
0

Ihrer Bedingungen am Ende auf wahr aufgrund des OR-Operator

if (($rs[x] > $playerX-2 && $rs[x] < $playerX+2) && ($rs[y] > $playerY-2 && $rs[y] < $playerY+2)) { 
    //your code 
} 
Verwandte Themen