毕业论文基于java的贪吃蛇游戏设计管理资料.docx
- 文档编号:29987624
- 上传时间:2023-08-04
- 格式:DOCX
- 页数:25
- 大小:518.21KB
毕业论文基于java的贪吃蛇游戏设计管理资料.docx
《毕业论文基于java的贪吃蛇游戏设计管理资料.docx》由会员分享,可在线阅读,更多相关《毕业论文基于java的贪吃蛇游戏设计管理资料.docx(25页珍藏版)》请在冰豆网上搜索。
毕业论文基于java的贪吃蛇游戏设计管理资料
毕业设计论文
作者学号
系部
专业
题目基于Java的贪吃蛇游戏设计
指导教师
评阅教师
完成时间:
毕业设计(论文)中文摘要
(题目):
基于Java的游戏设计——贪吃蛇
摘要:
“贪吃蛇”游戏是使用Java语言开发的一款经典的游戏,它因操作简单、娱乐性强而广受欢迎。
本文基于Java技术和eclipse开发环境,开发了一个操作简单、界面美观、功能较齐全的“贪吃蛇”游戏。
整个游戏程序分为十个类模块,实现了游戏的开始、暂停、结束,能够实现加速和减速。
通过本游戏的开发,达到学习Java技术和熟悉软件开发流程的目的。
本文在介绍Java相关技术时对“贪吃蛇”游戏的整个生命周期的各个开发阶段进行了详细地介绍。
首先,分析了开发本游戏软件的可行性;其次,从游戏主界面等几方面,分析了本游戏的功能需求;然后,进行了游戏的概要设计和详细设计,这也是本文的重点。
概要设计给出两个功能模块的主框架以及八个类模块的函数调用关系;详细设计重点给出各个类模块的程序列表,介绍了各个类包含的变量、使用的方法,展示了游戏的界面。
为了保证程序代码的正确性和功能实现的可靠性,本文还介绍了游戏软件的程序调试过程和功能测试结果。
关键词:
Javaeclipse贪吃蛇开发流程
毕业设计(论文)外文摘要
Title:
Java-basedgamedesign——Snake
Abstract:
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绪论
贪吃蛇是世界知名的益智类小游戏,选择这个题目一方面是为了将我们自己的所学知识加以运用;另一方面,我希望通过自己的所学知识把它剖析开来,通过自己的动手实践,真正的了解它的本质和精髓。
希望通过这次实践,能从中提高自己的编程能力。
并从中学会从零开始分析设计程序,达到学以致用,活学活用的目的。
另外,通过本游戏的开发,达到学习Java技术和熟悉软件开发流程的目的。
本游戏的开发语言为Java,开发工具选用Eclipse。
Java是一种简单的,面向对象的,分布式的,解释型的,健壮安全的,结构中立的,可移植的,性能优异、多线程的动态语言。
这里采用Java作为开发语言主要是基于Java的面向对象和可移植性。
Eclipse是一个开放源代码的、基于Java的可扩展开发平台。
就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。
Java语言的特点
简单性
Java与C++语言非常相近,但Java比C++简单,它抛弃了C++中的一些不是绝对必要的功能,如头文件、预处理文件、指针、结构、运算符重载、多重继承以及自动强迫同型。
Java实现了自动的垃圾收集,简化了内存管理的工作。
平台无关性
Java引进虚拟机原理,并运行于虚拟机,实现不同平台之间的Java接口。
Java的数据类型与机器无关。
安全性
Java的编程类似C++,但舍弃了C++的指针对存储器地址的直接操作,程序运行时,内存由操作系统分配,这样可以避免病毒通过指针入侵系统。
它提供了安全管理器,防止程序的非法访问。
面向对象
Java吸收了C++面向对象的概念,将数据封装于类中,实现了程序的简洁性和便于维护性,使程序代码可以只需一次编译就可反复利用。
分布式
Java建立在TCP/IP网络平台上,提供了用HTTP和FTP协议传送和接收信息的库函数,使用其相关技术可以十分方便的构建分布式应用系统。
健壮性
Java致力于检查程序在编译和运行时的错误,并自动回收内存,减少了内存出错的可能性。
Java取消了C语言的结构、指针、#define语句、多重继承、goto语句、操作符、重载等不易被掌握的特性,提供垃圾收集器自动回收不用的内存空间。
开发工具Eclipse介绍
Eclipse是一个开放源代码的、基于Java的可扩展开发平台。
就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。
幸运的是,Eclipse附带了一个标准的插件集,包括Java开发工具(JavaDevelopmentTools,JDT)。
虽然大多数用户很乐于将Eclipse当作JavaIDE来使用,但Eclipse的目标不仅限于此。
Eclipse还包括插件开发环境(Plug-inDevelopmentEnvironment,PDE),这个组件主要针对希望扩展Eclipse的软件开发人员,因为它允许他们构建与Eclipse环境无缝集成的工具。
尽管Eclipse是使用Java语言开发的,但它的用途并不限于Java语言;例如,支持诸如C/C++等编程语言的插件已经可用,或预计会推出。
Eclipse框架还可用来作为与软件开发无关的其他应用程序类型的基础,比如内容管理系统等。
开发工具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)操作系统:
Windows7,Windowsxp等。
(2)应用软件:
,eclipse。
2系统需求分析
需求分析
本系统主要是完成贪吃蛇游戏的基本操作,用户可以自己练习和娱乐。
本系统需要满足以下几点要求:
(1)利用方向键来改变蛇的运行方向。
(2)空格键或回车键暂停或继续游戏,并在随机的地方产生食物,PgUp和PgDn控制速度快慢。
(3)吃到食物就变成新的蛇体,碰到壁或自身则游戏结束,否则正常运行。
可行性分析
贪吃蛇游戏是一种简单的大众的游戏,自从计算机实现以来,深受广大电脑玩家的喜爱,做一个简单的贪吃蛇小游戏,也比较符合现代人用来打发闲暇时光的方式。
贪吃蛇的核心算法是如何实现移动和吃掉食物,没有碰到食物的时候,把当前运动方向上的下个节点入队,并以蛇节点的颜色绘制这个节点,然后把头指针所指的节点出队,并以游戏框架内部背景色重绘出队的节点,这样就可以达到移动的效果。
而在吃到食物的时候,则只需把食物入队即可。
实现贪吃蛇的基本的蛇身移动、吃到食物身体增长、和碰到墙壁或自身死亡,能够暂停和开始。
本次设计主要运用java语言来完成。
Java语言是一种跨平台,适合于分布式计算环境的面向对象编程语言,用Java写的应用程序不用修改就可在不同的软硬件平台上运行。
由于Java主要用于网络应用程序开发,因此对安全性有较高的要求。
如果没有安全保证,用户从网络下载程序执行就非常危险。
Java通过自己的安全机制防止了病毒程序的产生和下载程序对本地系统的威胁破坏。
3系统概要设计
游戏流程图
图3-1游戏流程图
游戏整体结构图
图3-2游戏整体结构图
设计目标
本系统是针对贪吃蛇小游戏的Java程序,利用方向键来改变蛇的运行方向,空格键暂停或继续游戏,并在随机的地方产生食物,吃到食物就变成新的蛇体,碰到壁或自身则游戏结束,否则正常运行。
系统功能模块
1、本系统共包括10个类文件。
java源文件及其功能如表所示。
表3-1java源文件及其功能
序号
文件名
主要功能
1
MainFrame
该文件为程序入口,含有main方法。
2
GameOptionPanel
实现菜单控制运行等总体要求,实现方向键控制蛇的方向,空格键控制游戏暂停或继续等。
3
SnakeListener
蛇的监听器
4
GameListener
游戏监听器
5
Food
该文件实现组成蛇身的单位-食物。
6
Ground
该文件实现障碍物-石头
7
Snake
该文件实现蛇类
8
Global
该文件为工具类,实现一些配置
9
Controller
控制器,控制蛇、食物、石头
10
GamePanel
游戏的显示界面设置
2、主要类之间的对应关系如下:
图3-3主要类之间的关系
3、因为蛇不能直接操作显示面板(GamePanel),所以定义一个监视器SnakeListener,里面有两个方法:
snakeMoved()和snakeEatFood()。
图3-4通过事件监听建立联系
系统数据结构设计
蛇、石头、食物的表示
用一个大的表格来表示显示区域,里面的格子就是组成蛇的基本单位,一个格子可以代表一个食物,也可以代表一个石头,几块连在一起的石头就可以代表一条蛇。
使用坐标来区分这些格子。
图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)无效方向
在蛇的这一次移动之后和下一次移动之前这个时间间隔内输入了多个非相反方向,只有最后一个是有效方向,其他的都是无效方向。
蛇的最终运动方向以有效方向为准。
(3)Snake中增加监听器,并另外启动一个线程来不断调用蛇的move(),在Snake中提供一个启动线程的方法。
吃到食物判定
通过判定坐标是否重合来判断,只需要判断蛇头是否和食物重合就可以了,因为蛇的身体都是走蛇头走过的地方,蛇吃掉食物后身体就会变长。
在Controller的snakeMoved中添加如下代码:
/*判断是否吃到食物*/
if(food!
=null&&(snake)){
/*吃到食物后,蛇增加身体,再重新丢一个食物*/
();
(ground==null?
():
ground
.getFreePoint());
}/*如果吃到食物,就肯定不会吃到石头*/
elseif(ground!
=null&&(snake)){
/*如果吃到的是石头,或吃到自己的身体,就让蛇死掉*/
stopGame();
}
if(())
stopGame();
4系统详细设计
程序设计
主类MainFrame
(1)主类为此程序的入口,定义了MainFrame的对象frame,开始运行此程序。
(2)
类MainFrame
(1)成员变量见表4-1
表4-1主要成员变量
成员变量描述
变量类型
名称
选项面板
privateGameOptionPanel
optionPanel
游戏面板
privateGamePanel
gamePanel
蛇类对象
privateSnake
snake
石头对象
privateGround
ground
食物对象
privateFood
food
控制对象
privateController
controller
速度标签
privateJLabel
infoLabel
(2)方法见表4-2
表4-2主要方法
方法名
功能
gameOver()
游戏结束
gameStart()
游戏开始
gameContinue()
游戏继续
gamePause()
游戏暂停
类Snake
(1)成员变量见表4-3
表4-3主要成员变量
成员变量描述
变量类型
名称
上下左右(方向)
int
UP、DOWN、LEFT、RIGHT
蛇体
LinkedList
body
蛇头坐标
Point
head
蛇尾坐标
Point
tail
是否活着
boolean
live
是否暂停
boolean
pause
速度
int
speed
监听
Set
listener
(2)方法见表4-4
表4-4主要方法
方法名
功能
eatFood()
判断食物是否被蛇吃掉,如果食物在蛇运行方向的正前方,并且与蛇头接触,则被吃掉
setHeadColor()
设置蛇头的颜色
setBodyColor()
设置蛇身的颜色
changeDirection(int)
改变运行方向
move()
蛇在运行中所采取的措施
begin()
开启一个新的线程驱动蛇定时移动
类Food
(1)成员变量见表4-5
表4-5主要成员变量
成员变量描述
变量类型
名称
颜色
privateColor
color
随机
privateRandom
random
(2)
类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()方法显示石头。
类GameListener
此类为游戏监听类,实现游戏的监听功能。
类SnakeListener
此类为蛇的监听类,实现蛇运动的监听,蛇移动的监听snakeMoved(),蛇吃到食物的监听snakeEatFood()。
类Global
工具类
此类中存放了其他类中用到的一些常量:
格子的像素(宽度,高度)、蛇的初始长度和初始速度等。
类GameOptionPanel
此类为游戏的选项面板类,实现游戏面板的控制。
类GamePanel
此类为游戏的显示界面设置,可以通过setBackgroundColor()设置游戏的背景颜色。
贪吃蛇游戏各功能界面截图
游戏的初始界面
图4-1初始界面
图4-2控制面板
图4-3速度标签
游戏运行过程界面
(1)鼠标点击开始新游戏按钮,开始游戏:
图4-4开始游戏
图4-5开始游戏(有加速有改颜色有网格)
(2)按空格键,游戏开始运行,蛇开始移动,并且吃到一次食物即红色方块后就变成蛇体:
图4-6吃到食物身体变长
(3)按方向键改变蛇的运行方向,并且碰壁后从新开始游戏,红色方块随机地方产生:
图4-7碰壁死亡
5系统测试
测试的意义
系统测试是为了发现错误而执行程序的过程,成功的测试是发现了至今尚未发现的错误的测试。
测试的目的就是希望能以最少的人力和时间发现潜在的各种错误和缺陷。
应根据开发各阶段的需求、设计等文档或程序的内部结构精心设计测试用例,并利用这些实例来运行程序,以便发现错误。
系统测试是保证系统质量和可靠性的关键步骤,是对系统开发过程中的系统分析系统设计和实施的最后复查。
根据测试的概念和目的,在进行信息系统测试时应遵循以基本原则。
测试过程
(1)拟定测试计划。
在制定测试计划时,要充分考虑整个项目的开发时间和开发进程以及一些人为因素和客观条件等,使得测试计划是可行的。
测试计划的内容主要有测试的内容、进度安排、测试所需的环境和条件、测试培训安排等。
(2)编制测试大纲。
测试大纲是测试的依据。
它明确详尽地规定了在测试中针对系统的每一项功能或特性所必须完成的基本测试项目和测试完成的标准。
(3)根据测试大纲设计和生成测试用例。
在设计测试用例的时候,可综合利用前面介绍的测试用例和设计技术,产生测试设计说明文档,其内容主要有被测项目、输人数据、测试过程、预期输出结果等。
(4)实施测试。
测试的实施阶段是由一系列的测试周期组成的。
在每个测试周期中,测试人员和开发人员将依据预先编制好的测试大纲和准备好的测试用例,对被测软件或设备进行完整的测试。
(5)生成测试报告。
测试完成后,要形成相应的测试报告,主要对测试进行概要说明,列出测试的结论,指出缺陷和错误,另外,给出一些建议,如可采用的修改方法,各项修改预计的工作量及修改的负责人员。
测试结果
贪吃蛇测试情况如表5-1所示:
表5-1贪吃蛇测试情况
执行的操作
期望的结果
实际结果
打开文件,运行代码
代码正常运行,无错误信息
符合期望结果
点击“开始游戏”
贪吃蛇出现,食物出现
符合期望结果
点击“暂停游戏”
游戏暂停,蛇和食物都静止
符合期望结果
点击“停止游戏”
游戏停止,重新开始新游戏
符合期望结果
利用方向键控制方向,空格键暂停游戏
蛇运行方向正常,空格键暂停游戏
符合期望结果
键盘按PgUp/PgDn
蛇加速/减速运动
符合期望结果
点击“设置背景颜色”
出现颜色选项,背景颜色变化
符合期望结果
点击“设置蛇头/蛇身/食物颜色”
蛇头、蛇身和食物颜色变化明显且显示正
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 毕业论文 基于 java 贪吃 游戏 设计 管理 资料