Работа над Pac-man игрой для моего класса по информатике 12 класса.
У меня есть game.java
файл, который запускает код через основной метод, в то время как у меня есть Play.java
файл, который запускаетФактическая игра.
Это то, что находится внутри Play.java
файла:
package javagame;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
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;
BufferedImage maze;
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 {
try {
maze = ImageIO.read(new File("res/Game/Maze.png"));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
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);
((Renderable) 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;
}
}
Это мой план, чтобы Pac-man не перекрывал лабиринт.Что я планирую сделать, так это выяснить, в каком будущем пиксель Pac-man будет перекрываться и какого цвета будет этот пиксель.Если будущий цвет пикселя не черный, то я не позволю Pac-man продолжить движение в этом направлении.
Как мне определить цвет будущего пикселя?Некоторые из вас могут предложить использовать BufferedImage
, так как он имеет метод getRGB()
, но это не сработает, потому что maze
- это объект изображения, а не объект файла, поэтому я не могу использовать BufferedImage
.