版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于Java的游戏“贪吃蛇”的设计和实现一系统描述1.1本设计的目的和意义贪吃蛇游戏一款非常经典的手机游戏,因为它比较简单有趣,无论老少都比较适合。贪吃蛇的设计对每一个Java语言设计者进行语言提高和进阶都是一个很好的锻炼机会。贪吃蛇游戏的设计比较复杂,它涉及面广、牵涉方面多,如果不好好考虑和设计,将难以成功开发出这个游戏。在这个游戏的设计中,牵涉到图形界面的显示与更新、数据的收集与更新,并且在这个游戏的开发中,还要应用类的继承机制以及一些设计模式。因此,如何设计和开发好这个贪吃蛇游戏,对于提高Java开发水平和系统的设计能力有极大的帮助。在设计开发过程中,需要处理好各个类之间的继承关系,还要处理各个类相应的封装,并且还要协调好各个模块之间的逻辑依赖关系和数据通信关系。正是因为如此,本次毕业设计的目的在于学习Java程序设计基本技术,学习用JBuilder开发Java程序的相关技术,熟悉游戏“贪吃蛇”的需求,熟悉项目开发的完整过程。学会怎样进行一个项目的需求分析、概要设计、详细设计等软件开发过程,熟练地掌握Java程序设计的基本技术和方法,熟练地掌握JBuilder环境的使用方法,培养起初步的项目分析能力和程序设计能力。1.2设计的主要内容贪吃蛇游戏设计与实现,主要分为以下二个模块:游戏主界面模块游戏控制模块。在此只实现游戏的游戏主界面模块、游戏控制模块。并且只是实现开始、暂停、退出等功能。1.3设计要达到的目标游戏主界面模块:游戏的主界面是进入游戏后,能够给玩家第一感官的部分,主要包括游戏图形区域界面、游戏的速度选择更新界面、游戏分数的显示更新界面、新生方块的预览、游戏开始按钮、暂停游戏按钮、退出游戏按钮以及游戏排行榜按钮。从很大程度上决定了玩家对游戏的兴趣问题,因此,游戏的主界面应该力求美观,爽心悦目。游戏控制模块:这个模块是游戏的中心环节,主要完成控制游戏的开始、暂停、退出等功能。为了能够给玩家一个很好的游戏环境,这部分应该做到易懂、易操作。二分析与设计本次游戏设计的处理流程如图1所示。单击单击“开始游戏”按钮,游戏开始,蛇开始随机。键盘操作:向上左移右移向下没有吃到食物且蛇碰到边界单击“退出游戏”退出游戏游戏中途欲中断,稍后继续游戏单击“暂停游戏”游戏暂停再次单击开始游戏,游戏恢复图1游戏处理流程图进入游戏画面2.2需求分析2.2.1用户的特点游戏开发成功后,最终用户为各个年龄段的人群,用户范围相当广泛。本游戏友好的用户界面,简单易学的按钮操作以及简单通俗的游戏规则,使广大的用户不需要专门进行培训,就可以立即学会如何使用。2.2.2功能需求2.2.2.1游戏主界面模块需求游戏界面主框架主要包括游戏图形区域界面、游戏开始按钮、游戏暂停按钮、关闭按钮。2.2.2.2游戏图形区域界面的需求游戏画布区主要应该包括游戏画布中贪吃蛇随机出现的位置,贪吃蛇重新出现的位置,事物随机出现的位置。2.2.3属性需求在可使用性方面,要求各个功能实现简单,操作方便,系统处理正确;整个系统恢复性能好,连接速度快,以确保系统可使用性好。另外,还要求系统的可扩展性、可维护性、可移植性良好。2.3功能模块设计软件开发过程中的功能模块设计,主要解决实现该游戏需求的程序模块设计问题。包括如何把该游戏划分成若干个模块、决定各个模块之间的接口、模块之间传递的信息,以及模块结构的设计等。2.3.1游戏功能本系统主要完成以下几方面的功能:游戏控制功能——包括游戏的开始、暂停、退出界面布局其他辅助功能2.3.2总设计模块的划分根据游戏需求中游戏所要实现的功能,整个游戏分为二个模块进行具体的设计,如图2所示。贪吃蛇游戏游戏主界面模块游戏控制模块图2游戏总设计模块2.3.3贪吃蛇游戏游戏主界面模块游戏控制模块图2游戏总设计模块游戏界面主框架主要包括游戏图形区域界面、游戏的开始按钮、暂停按钮、游戏的退出按钮。游戏的主界面框架游戏图形区域界面(即游戏画布)游戏的主界面框架游戏图形区域界面(即游戏画布)游戏控制按钮界面图3游戏主界面框架游戏控制模块主要通过主界面上的按钮来控制游戏的开始、游戏的暂停、游戏的退出这三个功能以及控制游戏分数变化。在这个模块中,需要给各个按钮或文本框加入代码,来对上述的功能加以进一步的实现。游戏控制模块的主要框架如图4所示。游戏控制模块游戏控制模块游戏的开始功能游戏的暂停功能游戏的退出功能图4游戏控制模块框架四心得体会通过这次课程设计,我对上学期所学的JAVA语言程序设计有一个更深刻的了解,将所学的知识应用于实践,由于所学知识有限,为了使游戏能够能够实现自己预先的构想,我们这组通过上网找代码和去图书馆借书找程序,比较画好的流程图及功能模块,不断阅读修改代码使程序达到预期所要实现的目标,完成课程设计后,可以感觉到自己对Java程序的又有了新的认识。在这次课程设计中,我主要负责窗体和判断蛇的运动的设计和开发,在SnakeApp类中先定义了窗体的长度和宽度,然后通过frame.show()显示窗体,用注册监听器到Window的接口,利用System.exit(0)语句来完成关闭窗口的设计,在窗体大小的设计中,宽度和高度是采用宏定义的形式。在ArrayIndex和ArrayIndexReadOnly类的设计中,两个类的设计基本相似,但是在本组成员其他类的调用中用法不一样,先定义了X和y的坐标,定义构造函数,用getx()和gety()方法得到X和Y的坐标,用setX(intx)和setY(inty)方法设置X和Y的坐标,用布尔型判断equalOrReV,equals,reverse方法,判断蛇的各种运行方向,以便在其他设计中能够更好的判断蛇是否出界,是否与随机块即食物出现时正在运行的方向一致。在做Java设计之前也有做过其他的课程设计,大多规模很小。在数据库、各种应用软件和游戏中,我仍觉得对游戏的设计有极大的热情。因为其各个模块间的联系十分紧密,代码重复执行率高,当经过无数次的调试、修改后,能最终看到成品,有无比自豪的心情。大学期间做过图书馆管理程序等简单的数据库管理系统的课程设计,思想大致相似,变化范围有限,没有太多自己可发挥的余地。大家作品的最终结果都离不开同一个模式。相比一些数据库软件,游戏的设计有很多人情色彩和艺术思想的发挥,正式商业的软件的人性化界面和各个游戏间迥异的结构每每会让人有去开发的冲动。综合运用以前所学习的知识,设计一个JAVA手机游戏,并能实现以下的功能:游戏声音的控制、游戏等级的控制、最高分的记录、游戏暂停、游戏重新开始、游戏的结束。总之,通过本次的课程设计,使我平时学到的理论知识得到了很好地升华,理论与实际得到一次很好的结合,为我今后参加工作打下了坚实的基础,使我受益匪浅。参考文献[1]魏伟译.JBuilder开发人员指南[M].北京:机械工业出版社,2001.1.[2]胡雷,叶曙光,徐饪.JBuilder9.0入门与提高[M].北京:机械工业出版社,2004.[3]田勇,孙新.Jbuilder开发人员指南[M].北京:机械工业出版社,2001.[4]李尊朝,苏军.Java语言程序设计(第二版)[M].北京:中国铁道出版社,2009.[5]黄晓东.Java课程设计案例精编(第二版)[M].北京:中国水利水电出版社,2008.[6]陆光义,宋现锋.Java游戏编程导学[M].北京:清华大学出版社.2004.附录“贪吃蛇游戏”程序部分源代码=1\*CHINESENUM3一、SnakeApp.javapackagecccc;importjavax.swing.*;importjava.util.*;importjava.awt.*;importjava.awt.event.*;classSnakeApp{ publicstaticvoidmain(String[]args)//主函数{ SnakeFrameframe=newSnakeFrame(); frame.addWindowListener(newWindowAdapter()//注册事件监听器{ publicvoidwindowClosing(WindowEvente)//关闭窗体{ System.exit(0); }}); frame.setSize(WIDTH,HEIGHT);//设置窗体大小 frame.setResizable(false); frame.setLocation(300,200); frame.setTitle("贪吃蛇v1.0");//设置窗体标题为贪吃蛇v1.0 //显示窗口 frame.show(); } privatestaticfinalintWIDTH=300;//宽度值为300 privatestaticfinalintHEIGHT=270;//高度值为270}=2\*CHINESENUM3二、ArrayIndex.javapackagecccc;publicclassArrayIndex{ privateintx;//定义x坐标 privateinty;//定义y坐标 ArrayIndex(intx,inty)//构造函数{ this.x=x; this.y=y; } intgetX()//得到x坐标{ returnx; } intgetY()//得到y坐标{ returny; } voidsetX(intx)//设置x坐标{ this.x=x; } voidsetY(inty)//设置y坐标{ this.y=y; } publicbooleanequalOrRev(ArrayIndexe)//运动的方向相同或相反{ return((e.getX()==getX())&&(e.getY()==getY())) ||((e.getX()==getX())&&(e.getY()==-1*getY())) ||((e.getX()==-1*getX())&&(e.getY()==getY())); } publicbooleanequals(ArrayIndexe)//运动方向相同{ return(e.getX()==getX())&&(e.getY()==getY()); } publicbooleanreverse(ArrayIndexe)//运动方向相反{ return((e.getX()==getX())&&(e.getY()==-1*getY())) ||((e.getX()==-1*getX())&&(e.getY()==getY())); } }}=3\*CHINESENUM3三.ArrayIndexReadOnly.javapackagecccc;publicclassArrayIndexReadOnly{ privateintx;//定义x坐标 privateinty;//定义y坐标 ArrayIndexReadOnly(intx,inty)//构造函数{ this.x=x; this.y=y; } intgetX()//得到x坐标{ returnx; } intgetY()//得到y坐标{ returny; } publicbooleanequalOrRev(ArrayIndexReadOnlye)//运动的方向相同或相反{ return((e.getX()==getX())&&(e.getY()==getY())) ||((e.getX()==getX())&&(e.getY()==-1*getY())) ||((e.getX()==-1*getX())&&(e.getY()==getY())); } p
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年顺平县带编教师招聘笔试参考题库及答案解析
- 2026年平阳县医疗事业单位人员招聘考试备考题库及答案解析
- 2026年西和县社区工作者招聘考试模拟试题及答案解析
- 2026年洛南县医疗事业单位人员招聘考试模拟试题及答案解析
- 2026年宁蒗彝族自治县医疗事业单位人员招聘考试参考题库及答案解析
- 2026年隆尧县医疗事业单位人员招聘考试模拟试题及答案解析
- 2026年清河县带编教师招聘考试参考题库及答案解析
- 2026年通江县医疗事业单位人员招聘笔试模拟试题及答案解析
- 2026年卢龙县医疗事业单位人员招聘笔试模拟试题及答案解析
- 2026年涞源县社区工作者招聘考试备考试题及答案解析
- 护士执业资格考试子宫脱垂2026年真题高频专项试卷含解析
- TCABEE080-2024零碳建筑测评标准(试行)
- 机务维修招聘笔试题及答案
- 华润公司介绍
- 小学英语人教版PEP四年级上册 开学第一课 课件
- 2026年内蒙古公务员考试申论乡村振兴范文含答案
- 幼儿园宗教知识
- 眼科期末考试试卷及答案
- 2025年广州美术学院招聘真题(行政管理岗)
- 高中主题班会 高一下学期《承担责任-成长的第一步》主题班会课件
- 《智慧医院医用耗材SPD物流管理流程技术规范》
评论
0/150
提交评论