java GUI编程实现贪吃蛇小游戏
一 准备
首先准备三张图片,分别是:蛇头,蛇身体,食物。(尺寸 25 * 25 像素)
我创建的是一个springboot项目,所以我把这些静态资源放在了resources目录下的static文件夹下,创建个文件夹叫snake,再把这三张图片放进去。
![image](https://img-blog.csdnimg.cn/img_convert/43e023f0f8ab7692c44a231b2896773b.png)
二 新建一个Data类,作为图片资源
import cn.hutool.core.io.resource.ClassPathResource;
import javax.swing.*;
import java.net.URL;
public class Data {
public static URL headerURL = new ClassPathResource("/static/snake/header.png").getUrl();
public static URL bodyURL = new ClassPathResource("/static/snake/body.png").getUrl();
public static URL foodURL = new ClassPathResource("/static/snake/food.png").getUrl();
public static ImageIcon header = new ImageIcon(headerURL);
public static ImageIcon body = new ImageIcon(bodyURL);
public static ImageIcon food = new ImageIcon(foodURL);
}
三 Snake类,定义蛇的数据结构和初始化方法
public class Snake {
int length;
int[] snakex = new int[600];
int[] snakey = new int[500];
String fx;
public void init(){
length = 3;
snakex[0] = 100;
snakey[0] = 100;
snakex[1] = 75;
snakey[1] = 100;
snakex[2] = 50;
snakey[2] = 100;
fx = "D";
}
public Snake(){
init();
}
}
四 游戏面板类 GamePanel(核心代码)
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.Random;
public class GamePanel extends JPanel implements KeyListener, ActionListener {
boolean isStart = false;