java版贪吃蛇游戏 学士学位论文.docx
- 文档编号:26730446
- 上传时间:2023-06-22
- 格式:DOCX
- 页数:65
- 大小:226.37KB
java版贪吃蛇游戏 学士学位论文.docx
《java版贪吃蛇游戏 学士学位论文.docx》由会员分享,可在线阅读,更多相关《java版贪吃蛇游戏 学士学位论文.docx(65页珍藏版)》请在冰豆网上搜索。
java版贪吃蛇游戏学士学位论文
毕业设计(论文)
题目:
JAVA版贪吃蛇游戏
学生姓名
学号************
班级计算机102202H
所属院(系)计算机科学与技术
指导教师
2014年5月20日
JAVA版贪吃蛇游戏
摘要
Java作为一种热门的编程语言,以其简单性、可移植性和平台无关性等优点,得到了广泛地应用,特别是Java与万维网的完美结合,使其成为网络编程和嵌入式编程领域的首选编程语言。
MyEclipse是Borland公司用于快速开发Java应用的一款优秀的集成开发环境,它以其友好的开发界面、强大的组件支持等优点,得到广大程序员的接受和认可。
“贪吃蛇”游戏是一个经典的游戏,它因操作简单、娱乐性强而广受欢迎。
本文基于Java技术和MyEclipse6.0开发环境,开发了一个操作简单、界面美观、功能较齐全的“贪吃蛇”游戏。
整个游戏程序分为二个功能模块,六个类模块,实现了游戏的开始、暂停、结束。
通过本游戏的开发,达到学习Java技术和熟悉软件开发流程的目的。
本游戏开发采用的技术和方法,对目前游戏类软件开发有一定的指导意义。
关键词:
Java,贪吃蛇,游戏设计
UsingJavatechnologytoachievetheSnakegame
Abstract
Javaisahotprogramminglanguage,withitssimplicity,portabilityandplatformindependenceandotheradvantages,hasbeenwidelyused,especiallytheJavaandtheworldwidewebistheperfectcombination,makeitsbecomenetworkprogrammingandthefieldofembeddedprogrammingpreferredprogramminglanguage.MyEclipseBorlandisthecompanyfortherapiddevelopmentofJavaapplicationsanexcellentintegrateddevelopmentenvironment,withitsfriendlyinterface,powerfulcomponentsupportandotheradvantages,bythemajorityof
programmersacceptanceandrecognition."Snake"gameisaclassicgame,becauseithastheadvantagesofsimpleoperation,strongentertainmentandpopular.Inthispaper,basedontheJavatechnologyandMyEclipse6developmentenvironment,developmentofasimple,beautifulinterface,completefunctionofthe"snake"game.Thegameisdividedintotwofunctionmodule,sixmodules,realizationofthegamestart,pause,end.Throughthegame'sdevelopment,achievethestudyofJavatechnologyandfamiliarwithsoftwaredevelopmentprocesspurpose.Thegamedevelopmentusingthetechnologyandmethod,thegamesoftwaredevelopmenthascertainguidingsignificance.
Keywords:
Java,Snake,design
AbstractⅡ
KeywordsⅡ
2.2.5类、方法、属性说明12
2.3.6判定贪吃蛇游戏是否结束16
2.3.7各功能界面截图及操作说明18
第1章、前言
1.1开发工具
SunMicrosystems公司在推出Java语言的同时,推出了一套开发工具JDK。
Sun提供的基于字符模式的Java开发工具包JDK:
Java开发工具(JDK)是许多Java专家最初使用的开发环境。
Java是平台无关的语言是指用Java写的应用程序不用修改就可在不同的软硬件平台上运行。
Java源程序编写借助于记事本,Editpuls,UltraEdit等第三方编辑工具。
所有的Java文件编辑、编译、调试、解释运行都是通过使用字符命令来执行操作。
JDK由一个标准类库和一组建立,测试及建立文档的Java实用程序组成。
其核心Java
API是一些预定义的类库,开发人员需要用这些类来访问Java语言的功能。
JDK是整个Java的核心,包括了Java运行环境(JavaRuntimeEnvirnment),一堆Java工具和Java基础的类库(rt.jar)。
不论什么Java应用服务器实质都是内置了某个版本的JDK。
因此掌握JDK是学好Java的第一步。
JDK里面是Java类库和Java的语言规范,它提供的是无论你用何种开发软件写Java程序都必须用到的类库和Java语言规范.没有jdk,你的Java程序根本就不能用。
最主流的JDK是Sun公司发布的JDK,除了Sun之外,还有很多公司和组织都开发了自己的JDK,例如IBM公司开发的JDK,BEA公司的Jrocket,还有GNU组织开发的JDK等等。
其中IBM的JDK包含的JVM(JavaVirtualMachine)运行效率要比SunJDK包含的JVM高出许多。
而专门运行在x86平台的Jrocket在服务端运行效率也要比SunJDK好很多。
MyEclipse企业级工作平台(MyEclipseEnterpriseWorkbench,简称MyEclipse)是对EclipseIDE的扩展,利用它我们可以在数据库和JavaEE的开发、发布,以及应用程序服务器的整合方面极大的提高工作效率。
它是功能丰富的JavaEE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML,Struts,JSF,CSS,Javascript,SQL,Hibernate。
Eclipse采用的技术是IBM公司开发的(SWT),这是一种基于Java的窗口组件,类似Java本身提供的AWT和Swing窗口组件;不过IBM声称SWT比其他Java窗口组件更有效率。
Eclipse的用户界面还使用了GUI中间层JFace,从而简化了基于SWT的应用程序的构建。
Eclipse的插件机制是轻型软件组件化架构。
在富客户机平台上,Eclipse使用插件来提供所有的附加功能,例如支持Java以外的其他语言。
已有的分离的插件已经能够支持C/C++(CDT)、PHP、Perl、Ruby,Python、telnet和数据库开发。
插件架构能够支持将任意的扩展加入到现有环境中,例如配置管理,而决不仅仅限于支持各种编程语言。
1.2方案论证
学校现已开设的课程有C语言、C++,Java,大四外出培训学习了Java,通过网上以及书籍资料,知道可以通过C,C++,VB,Delphi,Java实现俄罗斯方块游戏的设计。
下面简单介绍下VB、C++、Java各自的优点:
1.2.1VB的优点
全称VisualBasic,它是以Basic语言作为其基本语言的一种可视化编程工具。
在中国乃至全世界都能看到它的身影,它曾是在中国最为流行的编程工具,到现在还占据着非常重要的地位,对于它的好坏大家都有一定的了解,VB作为一种较早出现的开发程序以其容易学习,开发效率较高,具有完善的帮助系统等优点曾影响了好几代编程人员,但是由于VB不具备跨平台这个特性,从而也决定了VB在未来的软件开发中将会逐渐地退出其历史舞台;它对组件技术的支持是基于COM和ActiveX,对于组件技术不断完善发展的今天,它也显出了它的落后性;同时VB在进行系统底层开发的时候也是相对复杂的,调用API函数需声明,调用不方便,不能进行DDK编程,不可能深入Ring0编程,不能嵌套汇编;而且面向对象的特性差;网络功能和数据库功能也没有非常突出的表现,综上所述,VB作为一种可视化的开发工具由于其本身的局限性,导致了它在未来软件开发中逐步被其他工具所代替。
1.2.2C++的优点
C++是对C语言的扩充,扩充的绝大部分来自著名语言中的最佳特性:
从SIMULA67中吸取了类,从ALGOL68中吸取了运算符一名多用、引用和在分程序中任何地方说明变量,综合了Ada的类属和Clu的模块特点,从BCPL中吸取异常处理,从BCPL中吸取了用//表示注释。
C++保持了C的紧凑、灵活、高效和易移植强的优点,它对数据抽象的支持主要在于类概念和机制,对面向对象风范的支持主要通过虚拟函数。
C++既有数据抽象和面向对象能力,语言运行性能高多,加上C语言的普及,而从C至C++的过渡较为平滑,以及C++与C的兼容程度可使数据巨大的C程序能方便地在C++环境中重用。
尽管C++当初的设计本意是帮助管理大型程序,但其用途并不仅限于此。
C++的面向对象的特性可有效地用于实际的程序设计工作。
C++常常用于设计编辑器、数据库、个人文件系统以及通讯程序等。
而且,由于C++共享C的效率,所以用C++可以构成很多高性能的系统软件。
1.2.3Java的优点
(1)安全性
Java是一种安全的网络编程语言,不支持指针类型,一切对内存的访问都必须通过对象的实例来实现。
这样能够防止他人使用欺骗手段访问对象的私有成员,也能够避免在指针操作中易产生的错误。
此外,Java的安全性体现在多个层次上:
在编译层,有语法检查;在解释层,有字节码校验器,可进行代码段格式测试和规则检查、访问权限和类型转换合法性检查、操作数堆栈的上溢和下溢检测、代码参数类型合法性检查等;在平台层上,通过配置策略,可设定访问资源域,无须区分本地或远程。
(2)可移植性
Java具备有很好的移植性,这主要得益于它与平台无关的特性。
同时,Java的类库中也实现了与平台无关的接口,这使得这些类库也能移植。
同时,Java编译器主要是由Java本身来实现的,Java的运行系统(解释器)由标准C语言实现,因而整个Java系统都具有可移植性。
(3)多线程机制
Java具有多线程机制,这使得应用程序能够并行地执行。
它的同步机制也保证了对共享数据的共享操作,而且线程具有优先级的机制,有助于分别使用不同线程完成特定行为,也提高了交互的实时响应能力。
Java的多线程技术使网上实时交互实现很容易,从而为解决网上大数量的客户访问提供了技术基础。
(4)跨平台
通常,在Windows下编写的程序是不能直接拿到UNIX上运行的,因为程序的执行最终必须转换成为计算机硬件的机器指令来执行,专门为某种计算机硬件和操作系统编写的程序是不能够直接放到其他类型的计算机硬件上执行的,至少要做移植工作。
要想让程序能够在不同的计算机上运行,就要求程序设计语言能够跨越各种软件和硬件平台,而Java恰恰满足了这一需求。
Java编译器能够产生一种与计算机体系结构无关的字节指令,只要安装了Java虚拟机,Java就可以在相应的处理机上执行。
1.3需求分析
本系统主要是完成贪吃蛇游戏的基本操作。
用户可以自己练习和娱乐。
本系统需要满足以下几点要求:
(1)利用方向键来改变蛇的运行方向。
(2)有相关按键或选项可以实现游戏的重新开始和暂停、继续,并在随机的地方产生食物。
(3)吃到食物就变成新的蛇体,碰到壁或自身则游戏结束,否则正常运行。
1.4可行性分析
贪吃蛇游戏是一种简单的大众的游戏,自从计算机实现以来,深受广大电脑玩家的喜爱,做一个简单的贪吃蛇小游戏。
锻炼自己编写代码的能力。
贪吃蛇的核心算法时如何实现移动和吃掉食物,没有碰到食物的时候,把当前运动方向上的下个节点入队,并以蛇节点的颜色绘制这个节点,然后把头指针所指的节点出队,并以游戏框架内部背景色重绘出队的节点,这样就可以达到移动的效果。
而在吃到食物的时候,则只需把食物入队即可。
实现贪吃蛇的基本的蛇身移动、吃到食物身体增长、和碰到墙壁或自身死亡,能够暂停和开始。
本次设计我将主要运用Java语言来完成。
Java语言是一种跨平台,适合于分布式计算环境的面向对象编程语言,用Java写的应用程序不用修改就可在不同的软硬件平台上运行。
由于Java主要用于网络应用程序开发,因此对安全性有较高的要求。
如果没有安全保证,用户从网络下载程序执行就非常危险。
Java通过自己的安全机制防止了病毒程序的产生和下载程序对本地系统的威胁破坏。
1.5应用环境
(1).操作系统:
ubuntu、WindowsXP、Windows7等。
(2).应用软件:
jdk1.7
第2章、本论
2.1设计运用技术简介
2.1.1Oop(面相对象编程技术)
面向对象的语言中一部分是新发明的语言,如Smalltalk、Java,这些语言本身往往吸取了其他语言的精华,而又尽量剔除他们的不足,因此面向对象的特征特别明显,充满了蓬勃的生机;另外一些则是对现有的语言进行改造,增加面向对象的特征演化而来的。
如由Pascal发展而来的ObjectPascal,由C发展而来的Objective-C,C++,由Ada发展而来的Ada95等,这些语言保留着对原有语言的兼容,并不是纯粹的面向对象语言,但由于其前身往往是有一定影响的语言,因此这些语言依然宝刀不老,在程序设计语言中占有十分重要的地位
面向对象主要特征:
封装性:
封装是一种信息隐蔽技术,它体现于类的说明,是对象的重要特性。
封装使数据和加工该数据的方法(函数)封装为一个整体,以实现独立性很强的模块,使得用户只能见到对象的外特性(对象能接受哪些消息,具有那些处理能力),而对象的内特性(保存内部状态的私有数据和实现加工能力的算法)对用户是隐蔽的。
封装的目的在于把对象的设计者和对象者的使用分开,使用者不必知晓行为实现的细节,只须用设计者提供的消息来访问该对象。
继承性:
继承性是子类自动共享父类之间数据和方法的机制。
它由类的派生功能体现。
一个类直接继承其它类的全部描述,同时可修改和扩充。
继承具有传递性。
继承分为单继承(一个子类只有一父类)和多重继承(一个类有多个父类)。
类的对象是各自封闭的,如果没继承性机制,则类对象中数据、方法就会出现大量重复。
继承不仅支持系统的可重用性,而且还促进系统的可扩充性。
多态性:
对象根据所接收的消息而做出动作。
同一消息为不同的对象接受时可产生完全不同的行动,这种现象称为多态性。
利用多态性用户可发送一个通用的信息,而将所有的实现细节都留给接受消息的对象自行决定,如是,同一消息即可调用不同的方法。
例如:
Print消息被发送给一图或表时调用的打印方法与将同样的Print消息发送给一正文文件而调用的打印方法会完全不同。
多态性的实现受到继承性的支持,利用类继承的层次关系,把具有通用功能的协议存放在类层次中尽可能高的地方,而将实现这一功能的不同方法置于较低层次,这样,在这些低层次上生成的对象就能给通用消息以不同的响应。
在OOPL中可通过在派生类中重定义基类函数(定义为重载函数或虚函数)来实现多态性。
优点:
面向对象出现以前,结构化程序设计是程序设计的主流,结构化程序设计又称为面向过程的程序设计。
在面向过程程序设计中,问题被看作一系列需要完成的任务,函数(在此泛指例程、函数、过程)用于完成这些任务,解决问题的焦点集中于函数。
其中函数是面向过程的,即它关注如何根据规定的条件完成指定的任务。
在多函数程序中,许多重要的数据被放置在全局数据区,这样它们可以被所有的函数访问。
每个函数都可以具有它们自己的局部数据。
这种结构很容易造成全局数据在无意中被其他函数改动,因而程序的正确性不易保证。
面向对象程序设计的出发点之一就是弥补面向过程程序设计中的一些缺点:
对象是程序的基本元素,它将数据和操作紧密地连结在一起,并保护数据不会被外界的函数意外地改变
2.1.2Swing技术
Swing是一个用于开发Java应用程序用户界面的开发工具包。
它以抽象窗口工具包(AWT)为基础使跨平台应用程序可以使用任何可插拔的外观风格。
Swing开发人员只用很少的代码就可以利用Swing丰富、灵活的功能和模块化组件来创建优雅的用户界面。
工具包中所有的包都是以swing作为名称,例如javax.swing,javax.swing.event
创建图形界面步骤:
(1)导入Swing包
(2)选择界面风格
(3)设置顶层容器
(4)设置按钮和标签
(5)将组件放到容器上
(6)为组件增加边框
(7)处理事件
(8)辅助技术支持
监听器:
WindowListener
方法:
windowOpened、windowClosing、windowClosed、windowIconified、windowDeiconified、windowActivated、windowDeactivated
事件:
WindowEvent
WindowgetWindow()返回发生此事件的window对象
WindowgetOppositeWindow()若发生了焦点转移,返回另一个参与此事件的window对象,或者null
intgetOldState()窗口变化前的状态NORMALICONIFIEDMAXIMIZED_BOTH
intgetNewState()窗口变化后的状态
事件产生原因:
窗口发生变化
2.1.3swt技术
SWT(Standard Widget Toolkit) 即标准小窗口工具箱,是 IBM公司推出的一种在Eclipse 中使用的集成开发环境,SWT提供可移植的 API,并与底层本机OS GUI平台紧密集成,它 是一个与本地窗口系统集成在一起的小部件集和图形库。
SWT由 JNI (Java Native Interface,Java 本机接口)调用操作系统的内部API,因此运行速度快,能够获得与操作系统的内部应用程序相同的外观。
JFace是一个用户界面工具箱,也是一个易用、功能强大的图形包,它简化了常见的图
形用户界面的编程任务。
SWT和JFace都是 Eclipse 平台上的主要组件。
JFace是在 SWT的 基础上创建的,但JFace并不能完全覆盖SWT的功能,JFace。
由于JFace的功能更强大,因此做图形界面开发时一般优先选用 JFace
2.1.4Applet技术
Applet的工作原理:
含有Applet的网页的HTML文件代码中部带有这样一对标记,当支持Java的网络浏览器遇到这对标记时,就将下载相应的小应用程序代码并在本地计算机上执行该Applet。
JavaApplet是用Java语言编写的一些小应用程序,这些程序是直接嵌入到页面中,由支持Java的浏览器(IE或Netscape)解释执行能够产生特殊效果的程序。
它可以大大提高Web页面的交互能力和动态执行能力。
包含Applet的网页被称为Java-powered页,可以称其为Java支持的网页。
当用户访问这样的网页时,Applet被下载到用户的计算机上执行,但前提是用户使用的是支持Java的网络浏览器。
由于Applet是在用户的计算机上执行的,所以它的执行速度不受网络带宽或者Modem存取速度的限制,用户可以更好地欣赏网页上Applet产生的多媒体效果。
在JavaApplet中,可以实现图形绘制,字体和颜色控制,动画和声音的插入,人机交互及网络交流等功能。
Applet还提供了名为抽象窗口工具箱(AbstractWindowToolkit,AWT)的窗口环境开发工具。
AWT利用用户计算机的GUI元素,可以建立标准的图形用户界面,如窗口、按钮、滚动条等等。
目前,在网络上有非常多的Applet范例来生动地展现这些功能,读者可以去调阅相应的网页以观看它们的效果。
2.2设计方案论证
2.2.1设计思路
贪吃蛇游戏设计与实现,主要分为以下二个模块:
游戏主界面模块和游戏控制模块。
在此只实现游戏的游戏主界面模块、游戏控制模块。
并且实现移动速度、暂停、重新开始等功能。
游戏主界面模块:
游戏的主界面是进入游戏后,能够给玩家第一感官的部分,主要包括游戏图形区域界面、游戏的速度选择更新界面、新生方块的预览、暂停游戏按钮、重新开始游戏按钮。
从很大程度上决定了玩家对游戏的兴趣问题,因此,游戏的主界面应该力求美观,爽心悦目。
游戏控制模块:
这个模块是游戏的中心环节,主要完成控制游戏的开始、暂停、重新开始等功能。
为了能够给玩家一个很好的游戏环境,这部分应该做到易懂、易操作。
本设计所开发的是基于Java的一个贪吃蛇游戏软件,主要实现游戏的速度控制、游戏的暂停、游戏的退出等功能,分为:
游戏主界面模块、游戏控制模块以二个模块。
2.2.2程序概述
本程序是一个利用Java应用软件制作的贪食蛇小游戏。
进入游戏之后,游戏自动进入游戏状态;在游戏过程中,通过键盘操作贪吃蛇蛇体进行上下左右方向的运动,此时食物在界面之内随机位置生成;当蛇头触碰到食物并且进入一格之后,定为吃掉食物,之后蛇体加长一格;当蛇头触碰到身体并且进入一格时、判定为吃到自己、判定死亡,当蛇头触碰到边界、并且进入一格之后判定为撞墙、判定为死亡。
当游戏途中需要暂停时,点击菜单栏的“暂停/继续”按钮,可以暂停游戏、再次点击“暂定/继续”按钮、可以继续进行游戏;当想要重新开始游戏时,点击“开始游戏”按钮,在弹窗提示下可以重新开始游戏;当想要退出游戏时,点击“退出游戏”按钮,在弹窗提示下可以退出游戏。
本程序的另一个功能是在程序运行窗口的左上角显示,用户在游戏过程中的移动速度和蛇体长度。
2.2.3程序流程图
本次游戏设计的处理流程如图2.1所示。
2.2.4总设计模块的划分
根据游戏需求中游戏所要实现的功能,整个游戏分为二个模块进行具体的设计,如图2.2所示。
游戏控制模块的主要框架如图3所示。
游戏暂停/继续控制:
点击“F3”或“暂停/继续”按钮,游戏暂停;再单击,游戏继续。
游戏重新开始控制:
点击“F2”或“开始游戏”按钮后,点击确定,即游戏重新开始。
游戏退出控制:
点击“F4”或“退出游戏”按钮后,点击确定,退出游戏界面。
2.2.5类、方法、属性说明
(1)成员变量
成员变量描述
变量类型
名称
文件菜单中子菜单“新建”
JMenuItem
mFile_New
编辑菜单中子菜单“撤消”
JMenuItem
mEdit_Undo
格式菜单中子菜单“颜色”
JMenu
formatMenu_Color
帮助菜单中子菜单“帮助主题”
MenuItem
mHelp_HelpTopics
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java版贪吃蛇游戏 学士学位论文 java 贪吃 游戏 学士学位 论文