2

と という名前のオブジェクトとして保存されている 2 つの座標ペアがap1 {x:x, y:y}ありap2 {x:x, y:y}ます。if ステートメントを作成して、次のいずれかであるかどうかを確認しようとしています。

  • 1つは、他の方向から斜めの1つのスペースです
  • 1つは他のスペースの上または下の1つのスペースです

これまでのところ、以下は私のコードです:

if((ap1.x == ap2.x &&(ap1.y == ap2.y + 1 && ap1.x == ap2.x || ap2.y == ap1.y + 1)) 
   || (ap1.x == ap2.x + 1 && ap1.y == ap2.y + 1) 
   || (ap2.x == ap1.x + 1 && ap2.y == ap1.y + 1)
   || (ap1.x == ap2.x - 1 && ap1.y == ap2.y - 1) 
   || (ap2.x == ap1.x - 1 && ap2.y == ap1.y - 1))

しかし、これでは、別の左下または右上に 1 つのスペースである正方形は true を返しません。この機能を希望どおりにするにはどうすればよいですか? ここに画像があります:

コードの別の変更を試みましたが、どちらも機能しません。

if(ap1.y == ap2.y + 1||ap1.y == ap2.y - 1||(ap1.x == ap2.x + 1 && ap1.y == ap2.y + 1)||(ap1.x == ap2.x - 1 && ap1.y == ap2.y - 1))
4

2 に答える 2

2

理解を容易にするために、次のように条件を分離できます。

var aboveOrBelow = ap1.y == ap2.y + 1 || ap1.y == ap2.y - 1;
var leftToRight = ap1.x >= ap2.x - 1 && ap1.x <= ap2.x + 1;

if (aboveOrBelow && leftToRight) {
}
于 2014-06-21T11:57:17.917 に答える