java - 未正确检测颜色 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 从左上角/右上角开始,它可以穿过一个矩形。
这是我正在谈论的图像:
我用红色圈出了吃豆人不应该移动的地方。
我该如何解决这个问题?我不希望 Pacman 位于任何蓝色矩形之上。如果您希望我添加更多代码,我可以,但我认为该update
方法现在已经足够了。只是试图创建一个 MCVE。
另外,我在这个游戏中使用了 Slick2D 和 LWJGL。
解决方案
推荐阅读
- instagram - Instagram 基本显示 API
- rtsp - 如何在 Onvif 的子流配置文件中打开音频
- sql-server - 如何过滤或拆分 CTE,以便在特定列中不添加相同值的 2 行
- c# - 为“ObservableCollection 不更新视图”给出的解决方案不起作用
- c# - Microsoft Graph SDK (C#) 组邮箱
- javascript - 从 ImageData 数组生成水平精灵图像
- python - 无法通过 pip install 下载 InstaPy python 模块
- reactjs - 基于会话存储或页面隐藏 React 元素
- python-3.x - 如何从 Exchange 2016 获取日历事件
- sqlite - 在单独文件的 main.dart 中使用 SQLite?