没有正确检测颜色Java

时间:2018-06-10 00:00:06

标签: java

我现在正在12年级,我正在为计算机科学课打造Pacman游戏。

到目前为止我所拥有的是一个名为Play.java的文件来运行实际的游戏。我有一个init方法来初始化精灵表,图像和动画。然后我有一个render方法在屏幕上绘制迷宫和吃豆人。最后,我有一个update方法,几乎​​可以更新屏幕上的内容。

这就是update函数中的内容:

public void update(GameContainer gc, StateBasedGame sbg, int delta) throws SlickException {
        pacman.update(delta);

        Input input = gc.getInput();

        Color walls;

        if(input.isKeyDown(Input.KEY_UP)) {
            walls = maze.getColor((int) pacmanPosX, (int) pacmanPosY - 2);
            if (walls.getRed() == 0 && walls.getGreen() == 0 && walls.getBlue() == 0) {
                pacman = pacmanAnimation[2];
                pacmanPosY -= delta * .1f;
            }
        } else if(input.isKeyDown(Input.KEY_DOWN)) {
            walls = maze.getColor((int) pacmanPosX, (int) pacmanPosY + 20);
            if (walls.getRed() == 0 && walls.getGreen() == 0 && walls.getBlue() == 0) {
                pacman = pacmanAnimation[3];
                pacmanPosY += delta * .1f;
            }
        } else if(input.isKeyDown(Input.KEY_LEFT)) {
            walls = maze.getColor((int) pacmanPosX - 2, (int) pacmanPosY);
            if (walls.getRed() == 0 && walls.getGreen() == 0 && walls.getBlue() == 0) {
                pacman = pacmanAnimation[0];
                pacmanPosX -= delta * .1f;
            }
        } else if(input.isKeyDown(Input.KEY_RIGHT)) {
            walls = maze.getColor((int) pacmanPosX + 20, (int) pacmanPosY);
            if (walls.getRed() == 0 && walls.getGreen() == 0 && walls.getBlue() == 0) {
                pacman = pacmanAnimation[1];
                pacmanPosX += delta * .1f;
            }
        }
    }

所以基本上我允许用户在屏幕上移动Pacman并检查Pacman可能降落的未来位置的像素颜色。如果未来的位置不是黑色,那么Pacman可能不会继续向这个方向发展。这个概念在很大程度上起作用,除非Pacman可以在左上角/右上角开始穿过矩形。

这是我正在谈论的图像:

screenshot

我把Pacman能够移动的区域用红色圈起来,但不应该。

如何解决此问题?我不希望吃豆子在任何蓝色矩形的顶部。如果您希望我添加更多代码,我可以,但我认为update方法现在已经足够了。只是想创建一个MCVE。

此外,我正在使用Slick2D和LWJGL进行此游戏。

0 个答案:

没有答案