Java贪吃蛇游戏课程设计文档.docx
- 文档编号:2156212
- 上传时间:2022-10-27
- 格式:DOCX
- 页数:19
- 大小:1.19MB
Java贪吃蛇游戏课程设计文档.docx
《Java贪吃蛇游戏课程设计文档.docx》由会员分享,可在线阅读,更多相关《Java贪吃蛇游戏课程设计文档.docx(19页珍藏版)》请在冰豆网上搜索。
Java贪吃蛇游戏课程设计文档
Java核心应用
2019-2020第一学期期末项目考试
班级:
学号:
姓名:
得分:
一、目的
(1)复习、巩固Java语言的基础知识,进一步加深对Java语言的理解和掌握。
(2)为学生提供一个动手动脑,独立实践的机会,将课本上的知识和实际应用有机结合起来,锻炼分析学生实际解决问题的能力。
(3)提高学生面对对象分析与设计能力以及实际项目进行综合开发能力。
二、选题
不限制选题,可以根据个人掌握程度和兴趣进行自我选题。
三、要求
(1)每位学生提交一份项目设计报告(不得少于3000字),可以清晰的描述项目创建过程(可按提供目录表),内容组织要逻辑合理、条理清晰。
(2)按照教师安排时间点到指定教室进行答辩,答辩时,对程序熟悉,对教师提出问题,回答思路清晰,表述准确。
建议附带笔记本展示程序效果。
(3)附件中通过类包的顺序将程序源代码进行拷贝。
设计报告目录
一、绪论1
1.1系统设计背景2
1.2系统设计目的3
二、需求分析4
2.1功能需求5
2.2程序流程图6
2.3开发环境7
三、总体设计8
3.1系统总体设计9
3.2概要设计10
四、详细设计11
4.1模块设计12
4.2知识点分析13
五、总结与反思14
5.1项目总结15
5.2反思16
附件1:
源程序清单
一、绪论
1.1系统设计背景
我开发的这个项目是贪吃蛇,想再追忆儿时诺基亚上玩的贪吃蛇游戏,基于基础功能代码开发JAVA版本,完善和创新新玩法,美化界面,引入AI。
虽然是小游戏,但目标是做成完整的游戏,有游戏的许多要素,开发也是以工程为目的的开发模式,系统模块分明,功能完善
1.2系统设计目的
1.巩固这一学期学的java,由其是面向对象思想,将面向对象思想融入项目中,为以后工作能提供扎实的基本功
2.展现自我的想法和能力的平台,提高对这门课程更深的理解
3.锻炼创造能力、搜集资料能力、开发能力,提升思维能力
二、需求分析
2.1功能需求
一、操作模式
1.用户键盘按下释放跳入选择的面板
2.用户键盘与鼠标并用
二、大体功能
1.单人过关
2.双人对战
3.vs电脑
4.编辑地图
5.设置游戏参数
三、模式玩法
惩罚:
End:
结束e1:
复活e2:
减分e3:
减节e4:
减速
撞墙
咬自己
一条蛇咬另一条蛇
蛇头相撞
单人模式
End
End
双人模式
E1,e2,e3,e4
E2,e3,e4
被咬的:
e2,e3,e4
E1,e2,e3,e4
vs电脑
E1,e2,e3,e4
E2,e3,e4
被咬的:
e2,e3,e4
E1,e2,e3,e4
四、玩家操纵蛇
1.有速度
2.有蛇节
3.吃食物加速度和增加蛇节
4.可以根据用户操作移动
5.碰到障碍物,移动障碍物死亡
五、食物
1.普通食物
2.特殊食物
3.有毒食物
4.不出现障碍物中
5.被吃了可以再生成
六、关卡
1.关卡从地图文件读取
2.达到一定分数过关
3.过关时线程从左到右刷新
七、分数面板
1.当玩家操纵的蛇吃到了食物,进行加分
2.加分是先以粒子效果从中心往周围散发许多黑色小点,像是原来分数的数字炸裂开来一样。
增加美感
八、电脑蛇AI
1.电脑自动行走,寻找最近食物并吃食
2.行走时不会撞墙,不撞移动障碍物,不咬自己
3.当新出食物更近选择这个,放弃原本想去吃的
4.没食物的时候攻击玩家
5.避免自己被对方攻击
九、比赛结果的面板
1.根据模式,再比较分得出结果
2.用户输入姓名,输出到排行榜文件,保存姓名、分数、时间
一十、障碍物
1.普通障碍物墙
2.移动障碍物
3.移动障碍物可以一直往复一个方向来回,像角色扮演游戏中怪物往返一个范围
一十一、穿越节点
1.当蛇头进入一端蛇头会穿越到另一端
一十二、地图操作
1.可以对原本的地图编辑删除
2.新建地图操作完输出可以保存到文件夹下
3.可以设置墙,移动障碍物,蛇出生位置,穿越节点
未完成:
一、随机地图
二、声音与音效
三、设置功能
1.操纵
2.音量
3.游戏大小
4.语言选择
2.2程序流程图
1.面板跳转流程:
2.游戏流程:
3.电脑AI流程
2.3开发环境
编译器:
ECLIPSE
语言:
JAVA
系统:
WIN10
界面:
JAVA-SWING
三、总体设计
3.1系统总体设计
3.2概要设计
1.游戏基本功能
2.玩法:
穿越节点,移动障碍
3.粒子:
分数散开的效果
4.编辑地图:
设计多样的地图
5.声音
6.细节:
过关的延迟美观,界面的美观,地图预览,地图信息
7.随机地图
8.游戏设置,调整游戏界面大小,语言切换
四、详细设计
4.1模块设计
4.2知识点分析
一、多线程
1.电脑AI
2.分数散开的粒子效果
3.蛇一直移动
4.食物过一段时间会消失
5.移动障碍物一直移动
二、输入输出文件数据
1.输出地图数据
2.排行榜
3.游戏设置
4.读取
5.输出
三、Swing界面
1.各个界面Jpanel
2.编辑地图的组件,浏览关卡的JList,Jcombox,JLabel,JButton,JTabel
3.JPanle的布局FlowLayout,GridLayout
4.Jcombox下拉列表使用了模型,可以灵活的更新下拉item项
5.Jcombox的updateUI()和Jpanle.UpdateUi很有用
6.Jpanel的remove组件
7.请求焦点.requestFocus();
四、数据结构
1.用list存储障碍物数量,穿越节点数量
2.数组也是数据结构线性的保存蛇,食物,地图数据等
五、监听事件
1.键盘监听
六、绘图绘画paint
1.画面一帧帧更新成为动画
五、总结与反思
5.1项目总结
1.完成度80%,大体完善
2.有许多改进和增加功能方向,比如增加声音,游戏界面大小,美工。
AI完成度不够,没有攻击玩家和躲避攻击功能。
3.充分利用多线程完成各种效果,如粒子效果,ai效果
4.利用面向对象思想使类划分细明,更容易实现效果
5.采用了一点点mvc模式,bean代表model模型
6.使用文件保存地图数据,保存游戏设置
5.2反思
1.开发程序必须要有设计,设计游戏存在的对象,提取出属性和行为,再关联各个类之间的关系,才能写出高效和可扩展的代码
2.知识面太窄,需要多学习,才能扩展思维,实现更好的游戏或程序
3.算法以及数据结构很重要
4.提高写代码的效率,不能写代码10分钟,找bug1小时,太耗时间,应该先有思路再写,可在本子上先验算下
5.特别注意数组是引用类型的问题
6.提高找bug的精确性,先要理清思路,逐步跟踪,特别是可以利用eclipse中的调试功能一步一步下去。
附件1:
源程序清单
1.代码有点多,放zip压缩文件中:
源码+Q:
451045820
2.目录:
项目创建过程:
1.构思游戏界面,决定不是功能操作与游戏面板在一起,而是分离,一个面板负责一个模块的样子,于是就有很多面板
2.在对面板跳转中,被面板不能实现实时创建添加卡住了,于是搜索许多方法采用,setVisible(true/false)的方法进行更换界面实现跳转功能一样
3.完成面板跳转,于是由陷入是直接存储在代码中的地图数据和各种属性,给它定死,还是有些创新,于是想到把地图数据存储到地图上再读取出来,成为实时的
4.为了实现实时地图,搜索MVC架构的模式,于是将属性抽出给予bean成为model模型。
先将文件读取再给予bean成为地图,但是读取方式很麻烦很麻烦,搜索资料了解到可以将bean转换为json,再将json转为bean,但是不会用,于是采用自己的输出String格式,用一个个特殊字符给分割开各个bean,读取的时候也按特殊的字符分割读取,对字符串的操作很难,一不小心就出错,听过编程在于流和网络之难是有道理的
5.对地图读取后,给予全局的资源,在游戏面板中绘画出来,并建蛇和食物的类,实现基本的地图功能
6.基本功能后感觉地图少些什么,于是想了想可以有移动障碍物,于是想了有点久,先在代码上静态实现了以后,在抽取出bean的属性,再放入文件中,这样就可以读取了
7.对基本的完成后,但是需要用户来创建地图,不能我在txt文件中静态给予,不能只输入地图,应该要输出地图,于是有编辑地图的面板
8.编辑地图采用左右结构,左边游戏面板,右边操作面板,右边操作面板并且采用JTabel组件来多个组件占用一块地。
9.编辑地图的工作量是最多的,要考虑的地方很多,各个数据必须正确不能有错,为了实现,需要3个地图数据,一个输出地图数据,一个保存原本地图数据,一个绘画地图数据,先实现用户点击编辑更改地图数据——用户点击面板预选一格可以选择操作——再预选大范围——移动障碍物设置——蛇的初始设置——输出当前地图,输出后,自然要修改,修改也是很麻烦的,需要读取数据,清空数据,设置数据,而且修改也卡主,不知道怎么修改,因为字符串想替换值是很麻烦的因为换行符,于是想到先删再加,于是实现了,随着删除地图也完成
10.编辑地图完成后,再完成关卡浏览,一开始用的是Jlabel来存储各个关卡的名称,发现很容易出错,并且不能实时更改,比如用户创建一个地图,不能更新过来,因为Jlabel数组定死了,于是考虑到了JList来存储,有model可以实时更改
11.完成关卡预览以后,就放在游戏面板上了,吃食物,到一定分数过关,再到结果,然后输出分数数据到txt文件
12.完成排行榜后再完成一些细节和bug,写游戏真的很容易出bug,很多考虑不到的和不如意的效果都会出现,都需要一步一步慢慢调整
13.后面再修改地图时添加穿越节点可以从一端到另一端
14.再有游戏的AI工作量也是很大的,翻阅资料联想,采用了有限状态机和bfs搜索,各个状态的迁移也很麻烦,必须要考虑很周到才能让操作的蛇更不会死,ai的代码有点乱,但功能基本实现了,就是麻烦。
先实现一条蛇ai后,再扩展3个上限的ai蛇
15.再到用户设置,没有完成,本想有语言选择,声音关闭等其它,但是时间问题没完成,但是完成了设置ai蛇数量,也是输出到txt文件保存读取
16.再用线程完成粒子效果,许多粒子从一点散开爆炸一样,实现最简单的效果,本想再扩展成为烟花的(在通关时放出),但是一时想不出就放着了
17.再最后网上搜索一些图片素材加上去了。
游戏截图:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 贪吃 游戏 课程设计 文档