0

理由はわかりませんが、これはうまくいかないようです。

基本的には、player1($playerX, $playerY)が player2 から 1 マス以内にある場合、これが true になるようにしたい($rs[x], $rs[y])

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

私が間違っていることは何か分かりますか?

4

3 に答える 3

0

OR演算子により、条件はtrueになります

if (($rs[x] > $playerX-2 && $rs[x] < $playerX+2) && ($rs[y] > $playerY-2 && $rs[y] < $playerY+2)) {
   //your code
}
于 2012-04-07T01:18:29.490 に答える
0

いくつかのテスト値に置き換えると、次のようになります。

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

明らかに、これは常に真実です。

&&この場合の代わりに使用する必要がありますor

于 2012-04-07T01:16:36.400 に答える
0

に置き換えるだけの場合orですand。ボーナス ポイントの if ステートメントをより適切に記述する方法を次に示します。

if(abs($playerX - $rs[x]) < 2 && abs($playerY - $rs[y]) < 2) {
    // code
于 2012-04-07T01:17:15.887 に答える