一、前言
之前学习 GUI 编程,主要总结了 AWT 中(组件,容器,面板,事件监听,文本框监听,画图类,鼠标监听,键盘监听,窗口监听) 还有 Swing (容器,面板,label ,按钮,列表,文本框等)所以综合以上知识,写一个练手的小项目,贪吃蛇
二、游戏效果
三、问题解析
1、怎么使小蛇动起来?
我们首先定义好射的属性:长度,x 坐标,y 坐标,以及蛇头方向
通过判断蛇头方向,然后画在(x0,y0) 的坐标
当然此时蛇依然不会动,通过循环把前一个坐标复制给后一个坐标,然后不断重绘,我们就可以看到一个动态的画面了
蛇头可以根据方向来进行赋值
2、小蛇如何转弯?
转弯是通过改变蛇头的属性 fx,当 fx 为 R 的时候,表示向右,L :左
那要怎么改变呢?
需要进行键盘监听,当按下 ‘左方向键’ 的时候,把 fx 设为 L,当按下 '右方向键‘ 的时候, 把 fx 设置为 L ,其余类似
失败判定,判断头部和身体是否有重叠,如果有的话,则返回 false
四、奉上源码
加载资源类
package JavaGUI.snake;
import javax.swing.*;
import java.net.URL;
/**
* @Title:
* @Package
* @Description:
* @author: maze
* @date 2020/10/21上午 9:12
*/
public class Data {
// 加载当前目录下的 static 文件夹功能的 header.png 图片
public static URL headerURL = Data.class.getResource("static/header.png");
public static ImageIcon header = new ImageIcon(headerURL);
// 头的四个方向
public static URL upURL = Data.class.getResource("static/up.png");
public static URL downURL = Data.class.getResource("static/down.png");
public static URL leftURL = Data.class.getResource("static/left.png");
public static URL rightURL = Data.class.getResource("static/right.png");
public static ImageIcon up = new ImageIcon(upURL);
public static ImageIcon down = new ImageIcon(downURL);
public static ImageIcon left = new ImageIcon(leftURL);
public static ImageIcon right = new ImageIcon(rightURL);
//身体
public static URL bodyURL = Data.class.getResource("static/body.png");
public static ImageIcon body = new ImageIcon(bodyURL);
// 食物
public static URL foodURL = Data.class.getResource("static/food.png");
public static ImageIcon food = new ImageIcon(foodURL);
}
游戏界面类
package JavaGUI.snake;
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;
/**
* @Title: GamePane
* @Package
* @Description:
* @author: maze
* @date 2020/10/21上午 8:57
*/
publi