Java |
您所在的位置:网站首页 › 双人玩的贪吃蛇 › Java |
项目链接:Java-AI-贪吃蛇-课程设计-论文-其他文档类资源-CSDN下载 Java-贪吃蛇AI-课程设计(源码+文档)_人工智能课程设计-其他文档类资源-CSDN下载项目描述:https://blog.csdn.net/qq_34060370/article/det人工智能课程设计更多下载资源、学习资料请访问CSDN下载频道.https://download.csdn.net/download/qq_34060370/72373889 一、简介 发文目的:这个小项目算是我目前写得最满意的一个项目,想分享一下自己做的小成果,以及怀念当初写小游戏的痛苦并快乐的时光项目时间:2019年12月大二上学期JAVA课程设计项目亮点:BFS算法实现电脑AI、编辑修改地图主要功能 地图管理:添加、修改、编辑、删除地图游戏相关:选关卡、操作蛇、AI电脑蛇、粒子特效、音效游戏管理:暂停/开始、退出关卡管理:添加、删除、修改穿越节点、障碍物、蛇初始坐标、关卡显示排行榜 :显示排行榜、玩家生成成绩设置管理:音乐开关、控制电脑数量其它功能:跳转界面知识点:BFS算法实现AI、IO流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功能需求 操作模式 用户键盘按下释放跳入选择的面板用户键盘与鼠标并用 大体功能 单人过关:玩家可以选择一个人游戏,直至通过所有关卡双人对战:玩家可以选择双人对战,通过对比分数来决定输赢vs电脑:玩家可以选择和电脑对战,通过对比分数来对待输赢编辑地图:玩家可以发挥想象力创作有趣的地图设置游戏参数:玩家可以设置音效开关、电脑数量 游戏规则惩罚: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 玩家操纵蛇 有速度快慢有蛇节数量吃食物加速度和增加蛇节可以根据用户操作移动碰到障碍物,移动障碍物死亡 食物 普通食物特殊食物有毒食物不出现障碍物中被吃了可以再生成 关卡 关卡从地图文件读取达到一定分数过关过关时线程从左到右刷新 分数面板 当玩家操纵的蛇吃到了食物,进行加分加分是先以粒子效果从中心往周围散发许多黑色小点,像是原来分数的数字炸裂开来一样。增加美感 电脑蛇AI 电脑自动行走,寻找最近食物并吃食行走时不会撞墙,不撞移动障碍物,不咬自己当新出食物更近选择这个,放弃原本想去吃的没食物的时候攻击玩家避免自己被对方攻击 比赛结果的面板 根据模式,再比较分得出结果用户输入姓名,输出到排行榜文件,保存姓名、分数、时间 障碍物 普通障碍物墙移动障碍物移动障碍物可以一直往复一个方向来回,像角色扮演游戏中怪物往返一个范围巡逻 穿越节点 当蛇头进入一端 蛇头会穿越到另一端 地图操作 可以对原本的地图编辑 删除新建地图操作完输出可以保存到文件夹下可以设置墙,移动障碍物,蛇出生位置,穿越节点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 收获与体会 开发程序必须要有设计,设计游戏存在的对象,提取出属性和行为,再关联各个类之间的关系,才能写出高效和可扩展的代码知识面太窄,需要多学习,才能扩展思维,实现更好的游戏或程序算法以及数据结构很重要提高写代码的效率,不能写代码10分钟,找bug1小时,太耗时间,应该先有思路再写,可在本子上先验算下特别注意数组是引用类型的问题提高找bug的精确性,先要理清思路,逐步跟踪,特别是可以利用eclipse中的调试功能 一步一步下去。附件1:源程序 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |