步骤1:创建新项目
步骤2:加载 Slick2D 库
lib
目录。步骤3:创建源代码并开始编辑
步骤4:开始编写贪吃蛇游戏
import org.newdawn.slick.Color;
import org.newdawn.slick.geom.Rectangle;
public class Snake {
private int length;
private Color color;
// 蛇头方块的坐标
private int x, y;
public Snake(int x, int y, int len, Color color) {
this.length = len;
this.color = color;
this.x = x;
this.y = y;
}
public void moveUp() {
y--;
}
public void moveDown() {
y++;
}
public void moveLeft() {
x--;
}
public void moveRight() {
x++;
}
public Rectangle getHead() {
return new Rectangle(x * 10, y * 10, 10, 10);
}
public Color getColor() {
return color;
}
}
import org.newdawn.slick.Color;
import org.newdawn.slick.geom.Rectangle;
public class Food {
private int x, y;
private Color color;
public Food(int x, int y, Color color) {
this.x = x;
this.y = y;
this.color = color;
}
public Rectangle getFood() {
// 返回矩形
return new Rectangle(x * 10, y * 10, 10, 10);
}
public Color getColor() {
return color;
}
}
import org.newdawn.slick.Graphics;
import org.newdawn.slick.geom.Rectangle;
public class GameBoard {
private Snake snake;
private Food food;
public GameBoard(Snake snake, Food food) {
this.snake = snake;
this.food = food;
}
public void render(Graphics graphics) {
// 绘制蛇头
Rectangle head = snake.getHead();
graphics.fill(head);
// 绘制食物
Rectangle f = food.getFood();
graphics.fill(f);
}
public Snake getSnake() {
return snake;
}
public Food getFood() {
return food;
}
}
import org.newdawn.slick.*;
import org.newdawn.slick.geom.Rectangle;
public class SnakeGame extends BasicGameState {
private static final int WIDTH = 600;
private static final int HEIGHT = 600;
private GameBoard gameBoard;
public void init(GameContainer container, StateBasedGame game) throws SlickException {
Snake snake = new Snake(10, 10, 3, Color.white);
Food food = new Food(20, 20, Color.red);
gameBoard = new GameBoard(snake, food);
}
public void render(GameContainer container, StateBasedGame game, Graphics graphics) throws SlickException {
graphics.setColor(Color.black);
graphics.fillRect(0, 0, WIDTH, HEIGHT);
gameBoard.render(graphics);
}
public void update(GameContainer container, StateBasedGame game, int delta) throws SlickException {
Snake snake = gameBoard.getSnake();
int x = (int) snake.getHead().getX() / 10;
int y = (int) snake.getHead().getY() / 10;
// 碰到边缘结束游戏
if (x < 0 || x > 59 || y < 0 || y > 59) {
container.exit();
}
// 更新蛇的位置
snake.moveRight();
}
public void keyPressed(int key, char c) {
Snake snake = gameBoard.getSnake();
switch (key) {
case Input.KEY_UP:
snake.moveUp();
break;
case Input.KEY_DOWN:
snake.moveDown();
break;
case Input.KEY_LEFT:
snake.moveLeft();
break;
case Input.KEY_RIGHT:
snake.moveRight();
break;
}
}
public int getID() {
return 0;
}
}
这只是一个非常基础的示例。您可以在此基础上添加更多的功能和玩法,让游戏变得更加聪明、有趣。
希望这些步骤和代码能够帮助您入门 Slick2D 和 IntelliJ IDEA,并开始编写自己的贪吃蛇游戏。
chatgpt是数据整合,一般都是别人已经成功过的代码,基本没什么问题