【发布时间】:2012-11-04 16:10:42
【问题描述】:
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 变量是身体,我正在尝试比较头部是否撞到身体。
我对其进行了测试,它似乎可以工作,但是在我再次对其进行测试之后,它似乎只会在我让蛇在自己身上翻倍几个方格时才会发生碰撞。例如如果我垂直穿过身体,它不会检测到碰撞。
我也相当肯定这个方法在蛇每移动一个方块后被调用。
干杯, 肖恩。
P.S 睡眠很少,血液中的糖分过多,如果您需要进一步澄清,因为上述内容没有多大意义,请告诉我。
【问题讨论】: