将两个Int变量与房间/边距进行比较以获得错误

Sha*_*neL 2 c# java int compare

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.
        }
  }

} 
Run Code Online (Sandbox Code Playgroud)

编辑:'Cells []'是一个Point类型的数组,noOfParts只是蛇有多少个段

主要问题

使用上面的代码,我试图将tempX与headX进行比较,但我想有一个错误的余地,例如+ -5,但我不确定如何实现这一点,我的理由背后是我想的可能是x和Y变量可能是相距几位数,所以如果我有蛇的一个段的半径(下面替换中的'蛇'的解释)那么如果我是对的并且值稍微偏离它仍然应该来回来积极.

要么

替代

如果有人能提出更好的方法吗?基本上它是一个Snake游戏,headX和headY是蛇的头部,细胞中剩下的X和Y变量是身体,我试图比较头部是否撞击身体.

我测试了它似乎工作但是在我再次测试它之后,似乎它只会拾取碰撞,如果我让蛇双回自己的几个方格.例如,如果我穿过身体垂直,它将无法检测到碰撞.

此外,我相当确定在蛇移动的每个块之后调用此方法.

干杯,沙恩.

PS在我的血液中运行很少的睡眠和过多的糖,如果你需要进一步的澄清,因为上面没有多少意义让我知道.

tuk*_*aef 8

int eps = 5;
if (Math.abs(tempX - headX) <= eps && Math.abs(tempY - headY) <= eps) { 
    // ...
}
Run Code Online (Sandbox Code Playgroud)