版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
..毕业设计论文作者学号系部专业题目指导教师评阅教师完成时间:..毕业设计(论文)中文摘要〔题目〕:基于Java的游戏设计——贪吃蛇摘要:"贪吃蛇〞游戏是使用Java语言开发的一款经典的游戏,它因操作简单、娱乐性强而广受欢送。本文基于Java技术和eclipse开发环境,开发了一个操作简单、界面美观、功能较齐全的"贪吃蛇〞游戏。整个游戏程序分为十个类模块,实现了游戏的开场、暂停、完毕,能够实现加速和减速。通过本游戏的开发,到达学习Java技术和熟悉软件开发流程的目的。本文在介绍Java相关技术时对"贪吃蛇〞游戏的整个生命周期的各个开发阶段进展了详细地介绍。首先,分析了开发本游戏软件的可行性;其次,从游戏主界面等几方面,分析了本游戏的功能需求;然后,进展了游戏的概要设计和详细设计,这也是本文的重点。概要设计给出两个功能模块的主框架以及八个类模块的函数调用关系;详细设计重点给出各个类模块的程序列表,介绍了各个类包含的变量、使用的方法,展示了游戏的界面。为了保证程序代码的正确性和功能实现的可靠性,本文还介绍了游戏软件的程序调试过程和功能测试结果。关键词:Javaeclipse贪吃蛇开发流程.PAGE.毕业设计(论文)外文摘要Title:Java-basedgamedesign——SnakeAbstract:SnakegameisaclassicgameusingtheJavalanguagedevelopment,itissimple,entertainingandpopular.ThisarticleisbasedonJavatechnologyandtheEclipsedevelopmentenvironment,developingasimple,beautifulinterface,Full-featured"Snake"game.Theentiregameprogramisdividedintotenmodules,thestartofthegame,pause,end,beingabletoachievespeedupandspeeddown.Throughthedevelopmentofthegame,toachievethepurposeoflearningJavatechnologyandfamiliarwiththesoftwaredevelopmentprocess.IntroducingJava-relatedtechnologies,adetaileddescriptionofthevariousdevelopmentphasesoftheentirelifecycleofthe"Snake"game.First,theanalysisofthefeasibilityofthedevelopmentofthegamesoftware;Secondly,thegamefromthemaingameinterfaceaspects,functionalrequirements;Then,theoutlinedesignanddetaileddesignofthegame,whichisthefocusofthisarticle.OutlinedesigngivesthemainframeofthetwofunctionalmodulesandTheeightmodulesfunctioncallrelationship;Detaileddesignfocusingofeachmoduleisgiventhelistofprograms,eachclasscontainsvariables,themethodsused,showingthegame'sinterface.Inordertoensurethecorrectnessandfunctionsachievingreliabilityoftheprogramcode,thearticlealsodescribestheresultsofthegamesoftwaredebuggingprocessandfunctionaltesting.keywords:JavaeclipseSnakethedevelopmentprocess..目录1绪论11.1Java语言的特点11.2开发工具Eclipse介绍21.3开发工具JDK介绍21.4应用环境32系统需求分析32.1需求分析32.2可行性分析33系统概要设计43.1游戏流程图43.2设计目标53.3系统功能模块53.4系统数据构造设计74系统详细设计104.1程序设计104.2贪吃蛇游戏各功能界面截图135系统测试165.1测试的意义165.2测试过程165.3测试结果17结论18致19参考文献19..1绪论贪吃蛇是世界知名的益智类小游戏,选择这个题目一方面是为了将我们自己的所学知识加以运用;另一方面,我希望通过自己的所学知识把它剖析开来,通过自己的动手实践,真正的了解它的本质和精华。希望通过这次实践,能从中提高自己的编程能力。并从中学会从零开场分析设计程序,到达学以致用,活学活用的目的。另外,通过本游戏的开发,到达学习Java技术和熟悉软件开发流程的目的。本游戏的开发语言为Java,开发工具选用Eclipse。Java是一种简单的,面向对象的,分布式的,解释型的,强健平安的,构造中立的,可移植的,性能优异、多线程的动态语言。这里采用Java作为开发语言主要是基于Java的面向对象和可移植性。Eclipse是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组效劳,用于通过插件组件构建开发环境。1.1Java语言的特点简单性Java与C++语言非常相近,但Java比C++简单,它抛弃了C++中的一些不是绝对必要的功能,如头文件、预处理文件、指针、构造、运算符重载、多重继承以及自动强迫同型。Java实现了自动的垃圾收集,简化了存管理的工作。平台无关性Java引进虚拟机原理,并运行于虚拟机,实现不同平台之间的Java接口。Java的数据类型与机器无关。平安性Java的编程类似C++,但舍弃了C++的指针对存储器地址的直接操作,程序运行时,存由操作系统分配,这样可以防止病毒通过指针入侵系统。它提供了平安管理器,防止程序的非法访问。面向对象Java吸收了C++面向对象的概念,将数据封装于类中,实现了程序的简洁性和便于维护性,使程序代码可以只需一次编译就可反复利用。1.1.5分布式Java建立在TCP/IP网络平台上,提供了用HTTP和FTP协议传送和接收信息的库函数,使用其相关技术可以十分方便的构建分布式应用系统。强健性Java致力于检查程序在编译和运行时的错误,并自动回收存,减少了存出错的可能性。Java取消了C语言的构造、指针、#define语句、多重继承、goto语句、操作符、重载等不易被掌握的特性,提供垃圾收集器自动回收不用的存空间。1.2开发工具Eclipse介绍Eclipse是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组效劳,用于通过插件组件构建开发环境。幸运的是,Eclipse附带了一个标准的插件集,包括Java开发工具〔JavaDevelopmentTools,JDT〕。虽然大多数用户很乐于将Eclipse当作JavaIDE来使用,但Eclipse的目标不仅限于此。Eclipse还包括插件开发环境〔Plug-inDevelopmentEnvironment,PDE〕,这个组件主要针对希望扩展Eclipse的软件开发人员,因为它允许他们构建与Eclipse环境无缝集成的工具。尽管Eclipse是使用Java语言开发的,但它的用途并不限于Java语言;例如,支持诸如C/C++等编程语言的插件已经可用,或预计会推出。Eclipse框架还可用来作为与软件开发无关的其他应用程序类型的根底,比方容管理系统等。1.3开发工具JDK介绍SunMicrosystems公司在推出Java语言的同时,推出了一套开发工具JDK。Sun提供的基于字符模式的Java开发工具包JDK:Java开发工具〔JDK〕是许多Java专家最初使用的开发环境。Java是平台无关的语言是因为用Java写的应用程序不用修改就可在不同的软硬件平台上运行。Java源程序编写借助于记事本编辑工具。所有的Java文件编辑、编译、调试、解释运行都是通过使用字符命令来执行操作。JDK由一个标准类库和一组建立,测试及建立文档的Java实用程序组成。其核心JavaAPI是一些预定义的类库,开发人员需要用这些类来访问Java语言的功能。JDK是整个Java的核心,包括了Java运行环境〔JavaRuntimeEnvironment〕,一堆Java工具和Java根底的类库。不管什么Java应用效劳器实质都是置了某个版本的JDK。因此掌握JDK是学好Java的第一步。最主流的JDK是Sun公司发布的JDK,除了Sun之外,还有很多公司和组织都开发了自己的JDK,例如IBM公司开发的JDK,BEA公司的Jrocket,还有GNU组织开发的JDK等等。其中IBM的JDK包含的JVM〔JavaVirtualMachine〕运行效率要比SunJDK包含的JVM高出许多。而专门运行在x86平台的Jrocket在效劳端运行效率也要比SunJDK好很多。1.4应用环境(1)操作系统:Windows7,Windowsxp等。(2)应用软件:jdk7.1,eclipse。2系统需求分析2.1需求分析本系统主要是完成贪吃蛇游戏的根本操作,用户可以自己练习和娱乐。本系统需要满足以下几点要求:(1)利用方向键来改变蛇的运行方向。(2)空格键或回车键暂停或继续游戏,并在随机的地方产生食物,PgUp和PgDn控制速度快慢。(3)吃到食物就变成新的蛇体,碰到壁或自身那么游戏完毕,否那么正常运行。2.2可行性分析贪吃蛇游戏是一种简单的群众的游戏,自从计算机实现以来,深受广阔电脑玩家的喜爱,做一个简单的贪吃蛇小游戏,也比拟符合现代人用来打发闲暇时光的方式。贪吃蛇的核心算法是如何实现移动和吃掉食物,没有碰到食物的时候,把当前运动方向上的下个节点入队,并以蛇节点的颜色绘制这个节点,然后把头指针所指的节点出队,并以游戏框架部背风光重绘出队的节点,这样就可以到达移动的效果。而在吃到食物的时候,那么只需把食物入队即可。实现贪吃蛇的根本的蛇身移动、吃到食物身体增长、和碰到墙壁或自身死亡,能够暂停和开场。本次设计主要运用java语言来完成。Java语言是一种跨平台,适合于分布式计算环境的面向对象编程语言,用Java写的应用程序不用修改就可在不同的软硬件平台上运行。由于Java主要用于网络应用程序开发,因此对平安性有较高的要求。如果没有平安保证,用户从网络下载程序执行就非常危险。Java通过自己的平安机制防止了病毒程序的产生和下载程序对本地系统的威胁破坏。3系统概要设计3.1游戏流程图进入游戏界面进入游戏界面点击开场按钮,游戏开场,蛇随机产生/^\/^\点击开场按钮,游戏开场,蛇随机产生/^\/^\_|__|O|\//~\_/\\____|__________/\\_______\`\\\||\//\//\\//\\//\\//__\\//_-~~-_||((_-~_--_~-__/|\~-____-~_-~~-_~-_-~/~-__-~~-__-~~--______-~~-___-~操作:空格:暂停操作:空格:暂停上移:下移:左移:右移:游戏中途欲中断,稍候进展游戏没有吃到食物,且碰到边界游戏中途欲中断,稍候进展游戏没有吃到食物,且碰到边界单击重新开场游戏单击暂停游戏单击重新开场游戏单击暂停游戏单击开场游戏,游戏恢复正常单击开场游戏,游戏恢复正常图3-1游戏流程图3.2游戏整体构造图图3-2游戏整体构造图3.3设计目标本系统是针对贪吃蛇小游戏的Java程序,利用方向键来改变蛇的运行方向,空格键暂停或继续游戏,并在随机的地方产生食物,吃到食物就变成新的蛇体,碰到壁或自身那么游戏完毕,否那么正常运行。3.4系统功能模块1、本系统共包括10个类文件。java源文件及其功能如表所示。表3-1java源文件及其功能序号文件名主要功能1MainFrame该文件为程序入口,含有main方法。2GameOptionPanel实现菜单控制运行等总体要求,实现方向键控制蛇的方向,空格键控制游戏暂停或继续等。3SnakeListener蛇的监听器4GameListener游戏监听器5Food该文件实现组成蛇身的单位-食物。6Ground该文件实现障碍物-石头7Snake该文件实现蛇类8Global该文件为工具类,实现一些配置9Controller控制器,控制蛇、食物、石头10GamePanel游戏的显示界面设置2、主要类之间的对应关系如下:图3-3主要类之间的关系3、因为蛇不能直接操作显示面板〔GamePanel〕,所以定义一个监视器SnakeListener,里面有两个方法:snakeMoved〔〕和snakeEatFood()。图3-4通过事件监听建立联系3.5系统数据构造设计蛇、石头、食物的表示用一个大的表格来表示显示区域,里面的格子就是组成蛇的根本单位,一个格子可以代表一个食物,也可以代表一个石头,几块连在一起的石头就可以代表一条蛇。使用坐标来区分这些格子。图3-5蛇、石头、食物的表示这里用一个集合来存储这些坐标,并且要求能够区分出蛇头和蛇尾。蛇的移动蛇向前移动一步,可以看作是蛇头前面增加了一个节点,蛇的尾巴上少了一个节点〔即去尾,加头〕图3-6蛇的移动存储蛇身的数据构造由于要区分蛇头和蛇尾,因此这个数据构造必须是有序的。另一方面,我们需要经常的访问第一个和最后一个节点,所以LinkedList最适宜。因为它有getFirst(),getLast(),和removeLast()方法。图3-7根据原蛇头和方向计算新蛇头的坐标蛇的移动方向蛇下一步移动到哪里,是由方向来控制的。根据原蛇头的坐标和方向来确定新蛇头的坐标,因此在这里用int型常量来表示蛇的移动方向。在原坐标的根底上,根据蛇头的运动方向来确定新蛇头的坐标,比方向上移动就是y-1。在Snake中增加蛇的方向向量:publicstaticfinalintUP=1;上 publicstaticfinalintDOWN=-1;下 publicstaticfinalintLEFT=2;左 publicstaticfinalintRIGHT=-2;右如何显示蛇身显示蛇身,其实就是填充,用颜色填充格子。需要4个参数,像素坐标x,像素坐标y,格子宽度,格子高度。像素坐标就是矩形左上角的坐标图3-8格子坐标和像素坐标蛇身的移动方向〔1〕相反方向和上一次移动的方向相反的方向称为相反方向,这种输入应该忽略。这样可以防止蛇从自己的身体中穿过。〔2〕无效方向在蛇的这一次移动之后和下一次移动之前这个时间间隔输入了多个非相反方向,只有最后一个是有效方向,其他的都是无效方向。蛇的最终运动方向以有效方向为准。Snake中增加监听器,并另外启动一个线程来不断调用蛇的move(),在Snake中提供一个启动线程的方法。吃到食物判定通过判定坐标是否重合来判断,只需要判断蛇头是否和食物重合就可以了,因为蛇的身体都是走蛇头走过的地方,蛇吃掉食物后身体就会变长。在Controller的snakeMoved中添加如下代码:/*判断是否吃到食物*/ if(food!=null&&food.isSnakeEatFood(snake)){ /*吃到食物后,蛇增加身体,再重新丢一个食物*/ snake.eatFood(); food.setLocation(ground==null"food.getNew():ground .getFreePoint()); }/*如果吃到食物,就肯定不会吃到石头*/ elseif(ground!=null&&ground.isSnakeEatRock(snake)){ /*如果吃到的是石头,或吃到自己的身体,就让蛇死掉*/ stopGame(); }if(snake.isEatBody()) stopGame();4系统详细设计4.1程序设计主类MainFrame〔1〕主类为此程序的入口,定义了MainFrame的对象frame,开场运行此程序。〔2〕源代码见文件MainFrame.Java类MainFrame〔1〕成员变量见表4-1表4-1主要成员变量成员变量描述变量类型名称选项面板privateGameOptionPaneloptionPanel游戏面板privateGamePanelgamePanel蛇类对象privateSnakesnake石头对象privateGroundground食物对象privateFoodfood控制对象privateControllercontroller速度标签privateJLabelinfoLabel〔2〕方法见表4-2表4-2主要方法方法名功能gameOver()游戏完毕gameStart()游戏开场gameContinue()游戏继续gamePause()游戏暂停类Snake〔1〕成员变量见表4-3表4-3主要成员变量成员变量描述变量类型名称上下左右(方向)intUP、DOWN、LEFT、RIGHT蛇体LinkedList<Point>body蛇头坐标Pointhead蛇尾坐标Pointtail是否活着booleanlive是否暂停booleanpause速度intspeed监听Set<SnakeListener>listener〔2〕方法见表4-4表4-4主要方法方法名功能eatFood()判断食物是否被蛇吃掉,如果食物在蛇运行方向的正前方,并且与蛇头接触,那么被吃掉setHeadColor()设置蛇头的颜色setBodyColor()设置蛇身的颜色changeDirection(int)改变运行方向move()蛇在运行中所采取的措施begin()开启一个新的线程驱动蛇定时移动类Food〔1〕成员变量见表4-5表4-5主要成员变量成员变量描述变量类型名称颜色privateColorcolor随机privateRandomrandom〔2〕源代码见文件Food.java类Controller该类包含控制器和处理按键逻辑,控制器,控制Ground,Snake,Food,负责游戏的逻辑处理按键事件,实现了SnakeListener接口的snakeMoved()方法,可以处理Snake触发的事件,该类继承KeyAdapter类并且覆盖keyPressed()方法:处理按键事件,根据按键不同,发出不同的指令:UP:改变蛇的移动方向为向上DOWN:改变蛇的移动方向为向下LEFT:改变蛇的移动方向为向左RIGHT:改变蛇的移动方向为向右SPACE:暂停/继续PgUp/PgDn:加速/减速蛇的移动Y:开场新游戏的方法类Ground可以叫做地形,或地面,和食物一样,Ground也有x,y坐标和颜色等属性,构造方法Ground()初始化地图,设置格局,可以通过setRockColor()方法设置石头的颜色,方法isSnakeEatRock()判断蛇是否吃到食物,最后运用drawMe()方法显示石头。源代码见文件Ground.java类GameListener此类为游戏监听类,实现游戏的监听功能。源代码见文件GameListener.java类SnakeListener此类为蛇的监听类,实现蛇运动的监听,蛇移动的监听snakeMoved(),蛇吃到食物的监听snakeEatFood()。源代码见文件SnakeListener.java类Global工具类此类中存放了其他类中用到的一些常量:格子的像素〔宽度,高度〕、蛇的初始长度和初始速度等。源代码见文件Global.java类GameOptionPanel此类为游戏的选项面板类,实现游戏面板的控制。源代码见文件GameOptionPanel.java类GamePanel此类为游戏的显示界面设置,可以通过setBackgroundColor()设置游戏的背景颜色。源代码见文件GamePanel.java4.2贪吃蛇游戏各功能界面截图游戏的初始界面图4-1初始界面图4-2控制面板图4-3速度标签游戏运行过程界面〔1〕鼠标点击开场新游戏按钮,开场游戏:图4-4开场游戏图4-5开场游戏〔有加速有改颜色有网格〕〔2〕按空格键,游戏开场运行,蛇开场移动,并且吃到一次食物即红色方块后就变成蛇体:图4-6吃到食物身体变长〔3〕按方向键改变蛇的运行方向,并且碰壁后从新开场游戏,红色方块随机地方产生:图4-7碰壁死亡5系统测试5.1测试的意义系统测试是为了发现错误而执行程序的过程,成功的测试是发现了至今尚未发现的错误的测试。测试的目的就是希望能以最少的人力和时间发现潜在的各种错误和缺陷。应根据开发各阶段的需求、设计等文档或程序的部构造精心设计测试用例,并利用这些实例来运行程序,以便发现错误。系统测试是保证系统质量和可靠性的关键步骤,是对系统开发过程中的系统分析系统设计和实施的最后复查。根据测试的概念和目的,在进展信息系统测试时应遵循以根本原那么。5.2测试过程(1)拟定测试方案。在制定测试方案时,要充分考虑整个工程的开发时间和开发进程以及一些人为因素和客观条件等,使得测试方案是可行的。测试方案的容主要有测试的容、进度安排、测试所需的环境和条件、测试培训安排等。(2)编制测试大纲。测试大纲是测试的依据。它明确详尽地规定了在测试中针对系统的每一项功能或特性所必须完成的根本测试工程和测试完成的标准。(3)根据测试大纲设计和生成测试用例。在设计测试用例的时候,可综合利用前面介绍的测试用例和设计技术,产生测试设计说明文档,其容主要有被测工程、输人数据、测试过程、预期输出结果等。(4)实施测试。测试的实施阶段是由一系列的测试周期组成的。在每个测试周期中,测试人员和开发人员将依据预先编制好的测试大纲和准备好的测试用例,对被测软件或设备进展完整的测试。(5)生成测试报告。测试完成后,要形成相应的测试报告,主要对测试进展概要说明,列出测试的结论,指出缺陷和错误,另外,给出一些建议,如可采用的修改方法,各项修改预计的工作量及修改的负责人员。5.3测试结果贪吃蛇测试情况如表5-1所示:表5-1贪吃蛇测试情况执行的操作期望的结果实际结果翻开文件,运行代码代码正常运行,无错误信息符合期望结果点击"开场游戏〞贪吃蛇出现,食物出现符合期望结果点击"暂停游戏〞游戏暂停,蛇和食物都静止符合期望结果点击"停顿游戏〞游戏停顿,重新开场新游戏符合期望结果利用方向键控制方向,空格键暂停游戏蛇运行方向正常,空格键暂停游戏符合期望结果键盘按PgUp/PgDn蛇加速/减速运动符合期望结果点击"设置背景颜色〞出现颜色选项,背景颜色变化符合期望结果点击"设置蛇头/蛇身/食物颜色〞蛇头、蛇身和食物颜色变化明显且显示正常效果符合期望结果"显示网格〞打钩出现网格,并且自行选择网格颜色符合期望结果点击"恢复默认设置〞所有设置都恢复到初始化状态符合期望结果蛇每吃到一个食物身体变长符合期望结果蛇碰壁或者吃到自己的身体完毕游戏符合期望结果通过以上测试,验证程序运行正常,没有发现什么错误。结论毕业设计是我们作为学生在学习阶段的最后一个环节,是对所学根底知识和专业知识的一种综合应用,是一种综合的再学习、再提高的过程,这一过程对我们学生的学习能力和独立思考及工作能力也是一个培养,同时毕业设计的水平也反映了大学教育的综合水平,因此学校十分重视毕业设计这一环节,加强了对毕业设计工作的指导和发动教育。在大学的学习过程中,毕业设计是一个重要的环节,是我们步入社会参与实际工作的一次极好的演示,也是对我们自学能力和解决问题能力的一次考验,是学校生活与社会生活间的过渡。在完成毕业设计的这段时间里,我收获颇多:通过这次的java贪吃蛇游戏设计我了解到java语言的特点:简单性、面向对象、平台无关性、可移植性、解释性、髙性能、动态性、可靠性和平安性、多线程、分布式处理等,在课程设计过程中不仅稳固了我们以前的根底理论知识,而且使我们各个方面的能力都有很大的提高。从一开场的无从下手,到不断的查阅资料,图书馆借书,再到请教教师的帮助,这些都很好的锻炼了我们理论联系实际,与具体工程、课题相结合的能力,开发、设计游戏的能力进一步在课程设计中表达。这让我学会了很多,为以后的学习和工作加强。在设计过程中,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 材料采购合同格式
- 地铁工程钻孔桩拆除作业合同
- 大学生就业合同范本
- 个人车辆按揭贷款合同范文
- 企业年金基金投资管理合同
- 赠与合同的解除
- 2024年建设工程设计合同文本范本
- 商标转让合同文件(2024年版)
- 拍卖合同范本-合同范本
- 房屋购买权转让合同示例
- 人工智能技术应用专业调研报告
- 33 《鱼我所欲也》对比阅读-2024-2025中考语文文言文阅读专项训练(含答案)
- 《中华民族共同体概论》考试复习题库(含答案)
- 翰伯特的分裂人格—对电影《洛丽塔》(1997)的分析(英文)
- 人教部编版二年级数学上册《总复习(全章)》PPT教学课件
- 低压配电柜操作规程1
- 《美团外卖商家运营》ppt课件
- 员工档案表范本
- 归档文件整理规则DA/T22—2015
- 安全生产组织机构保证体系框架图
- 美国纽约摄影学院PPT课件
评论
0/150
提交评论