java课程设计之贪吃蛇.doc
《java课程设计之贪吃蛇.doc》由会员分享,可在线阅读,更多相关《java课程设计之贪吃蛇.doc(26页珍藏版)》请在咨信网上搜索。
1、 目 录一 系统描述11.1 本设计的目的和意义11.2 设计的主要内容11.3 设计要达到的目标21.4设计需要实现的功能和目标21.5 游戏设计环境2二 分析与设计32.1游戏处理流程32.2需求分析42.3 功能模块设计42.4 详细设计8三 系统测试19四 心得体会21 五 参考文献22六 附录 24 第 25 页基于Java的游戏“贪吃蛇”的设计和实现内容提要: “贪吃蛇”游戏是一个经典的游戏,它因操作简单、娱乐性强而广受欢迎。本文基于Java技术和JBuilder开发环境,开发了一个操作简单、界面美观、功能较齐全的“贪吃蛇”游戏。整个游戏程序分为二个功能模块,六个类模块,实现了游戏
2、的开始、暂停、结束。通过本游戏的开发,达到学习Java技术和熟悉软件开发流程的目的。 一 系统描述1.1 本设计的目的和意义 贪吃蛇游戏一款非常经典的手机游戏,因为它比较简单有趣,无论老少都比较适合。贪吃蛇的设计对每一个Java语言设计者进行语言提高和进阶都是一个很好的锻炼机会。 贪吃蛇游戏的设计比较复杂,它涉及面广、牵涉方面多,如果不好好考虑和设计,将难以成功开发出这个游戏。在这个游戏的设计中,牵涉到图形界面的显示与更新、数据的收集与更新,并且在这个游戏的开发中,还要应用类的继承机制以及一些设计模式。因此,如何设计和开发好这个贪吃蛇游戏,对于提高Java开发水平和系统的设计能力有极大的帮助。
3、在设计开发过程中,需要处理好各个类之间的继承关系,还要处理各个类相应的封装,并且还要协调好各个模块之间的逻辑依赖关系和数据通信关系。正是因为如此,本次毕业设计的目的在于学习Java程序设计基本技术,学习用JBuilder开发Java程序的相关技术,熟悉游戏“贪吃蛇”的需求,熟悉项目开发的完整过程。学会怎样进行一个项目的需求分析、概要设计、详细设计等软件开发过程,熟练地掌握Java程序设计的基本技术和方法,熟练地掌握JBuilder环境的使用方法,培养起初步的项目分析能力和程序设计能力。 1.2 设计的主要内容贪吃蛇游戏设计与实现,主要分为以下二个模块:游戏主界面模块游戏控制模块。在此只实现游戏
4、的游戏主界面模块、游戏控制模块。并且只是实现开始、暂停、退出等功能。1.3设计要达到的目标 本次设计要达到的目标分别从以下模块进行阐述:l 游戏主界面模块:游戏的主界面是进入游戏后,能够给玩家第一感官的部分,主要包括游戏图形区域界面、游戏的速度选择更新界面、游戏分数的显示更新界面、新生方块的预览、游戏开始按钮、暂停游戏按钮、退出游戏按钮以及游戏排行榜按钮。从很大程度上决定了玩家对游戏的兴趣问题,因此,游戏的主界面应该力求美观,爽心悦目。l 游戏控制模块: 这个模块是游戏的中心环节,主要完成控制游戏的开始、暂停、退出等功能。为了能够给玩家一个很好的游戏环境,这部分应该做到易懂、易操作。1.4 设
5、计实现功能和目标本设计所开发的是基于Java的一个贪吃蛇游戏软件,主要实现游戏的开始、暂停、退出、等功能,分为: 游戏主界面模块、游戏控制模块以二个模块。l 性能:本软件在设计方面本着方便、实用及娱乐性高的宗旨,在对界面进行设计的过程中,始终坚持清晰明了,在性能方面能够实现效率高,不易出错等优点。l 游戏主界面模块:主要包括游戏图形区域界面、游戏开始按钮、暂停游戏按钮、关闭按钮。游戏的主界面应该力求美观,爽心悦目。l 游戏控制模块:主要完成控制游戏的开始、暂停、退出等功能,这部分应该做到易懂、易操作而且准确率高,不易出错。1.5游戏设计环境 本次课程设计所涉及和实现的是用Java编程语言和JB
6、uilder开发工具开发的贪吃蛇游戏。本次设计的系统环境及工具如下: 运行环境:windows xp 编程语言:Java 使用工具:JBuilder 2005 二 分析与设计2.1 游戏处理流程 本次游戏设计的处理流程如图1所示。单击“开始游戏”按钮, 游戏开始,蛇开始随机。键盘操作: 向上左移右移向下没有吃到食物且蛇碰到边界单击“退出游戏”退出游戏游戏中途欲中断,稍后继续游戏单击“暂停游戏”游戏暂停进入游戏画面再次单击开始游戏,游戏恢复图1 游戏处理流程图2.2需求分析2.2.1 用户的特点 游戏开发成功后,最终用户为各个年龄段的人群,用户范围相当广泛。本游戏友好的用户界面,简单易学的按钮操
7、作以及简单通俗的游戏规则,使广大的用户不需要专门进行培训,就可以立即学会如何使用。2.2.2 功能需求2.2.2.1 游戏主界面模块需求游戏界面主框架主要包括游戏图形区域界面、游戏开始按钮、游戏暂停按钮、关闭按钮。2.2.2.2 游戏图形区域界面的需求游戏画布区主要应该包括游戏画布中贪吃蛇随机出现的位置,贪吃蛇重新出现的位置,事物随机出现的位置。2.2.3 属性需求在可使用性方面,要求各个功能实现简单,操作方便,系统处理正确;整个系统恢复性能好,连接速度快,以确保系统可使用性好。另外,还要求系统的可扩展性、可维护性、可移植性良好。2.3 功能模块设计软件开发过程中的功能模块设计,主要解决实现该
8、游戏需求的程序模块设计问题。包括如何把该游戏划分成若干个模块、决定各个模块之间的接口、模块之间传递的信息,以及模块结构的设计等。2.3.1 游戏功能 本系统主要完成以下几方面的功能:1. 游戏控制功能包括游戏的开始、暂停、退出2. 界面布局3. 其他辅助功能2.3.2 总设计模块的划分根据游戏需求中游戏所要实现的功能,整个游戏分为二个模块进行具体的设计,如图2所示。贪吃蛇游戏游戏主界面模块游戏控制模块图2 游戏总设计模块2.3.3 游戏主界面模块游戏界面主框架主要包括游戏图形区域界面、游戏的开始按钮、暂停按钮、游戏的退出按钮。游戏界面主框架的主要结构图如图3所示。游戏的主界面框架游戏图形区域界
9、面(即游戏画布)游戏控制按钮界面图3 游戏主界面框架2.3.4 游戏控制模块 游戏控制模块主要通过主界面上的按钮来控制游戏的开始、游戏的暂停、游戏的退出这三个功能以及控制游戏分数变化。在这个模块中,需要给各个按钮或文本框加入代码,来对上述的功能加以进一步的实现。 游戏控制模块的主要框架如图4所示。游戏控制模块游戏的开始功能游戏的暂停功能游戏的退出功能图4 游戏控制模块框架l 游戏开始控制:单击“游戏开始”按钮,游戏画布即有移动的贪吃蛇出现,游戏正式开始。l 游戏暂停控制:单击“暂停游戏”按钮,游戏暂停;再单击,游戏继续。l 游戏退出控制:单击“退出游戏”按钮,退出该游戏。2.3.5 类模块设计
10、2.3.5.1类模块之间关系通过对功能要求的分析,将贪吃蛇游戏功能划分为6个类模块,他们的关系如图5所示。SnakeApp(主类)(主类)SnakeFrame(用户界面类)SnakePanel(游戏界面 及内容)ArrayIndex(游戏方向)图5 贪吃蛇类之间的关系SnakeModel(游戏内容)ArrayIndexReadOnly(方向)(游戏方向)Listener类(控制速度)2.3.6 各类模块设计概要l SnakeApp类该类包含main方法,为应用程序的主类。该类用来创建游戏的用户界面,整个程序从该类的main方法开始执行。l SnakeFrame类用来设计游戏的用户界面。l Sn
11、akePanel类设置游戏运行状态,设置蛇头颜色,背景颜色,随机块颜色,移动以及分数更新,实现上下左右移动的方法接口。l SnakeModel类设置初始化蛇的形状和运行方向,设置随机块的位置,判断游戏是否出界,以及出界后的处理,设置方向的更新。l ArrayIndex类 用来得到坐标,设置坐标以及判断运行方向相同或相反。l ArrayIndexReadOnly类用来得到坐标,以及判断运行方向相同或相反。l Listener类用来控制游戏的速度2.3.7 游戏图形界面的图形显示更新功能游戏的图形区域界面主要是一个图形显示更新区域,主要包括随机食物的显示更新、进行中和游戏结束时的分数更新和游戏图形
12、区域界面的清除。游戏图形区域又很多小方格组成,主要是一个表格,根据相应格子的设置标志来显示相应的图形图片,这样就实现了贪吃蛇的实时显示。2.3.8 贪吃蛇蛇身的设计在贪吃蛇游戏中,具体的蛇身图形的设计是比较重要的一个方面。因为贪吃蛇游戏中主要的游戏动作就是控制蛇身的移动和转向,以便于覆盖随机块。由于主要的游戏动作都集中在蛇身上,因此蛇身设计就显得格外重要。2.3.9 内部接口 内部模块之间的接口是通过内部函数完成,在程序设计中用设计软件本身所带的调用函数实现。2.4 详细设计2.4.1程序主结构 本次所设计贪吃蛇游戏的程序主结构如图6所示。初始化进入事件等待状态初始化失败不正常退出开始请求相关
13、事件返回暂停请求退出正常退出图6 贪吃蛇程序主结构2.4.2 类模块程序流程图SnakeApp类创建SnakeFrame窗口类的一个实例设置关闭窗口按键和窗口的高度宽度图7 SnakeApp类程序流程图SnakeFrame类定义菜单及菜单项变量创建菜单及菜单项将组件注册给事件监听者处理各子菜单动作时间图8 SnakeFrame类程序流程图SnakePanel类设置蛇头身体,随机块和初始运行方向变量重新开始游戏时初始化处理游戏动作图9 SnakePanel类程序流程图设置蛇头、背景、随机块颜色实现移动接口定义数据成员实现按键接口SnakeModel类设置函数坐标和方向设置初始化状态图10 Sna
14、keModel类程序流程图设置贪吃蛇界面并初始化游戏是否与运行方向相反Y 保持原来 的方向按指示方向运动蛇是否吃了随机块Y 重设置蛇头和蛇身,重新生成随机块N 是否出界NNNY 游戏结束是否相交Y 游戏结束N移动,把蛇头加到蛇身体里面并且把尾巴移出是否与运行方向相同或相反方向更新,返回tureNArrayIndexReadOnly类构造函数得到坐标设置与运行方向相同和相反的表示方法图11 ArrayIndexReadOnly类程序流程图ArrayIndex类设置X,Y坐标设置与运行方向相同或相反的表示方法图12 ArrayIndex类程序流程图listener类创建一个Listener方法实现
15、监听接口 暂停时间是否大于10NY暂停时间设置为100按当前速度运行图13 listener类程序流程图2.4.3 类模块具体设计SnakeApp.java程序 SnakeApp类中包含main方法,为主类。在主类中创建了Snake Frame窗口类的一个实例。设计如下:l 成员变量表表1 SnakeApp.java程序成员变量表变量名称变量属性说明WIDTHprivate static final int窗体宽度HEIGHTprivate static final int窗体高度l 成员方法表 2 SnakeApp.java程序成员方法方法名称方法功能备注main创建了SnakeFrame窗
16、口类的一个实例,应用程序从main方法开始执行应用程序的入口方法SnakeFrame.java程序这个程序中包含二个类,下面分小节分别叙述。SnakekFrame类程序SnakeFrame类用来设计游戏的用户界面。在该界面上有用户玩游戏的功能菜单、游戏界面及游戏的状态栏。设计如下:l 成员变量表表3 SnakeFrame类程序成员变量表变量名称变量属性说明jMenu1JMenu主菜单项“游戏”startJMenuItem子菜单项“开始游戏”pauseJMenuItem子菜单项“暂停游戏”endJMenuItem子菜单项“结束游戏”quitJMenuItem子菜单项“关闭”l 成员方法表4 Sn
17、akeFrame类程序成员方法表方法名称方法功能备注SnakeFrame加载整个用户界面,注册子菜单的ActionEvent事件构造函数actionPerformedActionEvent事件处理方法。该方法处理各按钮的动作事件接口方法 listener类程序 具体设计如下:l 成员变量表表5 listener类程序成员变量表变量名称变量属性说明pauseprivate long游戏速度停顿时间l 成员方法表6 listener类程序成员方法方法名称方法功能备注listener用来控制游戏的速度构造函数actionPerformed把pause的值赋给speedtime,处理速度事件Array
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 课程设计 贪吃
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【天****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【天****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。