无法使用相同的按键连接/断开两个方块

时间:2016-08-25 23:13:54

标签: java if-statement libgdx

我想这样做,以便当我当前班级的正方形与redSquare相邻时(右侧)时,我可以按SPACE连接两个正方形,这个正方形将跟随红色正方形而不断下一个它。 然后再次按SPACE将"断开"两个正方形,意味着这个正方形不再沿着redSquare。 但是,由于SPACE也用于将方块连接在一起,我认为代码只是不断重复,因此方块永远不会连接。

如何使用SPACE连接和断开连接?

Boolean isConnected = false;
    public void update() {
        if (position.x - redSquare.position.x == 40 && position.y == redSquare.position.y) {
            if (Gdx.input.isKeyJustPressed(Input.Keys.SPACE)) {
                isConnected = true;
            }
        }

        if (isConnected) {
            position.x = redSquare.position.x + 40;
            position.y = redSquare.position.y;
            if(Gdx.input.isKeyJustPressed(Input.Keys.SPACE)){
                isConnected = false;
            }
        }
    }

此外,作为附注,您是否建议您了解这些类型的"逻辑"问题

1 个答案:

答案 0 :(得分:1)

我会试试这个:

public void update() {
    if (Gdx.input.isKeyJustPressed(Input.Keys.SPACE)) {
        if (isConnected) {
            isConnected = false;
        }
        else if (isConnectable(redSquare.position)) {
            isConnected = true;
        }
    }

    if (isConnected) {
        position.x = redSquare.position.x + 40;
        position.y = redSquare.position.y;
    }
}

private boolean isConnectable(Vector2 pos) {
    if (position.x - pos.x == 40 && position.y == pos.y)
        return true;
    return false;
}

如果位置是“可连接的”,则无需检查每个周期,只需在按下SPACE时执行此操作。您的代码中的问题是您在一个周期中连接和断开连接,因为最终连接位置也是“可连接”位置