项目链接:Java-AI-贪吃蛇-课程设计-论文-其他文档类资源-CSDN下载
Java-贪吃蛇AI-课程设计(源码+文档)_人工智能课程设计-其他文档类资源-CSDN下载项目描述:https://blog.csdn.net/qq_34060370/article/det人工智能课程设计更多下载资源、学习资料请访问CSDN下载频道.https://download.csdn.net/download/qq_34060370/72373889
一、简介
5.视频链接:[JAVA贪吃蛇]自动寻路,关卡设计_哔哩哔哩_bilibili
二、课程设计文档
设计报告目录
一、项目目的及意义...................................................................................................... 1
1.1项目设计目的............................................................................................................ 2
1.2项目设计意义.............................................................................................................. 3
二、相关技术及工具...................................................................................................... 4
2.1 Java............................................................................................................................ 5
2.2 BFS算法..................................................................................................................... 6
2.3 Eclipse......................................................................................................................... 7
三、系统设计及功能...................................................................................................... 8
3.1功能需求.................................................................................................................... 9
3.2系统总体设计........................................................................................................... 10
3.3概要设计.................................................................................................................. 11
3.4模块设计.................................................................................................................. 12
3.5程序流程图.............................................................................................................. 13
四、系统实现及关键代码分析...................................................................................... 14
4.1 程序运行................................................................................................................. 15
4.2 程序模块细分.......................................................................................................... 15
4.3 主要功能关键代码分析........................................................................................... 16
五、收获和体会............................................................................................................ 17
5.1 总结......................................................................................................................... 18
5.2 收获与体会............................................................................................................. 19
附件1:源程序
一、项目目的及意义
1.1项目设计目的
1.复习、巩固Java语言的基础知识,进一步加深对Java语言的理解和掌握。
2.为我提供一个动手动脑,独立实践的机会,将课本上的知识和实际应用有机结合起来,锻炼分析我实际解决问题的能力。
3.提高我面对对象分析与设计能力以及实际项目进行综合开发能力。
1.2项目设计意义
我开发的这个项目是贪吃蛇,对我个人来说想再追忆儿时诺基亚上玩的贪吃蛇游戏,基于基础功能代码开发JAVA 版本,完善和创新新玩法,美化界面,引入AI。虽然是小游戏,但目标是做成完整的游戏,有游戏的许多要素,开发也是以工程为目的的开发模式,系统模块分明,功能完善。
二、相关技术及工具
2.1 Java
Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。
我实现这个项目,使用了Java挺多内容,并且有一些高级内容,具体有用IO流来实现游戏地图的存储读取、用多线程来实现游戏的粒子散开效果和蛇AI自动寻路、用面向对象思想使项目结构分明。
2.2 BFS算法
BFS算法全称是宽度优先搜索算法(又称广度优先搜索)是最简便的图的搜索算法之一,这一算法也是很多重要的图的算法的原型。Dijkstra单源最短路径算法和Prim最小生成树算法都采用了和宽度优先搜索类似的思想。属于一种盲目搜寻法,目的是系统地展开并检查图中的所有节点,以找寻结果。换句话说,它并不考虑结果的可能位置,彻底地搜索整张图,直到找到结果为止。
我将BFS算法带入游戏中,使用在电脑蛇自动行动寻找食物,原理就是根据蛇位置不断搜索地图中存在食物的坐标,然后保存在List中再读取路线从而达到寻路AI功能。
2.3 Eclipse
Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。
采用Eclipse作为编辑器工具是因为界面友好,结构分明,比myeclipse轻,对我来说比IDEA简单点。
三、系统设计及功能
3.1功能需求
惩罚: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 |
3.2系统总体设计
3.3概要设计
1. 贪吃蛇游戏的基本玩法功能
2. 创新地方:穿越节点,移动障碍
3. 粒子:分数散开的效果
4. 编辑地图:设计多样的地图
5. 声音
6. 细节:过关的延迟美观,界面的美观,地图预览,地图信息
7. 随机地图
8. 游戏设置,调整游戏界面大小,语言切换
3.4模块设计
3.5程序流程图
1.面板跳转流程:
2.游戏流程:
3.电脑AI流程
四、系统实现及关键代码分析
4.1程序运行
1.进入游戏主界面
主界面是以白色背景黑色文字展示出选择各项子菜单,输入数字1,2,3进行相应菜单进入
2.按下1键进入单人模式
单人模式界面的构图与双人模式与电脑对战的构图一样,分为3大块,左边的是关卡列表,右边上面的是地图预览,右边下面的是地图信息。在关卡列表中可以按上下方向键进行关卡选择,然后按下enter键进入游戏或者点击界面的按钮“开始游戏”进入游戏界面。
3.进入游戏界面
此界面中,分为两块,最上面一层黄色的是分数面板,下面一层是地图面板。如图所示,此时操纵的蛇就快吃到食物。
4.吃完食物后的效果
吃完食物后可见,蛇增长一节,并且分数也变为10,当分数达到要求时会进入下一关卡,进入下一关卡前有一个预绘制下一地图关卡的效果。
5.预绘制下一关卡效果
此时界面把下一关关卡和当前关卡重合在一起,左边的是预绘制好下一个关卡的地图,右边是暂未绘制完的地图,预绘制效果是从左完右的动画效果
6.绘制完关卡
7.主角即将死亡
主角在最地图下面,即将碰到橙色的墙,碰到后进入结束界面
8.游戏结束界面
游戏结束界面会统计分数,并且提示输入姓名,以保存成绩在排行榜中。
接下来输入ESC重回主界面并看双人模式
9.双人模式
在双人模式中,可见有两个主角,红色的蛇和绿色的蛇,并且分数面板中也显示了两个主角的分数。双人模式的游戏结束条件是通过最后一个关卡以统计谁的分数最高。
10.双人模式游戏结束界面
此游戏结束界面不同于单人模式游戏结束界面,有胜者和分数显示。
接下来重回主界面并选择编辑地图
11.编辑地图选择界面
此界面与选关界面有些相似,也由3大块组成,不同的是,新建地图、修改地图、删除地图按钮。我们点击新建地图
12.新建地图。
界面分两块,左边是待编辑的地图,右边是相对编辑的按钮。简单编辑地图后显示
13.编辑地图后
我们往中间一小部分变为墙,编辑地图还有很多功能在此略过。编辑完点击保存并退出。
我们返回到主界面并且选择与电脑对战,在关卡列表的最后一行,可见刚刚新增的关卡
14.与电脑对战的关卡选择中可以看到新增的关卡
此界面与单人与双人模式的一点区别是在关卡预览中可以看见4个主角。1个是玩家,3个都是电脑。
15.进入与电脑对战显示
分数面板变了,截图中可以看到,两条电脑蛇分别向着同一个食物前进。这个模式的游戏结束是根据退出后的分数判断输赢。
16.与电脑对战游戏结束
会显示出胜者与分数。
17.回到主界面进入排行榜界面
可见我们刚刚输入的姓名,分数会保存在这,并且是倒序。
18.在主界面继续按esc会弹框是否退出
4.2程序模块细分
1.实体类的模块包
2.电脑AI类的模块包
3.游戏配置参数的模块包
4.修改地图类的模块包
5.游戏各个界面的模块包
6.输入输出地图、排行榜类的模块包
7.游戏实际运行类的模块包
4.3主要功能关键代码分析
1.玩家操纵蛇功能
主要类在GsnMainGameJPanel.java中
这是主要代码,通过监听,获取玩家输入的健值,匹配到相应的流程,更改newdir方向属性,然后再绘图中根据相应方向更改蛇的位置。
2.界面跳转功能
主要类在GsnBottomLayerInterface.java中
在其它面板类中有按键监听,当按下esc时就执行这里的几个方法,思路就是把用户进入的面板用stack栈保存起来,然后返回上一个就推出栈顶就回到上一个界面了。
3.电脑AI功能
主要在GsnSnakeComputerPlayer.java类中
这个类是一个线程类,一直运行,根据状态而执行不同操作,涉及到有限状态机概念,当0状态就是闲逛中要去判断是否有食物生成并设为1状态,1状态是通过bfs算法计算路线list,2状态是根据路线list而去执行路线。具体看上面流程图和diam。
4.输入输出数据功能
主要在GsnInputAndOut.java类中
这类使用的是字符缓冲输入输出流,对txt文件进行读取和修改从而进行达到保存数据的效果。
五、收获与体会
5.1 项目总结
1. 完成度80%,大体完善
2. 有许多改进和增加功能方向,比如增加声音,游戏界面大小,美工。AI完成度不够,没有攻击玩家和躲避攻击功能。
3. 充分利用多线程完成各种效果,如粒子效果,ai效果
4. 利用面向对象思想 使类划分细明,更容易实现效果
5. 采用了一点点mvc模式,bean代表model模型
6. 使用文件保存地图数据,保存游戏设置
5.2 收获与体会
附件1:源程序