贪吃蛇的研究与设计.doc
《贪吃蛇的研究与设计.doc》由会员分享,可在线阅读,更多相关《贪吃蛇的研究与设计.doc(40页珍藏版)》请在咨信网上搜索。
1、广东技术师范学院天河学院JAVA程序设计课程设计报告 题 目:_贪吃蛇的研究与设计_学 号: 0_ 0_ 0_ 班 级: _本软件122班_ 小组成员:_林盛东 郭威 彭更明_ 指导教师: 郑英姿 所属系部: 计算机科学与技术系 2023年 4月 25 日贪吃蛇的研究与设计摘 要近年来,Java作为一种新的编程语言,以其简朴性、可移植性和平台无关性等优点,得到了广泛地应用,特别是Java与万维网的完美结合,使其成为网络编程和嵌入式编程领域的首选编程语言。“贪吃蛇”游戏是一个经典的游戏,它因操作简朴、娱乐性强而广受欢迎。本文基于Java技术和NetBeans开发环境,开发了一个操作简朴、界面美观
2、、功能较齐全的“贪吃蛇”游戏。整个游戏程序分为二个功能模块,八个类模块,实现了游戏的开始、暂停、结束。通过本游戏的开发,达成学习Java技术和熟悉软件开发流程的目的。本文在介绍Java相关技术和国内外发展现状的基础上,对“贪吃蛇”游戏的整个生命周期的各个开发阶段进行了具体地介绍。一方面,分析了开发本游戏软件的可行性,重点分析本设计所采用的技术的可行性。另一方面,从游戏主界面等几方面,分析了本游戏的功能需求;从可使用性和安全性方面分析了属性需求。然后,进行了游戏的概要设计和具体设计,这也是本文的重点。概要设计给出二个功能模块的主框架以及八个类模块的函数调用关系;具体设计介绍了Java2标准运营环
3、境的配置,重点给出各个类模块的程序列表,介绍了各个类包含的变量、使用的方法,展示了游戏的界面。为了保证程序代码的对的性和功能实现的可靠性,本文还介绍了游戏软件的程序调试过程和功能测试结果。关键词:Java;NetBeans;贪吃蛇;开发流程 目 录摘 要I1 引言21.1 课题介绍21.2 设计的背景和意义22系统分析32.1可行性分析32.2系统需求分析42.2.1 功能需求42.2.2 性能需求42.2.3界面需求42.3开发环境43系统概要设计53.1程序流程图53.2类模块设计63.3 系统数据结构设计63.3.1 蛇、食物的表达63.3.2 蛇的移动63.3.3 存储蛇身的数据结构7
4、3.3.4 蛇的移动方向73.3.5 如何显示蛇身73.3.6 蛇身的移动方向73.3.7 吃到食物鉴定74 系统具体设计与实现74.1 程序设计74.1.1 主类Main74.1.2 类MainGui84.1.3 类Snake84.1.4 类Food94.1.5 类Box94.1.6 类SnakeKeyListener94.1.7 类Clock104.1.8 类 PropertyPanel104.2 各功能界面截图104.2.1 贪吃蛇游戏的基本运营界面104.2.2 程序开始运营界面115测试135.1 测试的意义136结论13参考文献14附录 重要代码清单151 引言1.1 课题介绍贪吃
5、蛇是世界知名的益智类小游戏,选择这个题目一方面的因素是为了将我们自己的所学知识加以运用;另一方面,虽然很小就接触这个游戏,但是它的制作方法对我们而言还是很神秘的。我们希望通过自己的所学知识把它剖析开来,通过自己的动手实践,真正的了解它的本质和精髓。 希望通过这次实践,我们能从中提高自己的编程能力。并从中学会从零开始分析设计程序。 本游戏的开发语言为Java。开发工具选用NetBeans。 Java是一种简朴的,面向对象的,分布式的,解释型的,健壮安全的,结构中立的,可移植的,性能优异、多线程的动态语言。这里采用Java作为开发语言重要是基于Java的面向对象和可移植性。 NetBeans 是一
6、个开放源代码的、基于 Java 的可扩展开发平台。就其自身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。 数据结构是计算机存储、组织数据的方式。数据结构是指互相之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运营或者存储效率。数据结构往往同高效的检索算法和索引技术有关。 类是 面向对象程序设计语言中的一个概念。 类(Class)事实上是对某种类型的对象定义变量和方法的原型。它表达对现实生活中一类具有共同特性的事物的抽象,是面向对象编程的基础。 类是对某个对象的定义。它包具有关对象动作方式的信息,涉及它的名称、方法、属性和事件。事实上它自身
7、并不是对象,由于它不存在于内存中。当引用类的代码运营时,类的一个新的实例,即对象,就在内存中创建了。虽然只有一个类,但能从这个类在内存中创建多个相同类型的对象。1.2 设计的背景和意义贪吃蛇游戏一款非常经典的手机游戏,由于它比较简朴有趣,无论老少都比较适合。贪吃蛇的设计对每一个Java语言设计者进行语言提高和进阶都是一个很好的锻炼机会。 贪吃蛇游戏的设计比较复杂,它涉及面广、牵涉方面多,假如不好好考虑和设计,将难以成功开发出这个游戏。在这个游戏的设计中,牵涉到图形界面的显示与更新、数据的收集与更新,并且在这个游戏的开发中,还要应用类的继承机制以及一些设计模式。因此,如何设计和开发好这个贪吃蛇游
8、戏,对于提高Java开发水平和系统的设计能力有极大的帮助。在设计开发过程中,需要解决好各个类之间的继承关系,还要解决各个类相应的封装,并且还要协调好各个模块之间的逻辑依赖关系和数据通信关系。正是由于如此,本次毕业设计的目的在于学习Java程序设计基本技术,学习用NetBeans开发Java程序的相关技术,熟悉游戏“贪吃蛇”的需求,熟悉项目开发的完整过程。学会如何进行一个项目的需求分析、概要设计、具体设计等软件开发过程,纯熟地掌握Java程序设计的基本技术和方法,纯熟地掌握NetBeans环境的使用方法,培养起初步的项目分析能力和程序设计能力。2系统分析2.1可行性分析贪吃蛇游戏是一种简朴的大众
9、的游戏,自从计算机实现以来,深受广大电脑玩家的爱慕,做一个简朴的贪吃蛇小游戏。 贪吃蛇的核心算法时如何实现移动和吃掉食物,没有碰到食物的时候,把当前运动方向上的下个节点入队,并以蛇节点的颜色绘制这个节点,然后把头指针所指的节点出队,并以游戏框架内部背景色重绘出队的节点,这样就可以达成移动的效果。而在吃到食物的时候,则只需把食物入队即可。实现贪吃蛇的基本的蛇身移动、吃到食物身体增长、和碰到墙壁或自身死亡,可以暂停和开始。本次设计我将重要运用java语言来完毕。Java语言是一种跨平台,适合于分布式计算环境的面向对象编程语言,用Java写的应用程序不用修改就可在不同的软硬件平台上运营。 由于Jav
10、a重要用于网络应用程序开发,因此对安全性有较高的规定。假如没有安全保证,用户从网络下载程序执行就非常危险。Java通过自己的安全机制防止了病毒程序的产生和下载程序对本地系统的威胁破坏。2.2系统需求分析2.2.1 功能需求本系统重要是完毕贪吃蛇游戏的基本操作。用户可以自己练习和娱乐。本系统需要满足以下几点规定:(1) 运用方向键来改变蛇的运营方向。 (2) 空格键暂停或继续游戏,并在随机的地方产生食物。 (3) 吃到食物就变成新的蛇体,碰到墙或者自身则游戏结束,否则正常运营。2.2.2 性能需求本软件在设计方面本着方便、实用及娱乐性高的宗旨,在对界面进行设计的过程中,始终坚持清楚明了,在性能方
11、面可以实现效率高,不易犯错等优点。2.2.3界面需求游戏主界面模块:重要涉及游戏图形区域界面、游戏开始按钮、暂停游戏按钮、关闭按钮。游戏的主界面力求美观,爽心悦目。游戏控制模块:重要完毕控制游戏的开始、暂停、退出等功能,这部分做到易懂、易操作并且准确率高,不易犯错。游戏的主界面是进入游戏后,可以给玩家第一感官的部分,重要涉及游戏图形区域界面、游戏的速度选择更新界面、游戏分数的显示更新界面、新生方块的预览、游戏开始按钮、暂停游戏按钮、退出游戏按钮以及游戏排行榜按钮。从很大限度上决定了玩家对游戏的爱好问题,因此,游戏的主界面力求美观,爽心悦目。游戏控制模块是游戏的中心环节,重要完毕控制游戏的开始、
12、暂停、退出等功能。为了可以给玩家一个很好的游戏环境,这部分做到易懂、易操作。2.3开发环境操作系统及版本:Windows7工具软件:jdk1.7,NetBeans编程语言:JAVA语言3系统概要设计3.1程序流程图 单击“开始游戏”按钮, 游戏开始,蛇开始随机。键盘操作: 向上右移 F11加速左移 F12减速向下 Enter开始/暂停蛇碰到边界或者碰到自己单击“是”再来一局单击“否”退出游戏游戏半途欲中断,稍后继续游戏单击“暂停游戏”游戏暂停进入游戏画面再次单击开始游戏,游戏恢复图1 游戏解决流程图3.2类模块设计本系统共涉及8个类文献。java源文献及其功能如表所示。表3.1 java源文献
13、及其功能序号文献名重要功能1Main该文献为程序入口,具有main方法。2MainGui主界面类,该类用来创建游戏的用户界面,继承自JFrame类。对主窗口的属性的设立、 注册监听者等3SnakeKeyListener蛇的监听器,根据按键改变蛇的方向、速度等设立4Food该文献实现组成蛇身的单位-食物。5Box该文献实现蛇的活动场合6Snake该文献实现蛇类,包具有关蛇的方法属性7Clock该文献为工具类,实现时间,速度的控制8PropertyPanelsettingPanel的可视化设立.设立游戏运营状态,移动以及分数更新,实现上下左右移动的方法接口。3.3 系统数据结构设计3.3.1 蛇、
14、食物的表达 我们可以把显示区域想象成一个大大的表格,里面的格子就是组成蛇的基本单位,一个格子可以代表一个食物,使用坐标来区分这些格子。 3.3.2 蛇的移动 蛇向前移动一步,可以看作是蛇头前面增长了一个节点,蛇的尾巴上少了一个节点(即去尾,加头) 3.3.3 存储蛇身的数据结构 由于要区分蛇头和蛇尾,因此这个数据结构必须是有序的。另一方面,我们需要经常的访问第一个和最后一个节点,所以LinkedList最合适。由于它有getFirst(),getLast(),和removeLast()方法。 3.3.4 蛇的移动方向 这里讨论蛇的移动方向控制。蛇下一步移动到哪里,是由方向来控制的。 这里我们用
15、int型常量来表达蛇的移动方向。由于我们是根据原蛇头的坐标和方向来拟定新蛇头的坐标。在原坐标的基础上,根据蛇头的运动方向来拟定新蛇头的坐标,比如向上移动就是y-1. 3.3.5 如何显示蛇身 显示蛇身,其实就是填充用颜色填充格子。 需要4个参数,像素坐标x,像素坐标y,格子宽度,格子高度。 像素坐标就是矩形左上角的坐标 3.3.6 蛇身的移动方向 (1)相反方向 和上一次移动的方向相反的方向称为相反方向,这种输入应当忽略。这样可以防止蛇从自己的身体中穿过。 (2)无效方向 在蛇的这一次移动之后和下一次移动之前这个时间间隔内输入了多个非相反方向,只有最后一个是有效方向,其他的都是无效方向。 蛇的
16、最终运动方向以有效方向为准。 3.3.7 吃到食物鉴定 这里通过鉴定坐标是否重合来判断,只需要判断蛇头是否和食物重合就可以了,由于蛇的身体都是走蛇头走过的地方。4 系统具体设计与实现4.1 程序设计4.1.1 主类Main (1)主类为此程序的入口,定义了Main的对象frame,开始运营此程序。 (2)源代码见文献Main.Java4.1.2 类MainGui(1)成员变量见表4.1表4.1 重要成员变量成员变量描述变量类型名称设立面板private settingPanelsettingPanel按键监听private keyListenerkeyListener蛇场对象private B
17、oxBox主窗口高度int windowHeightwindowHeight主窗口宽度int windowWidthwindowWidth (2)方法见表4.2表4.2 重要方法方法名功能addListener()注册监听getBox()更新蛇长getSettingPanel()更新方向 4.1.3 类Snake (1)成员变量见表4.3表4.3 重要成员变量成员变量描述变量类型名称上下左右(方向)IntUP、DOWN、LEFT、RIGHT蛇体LinkedListbody蛇场Boxbox前进方向intdirection是否活着booleanislive颜色ColorsnakeColor下一节点
18、坐标PointnextSite (2)方法见表4.4表4.4 重要方法方法名功能init()初始化蛇,方向初始化为向右,增长初始的节点countNewSite()计算下一个位置drawMe()将蛇画出stareNewGame()死亡之后重新开始游戏 4.1.4 类Food (1)成员变量见表4.5表4.5 重要成员变量成员变量描述变量类型名称颜色foodColorColor 表4.6 重要方法方法名功能drawMe()将食物画出newMe()重新产生一个食物 4.1.5 类Box 蛇场类。继承自JPanel,Box,蛇的活动场合,也是食物出现的地方. 重写了该类的paint()方法,当重绘时时
19、会调用蛇、食物、网格的绘制方法。由定期器Timer控制,每隔delay时间,执行: 1.重新计算一下位置2.绘制新图像3.更新属性面板的显示,即该游戏的重要原理。属性面板的时间由countTimer中获取,运营在此外一个线程中,减小计时的误差4.1.6 类SnakeKeyListener此类为蛇的监听类,实现蛇运动的监听,根据按键改变蛇的方向、速度等设立该类包含控制器和解决按键逻辑,控制器,控制Box, Snake, Food.负责游戏的逻辑.解决按键事件,可以解决Snake 触发的事件,该类覆盖keyPressed()方法:解决按键事件, 根据按键不同, 发出不同的指令: UP: 改变蛇的移
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 贪吃 研究 设计
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【a199****6536】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【a199****6536】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。