Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在Slick2D中将碰撞添加到图像/精灵?_Java_Lwjgl_Slick2d_Pacman - Fatal编程技术网

Java 如何在Slick2D中将碰撞添加到图像/精灵?

Java 如何在Slick2D中将碰撞添加到图像/精灵?,java,lwjgl,slick2d,pacman,Java,Lwjgl,Slick2d,Pacman,我正在为我12年级的计算机科学课做一个吃豆人游戏 这是我到目前为止拥有的代码: Player.java: package javagame; import org.lwjgl.input.Mouse; import org.newdawn.slick.*; import org.newdawn.slick.state.*; //extends BasicGameState creates a basic computer screen public class Play extends Ba

我正在为我12年级的计算机科学课做一个吃豆人游戏

这是我到目前为止拥有的代码:

Player.java:

package javagame;

import org.lwjgl.input.Mouse;
import org.newdawn.slick.*;
import org.newdawn.slick.state.*;

//extends BasicGameState creates a basic computer screen
public class Play extends BasicGameState {
    float pacmanPosX = 218;
    float pacmanPosY = 400;

    Image maze;

    //private SpriteSheet pacMovingLeft;
    private SpriteSheet[] pacmanSprite = new SpriteSheet[4];
    private Animation[] pacmanAnimation = new Animation[4];

    private Animation pacman;

    private int score = 0;

    public Play(int state) {

    }

    public void init(GameContainer gc, StateBasedGame sbg) throws SlickException {
        maze = new Image("res/Game/Maze.png");

        pacmanSprite[0] = new SpriteSheet("res/Characters/Left-Direction.png", 19, 20);
        pacmanAnimation[0] = new Animation(pacmanSprite[0], 150);

        pacmanSprite[1] = new SpriteSheet("res/Characters/Right-Direction.png", 19, 20);
        pacmanAnimation[1] = new Animation(pacmanSprite[1], 150);

        pacmanSprite[2] = new SpriteSheet("res/Characters/Up-Direction.png", 19, 20);
        pacmanAnimation[2] = new Animation(pacmanSprite[2], 150);

        pacmanSprite[3] = new SpriteSheet("res/Characters/Down-Direction.png", 19, 20);
        pacmanAnimation[3] = new Animation(pacmanSprite[3], 150);

        pacman = pacmanAnimation[0];
    }

    // This is the method that draws stuff on the screen
    public void render(GameContainer gc, StateBasedGame sbg, Graphics g) throws SlickException {
        g.drawString("HIGH SCORE: ", 0, 0);
        g.drawString("SCORE: ", 356, 0);

        maze.draw(5, 35);
        pacman.draw(pacmanPosX, pacmanPosY);
    }

    // Updating the images on the screen
    public void update(GameContainer gc, StateBasedGame sbg, int delta) throws SlickException {
        pacman.update(delta);

        Input input = gc.getInput();

        if(input.isKeyDown(Input.KEY_UP)) {
            pacman = pacmanAnimation[2];
            pacmanPosY -= delta * .1f;
        } else if(input.isKeyDown(Input.KEY_DOWN)) {
            pacman = pacmanAnimation[3];
            pacmanPosY += delta * .1f;
        } else if(input.isKeyDown(Input.KEY_LEFT)) {
            pacman = pacmanAnimation[0];
            pacmanPosX -= delta * .1f;
        } else if(input.isKeyDown(Input.KEY_RIGHT)) {
            pacman = pacmanAnimation[1];
            pacmanPosX += delta * .1f;
        }
    }

    public int getID() {
        return 1;
    }
}
我有一个
Menu.java
文件,可以让您进入播放状态,但该代码与我的问题无关


如何将碰撞添加到
迷宫
?我记得在11年级的时候,我用Phaser做了一个游戏,我能够将
物理
碰撞世界边界
等方法/功能应用到我的图像中。这允许对象从具有这些方法的图像/精灵上反弹。我需要在迷宫中添加一些物理元素,这样吃豆人就不能通过迷宫了。

我不推荐使用物理模拟。那太复杂了。我克隆pacman时所做的是,每当用户更改pacman的方向时,它都存储在一个临时方向变量中。当pacman可以沿着温度方向移动时,温度方向就变成了实际方向。 检查pacman是否可以朝某个方向移动是一个简单的网格查找