# 贪吃蛇 **Repository Path**: RunningCode/retro_snaker ## Basic Information - **Project Name**: 贪吃蛇 - **Description**: 试着用java开发一个简单的贪吃蛇程序。 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2018-05-13 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 贪吃蛇 ### 项目介绍 试着用java开发一个简单的贪吃蛇程序。 ### 项目部分 1. 核心算法 2. GUI显示部分 3. 控制部分 4. 主体程序部分 5. 参数设置面板 6. 关于窗口 7. 声音部分 8. 素材处理部分 ### 一些技术规范 1. 使用二维数组map来制作地图。 2. map地图数组大小可变。 3. 使用双缓冲技术刷新界面。 4. 使用LinkedList来实现蛇的主体。 5. 将GetKet实例传入Game中,来实现实时获取。 6. 将Game实例传入GameJpanel中,来实现实时绘制。 7. GetKey实例为独立线程来获取按键。 8. Game实例为独立线程用来自动运算游戏数据。 9. GameJPanel实例为独立线程,不断刷新,来实时显示游戏内容。 10. 为实现按键获取,GetKey继承自TextField,来实现获取按键事件。 11. 使用自定义的判断变量runisover来结束run函数。 ### 文件说明 1. Desktop.java 窗口主体程序。 2. Game.java 游戏核心算法程序。 3. GameJPanel.java 游戏显示画板程序. 4. GetKey.java 按键获取程序。 5. Point.java 基础点类。 6. JF_Options.java 设置窗口类。 7. JF_About.java 关于窗口类。 8. SoundPlay.java 播放音效类。 9. LoadImages.java 图片加载类 ### 目前人员 1. 夜猫 2. 杨超超 3. 李栋 ### 遇到的问题记录 - 2018-5-15 开发进度缓慢 - 2018-5-16 实现按键获取需要该类继承自可以使用KeyEvent的类 - 2018-5-17 stop函数无法终止线程,使用自定义的变量来终止 - 2018-5-17 需要加入防止蛇体回头的判断 - 2018-5-17 可以自定义枚举类型的内容,用来解决枚举变量需要更多参数得问题 - 2018-5-18 audio.jar中的AudioData对象不支持超过1MB以上的声音文件 - 2018-5-18 对Point需要对转向与方向分别判断 - 2018-5-18 绘制图片的时候,需要仔细判断,例如蛇尾的方向应该与数字方向相反。 ### 版本更新记录 - 2018-5-14 大体框架建立。 - 2018-5-15 GameJPanel部分基本功能实现。 ![简单测试一下绘制功能](https://gitee.com/uploads/images/2018/0515/161827_8c0e1669_1790958.png "简单测试一下绘制功能.png") - 2018-5-15 修复了GameJPanel绘制蛇主体的判断bug - 2018-5-16 基本实现了GetKey类的功能。 - 2018-5-16 基本实现JF_Options窗口设置游戏参数功能。 - 2018-5-16 实现了界面根据Game信息自动拉伸功能。 ![设置界面](https://gitee.com/uploads/images/2018/0516/212026_b1cf8042_1790958.png "设置界面.png") ![设置后界面](https://gitee.com/uploads/images/2018/0516/212041_eb9d327c_1790958.png "设置后界面.png") - 2018-5-16 完成了About界面 ![about页面](https://gitee.com/uploads/images/2018/0516/215318_9b57d277_1790958.jpeg "about页面.jpg") - 2018-5-17 Game核心算法完成。 - 2018-5-17 Game漏洞修复完成。 - 2018-5-17 修复按键冲突造成错误的结束判断。 - 2018-5-17 为GameJPanel增加绘制转弯结点的功能。 - 2018-5-17 基本完善游戏功能。 ![基本样子](https://gitee.com/uploads/images/2018/0518/000651_b1fd3492_1790958.png "基本样子.png") - 2018-5-18 使用Audio.jar完成了游戏音效的播放。 - 2018-5-18 修改了Point类,使其对转向与方向分别存储。 - 2018-5-18 修改了Game类中Move函数结构,以适应新的判断方式。 - 2018-5-18 修改了Game类中的对点属性判断函数,现在可以对方向和转向更好的判断。 - 2018-5-18 修改了GameJPanel类中的绘制部分,现在可以绘制不同类型的蛇体。 - 2018-5-18 修改了GameJPanel类中的绘制部分,现在可以绘制暂停界面和结束界面。 - 2018-5-18 调整了主要几个类的部分参数的初始值。 ![开始游戏](https://gitee.com/uploads/images/2018/0519/005935_997d0f56_1790958.png "开始游戏.png") ![结点属性判断绘制](https://gitee.com/uploads/images/2018/0519/005955_ac375e74_1790958.png "结点属性判断绘制.png") ![结束得分画面](https://gitee.com/uploads/images/2018/0519/010028_676d6c7c_1790958.png "结束得分画面.png") - 2018-5-19 添加了LoadImages类用来添加图形文件。 - 2018-5-19 完成了游戏素材制作。 - 2018-5-19 修复了显示位置不对的bug。 ![测试](https://gitee.com/uploads/images/2018/0519/133945_33580b12_1790958.png "测试.png")