利用JAVA制作贪吃蛇小游戏
时间: 2023-08-28 20:04:52 浏览: 98
使用Java实现贪吃蛇小游戏
好的,下面是一个简单的贪吃蛇小游戏JAVA代码:
```java
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class SnakeGame extends JFrame implements ActionListener {
// 定义游戏区域的大小
private final int WIDTH = 300;
private final int HEIGHT = 300;
// 定义蛇的初始位置和大小
private int x = 50;
private int y = 50;
private int size = 10;
// 定义食物的位置
private int foodX = 100;
private int foodY = 100;
// 定义蛇的移动方向
private int dx = 0;
private int dy = 0;
// 定义定时器
private Timer timer;
public SnakeGame() {
// 设置窗口标题
setTitle("Snake Game");
// 设置窗口大小
setSize(WIDTH, HEIGHT);
// 设置窗口关闭方式
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 设置窗口可见
setVisible(true);
// 设置定时器,每100毫秒触发一次
timer = new Timer(100, this);
timer.start();
}
public void paint(Graphics g) {
// 调用父类的paint方法
super.paint(g);
// 绘制蛇
g.fillRect(x, y, size, size);
// 绘制食物
g.fillRect(foodX, foodY, size, size);
}
public void actionPerformed(ActionEvent e) {
// 判断蛇是否吃到了食物
if (x == foodX && y == foodY) {
// 重新生成食物的位置
foodX = (int) (Math.random() * (WIDTH - size));
foodY = (int) (Math.random() * (HEIGHT - size));
}
// 移动蛇的位置
x += dx;
y += dy;
// 判断蛇是否撞墙
if (x < 0 || x > WIDTH - size || y < 0 || y > HEIGHT - size) {
// 停止定时器
timer.stop();
// 显示游戏结束提示
JOptionPane.showMessageDialog(this, "Game Over!");
// 关闭窗口
dispose();
}
// 重绘窗口
repaint();
}
public void keyPressed(KeyEvent e) {
// 获取按键
int key = e.getKeyCode();
// 根据按键设置蛇的移动方向
switch (key) {
case KeyEvent.VK_LEFT:
dx = -size;
dy = 0;
break;
case KeyEvent.VK_RIGHT:
dx = size;
dy = 0;
break;
case KeyEvent.VK_UP:
dx = 0;
dy = -size;
break;
case KeyEvent.VK_DOWN:
dx = 0;
dy = size;
break;
}
}
public static void main(String[] args) {
// 创建游戏窗口
new SnakeGame();
}
}
```
这个游戏没有使用任何的游戏引擎,只是使用了Java自带的AWT和Swing库来实现的。游戏中的蛇是一个矩形,食物也是一个矩形,通过不断的重绘窗口来实现移动和碰撞检测。玩家通过键盘控制蛇的移动方向,吃到食物后分数加一。如果蛇撞到墙壁或自己的身体,则游戏结束。
阅读全文