0
我目前正在用java編寫一些簡單的蛇遊戲。蛇的物體有一個裝滿身體部分的陣列。這些bodyparts都包含一個矩形。用自己的蛇碰撞檢測
蛇的更新方法是這樣的:
public void update() {
if(isMoving) {
if(System.currentTimeMillis() - moveTimer > moveSpeed) {
if(parts.get(0).getX()+dx*size >= 0+GameView.GRID_PADDING_LEFT && parts.get(0).getY()+dy*size >= 0+GameView.GRID_PADDING_TOP && parts.get(0).getX()+dx*size <= ((GameView.GRID_WIDTH-1)*size)+GameView.GRID_PADDING_LEFT && parts.get(0).getY()+dy*size <= ((GameView.GRID_HEIGHT-1)*size)+GameView.GRID_PADDING_TOP) {
for(int i = parts.size()-1; i > 0; i--) {
parts.get(i).setLocation((int)(parts.get(i-1).getX()), (int)(parts.get(i-1).getY()));
}
parts.get(0).setLocation(parts.get(0).getRect().left+dx*size, parts.get(0).getRect().top+dy*size);
moveTimer = System.currentTimeMillis();
}else {
die();
}
}
}
}
於一身,蛇移動它的頭部成DX方向倍一個cellspace(大小) - > DX *尺寸和dy *的大小。 然後身體的其他部分移動,頭部後面的部分獲得頭部的座標,該部分後面的部分從他面前的部分獲得coodrinates等
現在我試圖實現一些碰撞與蛇本身。我試過多種方法,例如:
if(parts.size() > 2) {
for(int i = 3; i < parts.size(); i++) {
if(parts.get(0).getRect().intersect(parts.get(i).getRect())) {
die();
}
}
}
但只要身體部分陣列達到2份的限制,模具()方法被調用。我不知道爲什麼,因爲第二部分應該坐在頭後面的兩個身體部位,這使得不可能與頭部矩形相交。
我的問題在哪裏?