我有两个坐标对,存储为名为ap1 {x:x, y:y}
和ap2 {x:x, y:y}
的对象。
我正在尝试创建一个if语句,以查看它们是否恰好是以下之一:
到目前为止,以下是我的代码:
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))
但有了这个,正方形是另一个左下角或右上角的一个空格不会返回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))
答案 0 :(得分:1)
为了便于理解,您可以将条件分开:
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) {
}
答案 1 :(得分:0)
根据y
的顶部矩形和底部的矩形来查看它。然后,对于x
位置,它将与ap1
相同,或者与右侧或左侧相同。
if(((ap1.y == ap2.y + 1) || (ap1.y == ap2.y - 1)) // 1 above or bellow
&& (ap1.x == ap2.x - 1) || (ap1.x == ap2.x) || (ap1.x == ap2.x + 1)) // 3 rect points