面向对象综合设计-贪吃蛇
一.团队介绍
班级 网络1912
学号 201921123058
姓名 曹松锋(组长)
负责模块 登录界面的设计,文件的处理,UML类图,前期调查
班级 网络1912
学号 201921123045
姓名 洪志鸿(组员)
负责模块 蛇的移动,场景的图画,障碍物生成,碰撞检测,音乐特效
班级 网络1912
学号 201921123042
姓名 林海斌(组员)
负责模块 贪吃蛇与食物的图片设计,食物的创建与种类设计,获得焦点与键盘事件联系蛇的移动。
二.项目简介
游戏贪吃蛇,通过键盘方向键控制小蛇的移动方向,吃掉在地图上随机出现的食物,使小蛇长大(根据食物的不同存在不同的效果),同时每次小蛇吃到食物时便会得到相应的分数,当小蛇撞到自身或者地图上的障碍物时游戏结束。
三.项目采用技术
swing
四.功能需求分析
- 1.登录与注册功能:确认登录用户信息,便于扩展记录用户游戏分数建立游戏历史分数排名。
- 2.贪吃蛇游戏功能:
- (1).地图功能:创建一定大小的地图为活动场地,并存在文字对游戏的功能进行解释。
- (2).难度功能:通过在游戏中不同难度的选择,对地图进项障碍物(墙壁的增加),满足不同玩家的需求。
- (3).基本的移动功能,使贪吃蛇根据玩家键盘输入的方向,随着时间的进行同时进行着移动。同时若撞上不能移动的地方游戏便会结束。
- (4).食物功能:在地图上随机出现的食物,同时种类也是随机的,根据不同的种类有着不同的效果,增加游戏的趣味性,同时贪吃蛇也虽有所长大。
- 3音乐与图片的使用:随着游戏的开始而开始的音乐,同时进食成功时也存在特效,对贪吃蛇也增加的图片来缓解单一的游戏性。
五.项目git地址
https://gitee.com/cao-songfeng/snakebag.git
六.项目git提交记录截图
七.项目功能架构图、主要功能流程图
八.面向对象设计UML类图
九.项目运行截图
十.项目关键代码
登录模块(采用了swing编程,将登录界面图形化在读写文件时采取try…catch使代码更加健壮,使用了swing线程的invokeLater方法,该方法用来请求事件分发线程以运行某段代码,且必须将这段代码放入一个Runnable对象的reun方法中,并指定Runnable对象作为参数传递给invokeLater)
数据模块(使用URL定位图片位置,再用ImageIcon实例化图片)
蛇的移动模块(使用了Timer类,通过设计刷新的时间,实现KeyListener和ActionListener接口实现对键盘按键和变量监听的方法,实现蛇的移动)
画出界面模块
难点是判断位置的坐标,使用画图Graphics类,实现了Jpanel的paintComponent方法,用里面的paintIcon,setColor,fillRect等方法实现
音乐播放模块
贪吃蛇食物模块
代码使用了GamePanel类的wall数据与snake数据进行墙壁与贪吃蛇的当前位置的记录,通过foodflag记录食物是否存在,来确保食物被食用时立即有新食物生成,且不会与贪吃蛇与墙壁位置相重叠,且通过对食物颜色foodcolor的随机来进行种类的分别与效果的产生,通过swing编程食用图片对食物进行包装。