public void checkForCollision () {
int headX = cells[0].x;
int headY = cells[0].y;
int noOfParts = nPoints;
for(int i = 1; i <noOfParts;i++)
{
int tempX = cells[i].x;
int tempY = cells[i].y;
if(tempX == headX && tempY == headY){
JOptionPane.showMessageDialog(null,"Head hit body");
//EndGameCollectScore etc.
}
}
}
编辑:'Cells[]' 是 Point 类型的数组,noOfParts 是蛇有多少段
主要问题
使用上面的代码,我试图将 tempX 与 headX 进行比较,但我希望有一定的误差余量,例如 +-5 但我不确定如何实现这一点,我的理由是我在想可能是 x 和Y 变量可能相差几位数,所以如果我有蛇的一段的半径(下面备用中“蛇”的解释),那么如果我是对的并且值有点偏离它应该仍然会出现回正。
或者
选择
如果有人可以提出更好的方法来做到这一点?基本上它是针对蛇游戏的,headX 和 headY 是蛇的头部,而 Cells 中剩余的 X 和 Y 变量是身体,我试图比较头部是否撞到身体。
我测试了它,它似乎可以工作,但是在我再次测试它之后,它似乎只会在我让蛇在自己身上翻倍几个方格时才会发生碰撞。例如,如果我垂直穿过身体,它将不会检测到碰撞。
我也相当肯定,在蛇移动的每个块之后都会调用此方法。
干杯,谢恩。
PS 睡眠很少,血液中的糖分过多,如果您需要进一步澄清,因为上述内容没有多大意义,请告诉我。