为什么这个Java网格无法正常运行?

时间:2014-07-11 18:47:27

标签: java video grid game-engine

我正在尝试创建一个块可以捕捉的网格(使用最少的代码)。我想要的是当鼠标在网格方块中时,块移动到该方块。我写的基本上说如果X或Y超出网格块乘以块的大小,则移动到下一个网格块。目前,此代码创建了一个3x3网格,但代码应该生成无限的网格空间。我不能在这个3x3网格之外移动块。

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值定义了块的位置和形状参数。

1 个答案:

答案 0 :(得分:0)

通过使用for循环来确定正网格增量! 新代码:

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

}