2014-07-11 8 views
0

블록을 스냅 할 수있는 격자 (최소 코드 사용)를 만들려고합니다. 내가 원하는 것은 마우스가 격자 사각형에있을 때 블록이 그 사각형으로 움직일 때입니다. 필자가 본질적으로 말한 것은 X 또는 Y가 블럭 크기와 블럭 크기를 넘어서는 경우 다음 격자 블럭으로 이동한다는 것입니다. 현재이 코드는 3x3 격자를 생성하지만 코드는 무한한 격자 공간을 생성해야합니다. 이 3x3 격자 바깥으로 블록을 이동할 수 없습니다.이 Java 그리드가 제대로 작동하지 않는 이유는 무엇입니까?

public class Player extends Entity { 
public Player(double entSize, boolean collideA, boolean collideB, double x, double y) { 
    super(entSize, collideA, collideB, x, y); 
} 
public void init() { 
    Texture texFile = loadTexture("stone"); 
    texture(false, true); 
    texFile.bind(); 
    render(); 
} 
void input() { 
    int gridPosX = 1; 
    int gridPosY = 1; 
     if(getX() > gridPosX*entSize) { 
      gridPosX += 1; 
     } if(getX() < gridPosX*entSize) { 
      gridPosX -= 1; 
     } if(getY() > gridPosY*entSize) { 
      gridPosY += 1; 
     } if(getY() < gridPosY*entSize) { 
      gridPosY -= 1; 
     } 
     this.x = gridPosX*entSize; 
     this.y = gridPosY*entSize; 
} 

} X 및 Y 값은 블록의 위치와 형상 파라미터를 정의 무엇.

+0

당신은 gridPosX를 수정하는 의미합니까? 대신에 else-if를 사용하는 방법을 고려할 수 있습니다. – Karan

+0

Mouse.getX()가 현재 격자 공간의 최대 X (gridSpace * entSize는 사각형이기 때문에)보다 클 때마다 gridPosX를 업데이트하려고합니다. –

+0

이것은 구현에 따라 다를 수 있지만 gridPosX와 Y는 항상 1로 초기화되기 때문에 0 ~ 2까지만 변하므로 3x3 문제가 발생할 수 있습니다. – Karan

답변

0

포지티브 그리드 단위로 for 루프를 사용하여 고정! NEW CODE : 당신이 다음 상태를 확인하기 전에

public class Player extends Entity { 
public Player(double entSize, boolean collideA, boolean collideB, double x, double y) { 
    super(entSize, collideA, collideB, x, y); 
} 
public void init() { 
    Texture texFile = loadTexture("stone"); 
    texture(false, true); 
    texFile.bind(); 
    render(); 
} 
void input() { 
    int gridPosX = 0; 
    int gridPosY = 0; 
     for(gridPosX = 0; getX() > gridPosX*entSize; gridPosX++) { 
      gridPosX += 0; 
     } if(getX() < gridPosX*entSize) { 
      gridPosX -= 1; 
     } for(gridPosY = 0; getY() > gridPosY*entSize; gridPosY++) { 
      gridPosY += 0; 
     } if(getY() < gridPosY*entSize) { 
      gridPosY -= 1; 
     } 
     this.x = gridPosX*entSize; 
     this.y = gridPosY*entSize; 
} 

}

관련 문제