用java写一个贪吃蛇代码
时间: 2023-03-22 14:00:21 浏览: 97
贪吃蛇的代码(java)
好的,下面是用Java编写贪吃蛇游戏的示例代码。代码中使用了Java Swing库实现游戏界面的绘制,使用了键盘监听器来监听用户的按键操作。
```
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Point;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class SnakeGame extends JPanel implements Runnable, KeyListener {
private static final long serialVersionUID = 1L;
// 游戏界面的宽度和高度
private static final int WIDTH = 600;
private static final int HEIGHT = 600;
// 蛇的初始长度
private static final int INIT_SNAKE_LENGTH = 3;
// 蛇头的初始位置
private static final Point INIT_SNAKE_HEAD_POS = new Point(WIDTH / 2, HEIGHT / 2);
// 游戏区域的格子大小
private static final int GRID_SIZE = 20;
// 游戏区域的行数和列数
private static final int ROWS = HEIGHT / GRID_SIZE;
private static final int COLS = WIDTH / GRID_SIZE;
// 游戏区域的二维数组,用来表示蛇和食物的位置
private int[][] grid = new int[ROWS][COLS];
// 蛇的身体部分,用一个列表来存储每个身体部分的位置
private List<Point> snake = new ArrayList<>();
// 食物的位置
private Point food;
// 当前游戏是否正在运行
private boolean running = false;
// 当前游戏是否结束
private boolean gameOver = false;
// 当前游戏是否暂停
private boolean paused = false;
// 蛇的移动速度,单位是毫秒
private int speed = 100;
public SnakeGame() {
// 初始化游戏界面
setPreferredSize(new Dimension(WIDTH, HEIGHT));
setBackground(Color.BLACK);
setFocusable(true);
addKeyListener(this);
// 初始化蛇的身体部分
for (int i = 0; i < INIT_SNAKE_LENGTH; i++) {
snake.add(new Point(INIT_SNAKE_HEAD_POS.x, INIT_SNAKE_HEAD_POS.y + i * GRID_SIZE));
}
// 初始化游戏区域的二维数组
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
grid[i][j] = 0;
}
}
// 将蛇的身体部分放入游戏区域的二维数组中
for (int i = 0; i < snake.size(); i++) {
Point p = snake.get(i);
grid[p.y / GRID_SIZE][p.x / GRID_SIZE] = i == 0 ? 1 : 2;
}
// 生成第一个食物
generateFood();
}
// 生成一个随机的食物位置
private void generateFood() {
Random rand = new Random();
阅读全文