




免费预览已结束,剩余48页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
毕业设计(论文) 题目:JAVA版贪吃蛇游戏学 生 姓 名 学 号 201022030219 班 级 计算机102202H 所属院(系) 计算机科学与技术 指 导 教 师 2014 年 5 月 20 日JAVA版贪吃蛇游戏 摘 要Java作为一种热门的编程语言,以其简单性、可移植性和平台无关性等优点,得到了广泛地应用,特别是Java与万维网的完美结合,使其成为网络编程和嵌入式编程领域的首选编程语言。MyEclipse是Borland公司用于快速开发Java应用的一款优秀的集成开发环境,它以其友好的开发界面、强大的组件支持等优点,得到广大程序员的接受和认可。“贪吃蛇”游戏是一个经典的游戏,它因操作简单、娱乐性强而广受欢迎。本文基于Java技术和MyEclipse 6.0开发环境,开发了一个操作简单、界面美观、功能较齐全的“贪吃蛇”游戏。整个游戏程序分为二个功能模块,六个类模块,实现了游戏的开始、暂停、结束。通过本游戏的开发,达到学习Java技术和熟悉软件开发流程的目的。本游戏开发采用的技术和方法,对目前游戏类软件开发有一定的指导意义。关键词:Java,贪吃蛇,游戏设计Using Java technology to achieve the Snake gameAbstract Java is a hot programming language,with its simplicity, portability and platform independence and other advantages, has been widely used, especially the Java and the world wide web is the perfect combination, make its become network programming and the field of embedded programming preferred programming language. MyEclipse Borland is the company for the rapid development of Java applications an excellent integrated development environment, with its friendly interface, powerful component support and other advantages, by the majority ofprogrammers acceptance and recognition. Snake game is a classic game, because it has the advantages of simple operation, strong entertainment and popular. In this paper, based on the Java technology and MyEclipse 6 development environment, development of a simple, beautiful interface, complete function of the snake game. The game is divided into two function module, six modules, realization of the game start, pause, end. Through the games development, achieve the study of Java technology and familiar with software development process purpose. The game development using the technology and method, the game software development has certain guiding significance. Key words: Java ,Snake,design II目 录摘 要I关键词IAbstractKey words第1章、前言11.1 开发工具11.2 方案论证21.2.1 VB的优点21.2.2 C+的优点21.2.3 Java的优点31.3 需求分析41.4 可行性分析41.5 应用环境5第2章、本论62.1 设计运用技术简介62.1.1 Oop(面相对象编程技术)62.1.2 Swing 技术72.1.3 swt技术82.1.4 Applet技术82.2设计方案论证92.2.1设计思路92.2.2程序概述92.2.3程序流程图102.2.4总设计模块的划分112.2.5类、方法、属性说明122.3程序设计132.3.1 界面设计132.3.2 蛇体设计142.3.3 设置菜单及相关按钮的实现142.3.4 按键监听功能实现152.3.5 游戏速度设置162.3.6 判定贪吃蛇游戏是否结束162.3.7各功能界面截图及操作说明182.3.8 游戏操作界面21第3章、结论263.1测试的目的263.2软件测试263.2.1 测试的基本概念263.2.2 测试的基本步骤273.3 本程序测试28参 考 文 献29致谢30附录31附录:31附录:40V第1章、前言1.1 开发工具 Sun Microsystems公司在推出Java语言的同时,推出了一套开发工具JDK。Sun提供的基于字符模式的Java开发工具包JDK:Java开发工具(JDK)是许多Java专家最初使用的开发环境。Java是平台无关的语言是指用Java写的应用程序不用修改就可在不同的软硬件平台上运行。 Java源程序编写借助于记事本,Editpuls,UltraEdit等第三方编辑工具。 所有的Java文件编辑、编译、调试、解释运行都是通过使用字符命令来执行操作。JDK由一个标准类库和一组建立,测试及建立文档的Java实用程序组成。其核心JavaAPI是一些预定义的类库,开发人员需要用这些类来访问Java语言的功能。JDK 是整个Java的核心,包括了Java运行环境(Java RuntimeEnvirnment),一堆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(Java Virtual Machine)运行效率要比SunJDK包含的JVM高出许多。而专门运行在x86平台的Jrocket在服务端运行效率也要比SunJDK好很多。MyEclipse企业级工作平台(MyEclipse Enterprise Workbench ,简称MyEclipse)是对Eclipse IDE的扩展,利用它我们可以在数据库和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.1 VB的优点全称Visual Basic,它是以Basic语言作为其基本语言的一种可视化编程工具。在中国乃至全世界都能看到它的身影,它曾是在中国最为流行的编程工具,到现在还占 据着非常重要的地位,对于它的好坏大家都有一定的了解,VB作为一种较早出现的开发程序以其容易学习,开发效率较高,具有完善的帮助系统等优点曾影响了好 几代编程人员,但是由于VB不具备跨平台这个特性,从而也决定了VB在未来的软件开发中将会逐渐地退出其历史舞台;它对组件技术的支持是基于COM和 ActiveX,对于组件技术不断完善发展的今天,它也显出了它的落后性;同时VB在进行系统底层开发的时候也是相对复杂的,调用API函数需声明,调用 不方便,不能进行DDK编程,不可能深入Ring0编程,不能嵌套汇编;而且面向对象的特性差;网络功能和数据库功能也没有非常突出的表现,综上所 述,VB作为一种可视化的开发工具由于其本身的局限性,导致了它在未来软件开发中逐步被其他工具所代替。1.2.2 C+的优点C+是对C语言的扩充,扩充的绝大部分来自著名语言中的最佳特性:从SIMULA 67中吸取了类,从ALGOL 68中吸取了运算符一名多用、引用和在分程序中任何地方说明变量,综合了Ada的类属和Clu的模块特点,从BCPL中吸取异常处理,从BCPL中吸取了用/表示注释。C+保持了C的紧凑、灵活、高效和易移植强的优点,它对数据抽象的支持主要在于类概念和机制,对面向对象风范的支持主要通过虚拟函数。C+既有数据抽象和面向对象能力,语言运行性能高多,加上C语言的普及,而从C至C+的过渡较为平滑,以及C+与C的兼容程度可使数据巨大的C程序能方便地在C+环境中重用。尽管C+当初的设计本意是帮助管理大型程序,但其用途并不仅限于此。C+的面向对象的特性可有效地用于实际的程序设计工作。C+常常用于设计编辑器、数据库、个人文件系统以及通讯程序等。而且,由于C+共享C的效率,所以用C+可以构成很多高性能的系统软件。1.2.3 Java的优点(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、Windows XP 、Windows7等。(2). 应用软件:jdk1.7 第2章、本论2.1 设计运用技术简介2.1.1 Oop(面相对象编程技术)面向对象的语言中一部分是新发明的语言,如Smalltalk、Java,这些语言本身往往吸取了其他语言的精华,而又尽量剔除他们的不足,因此面向对象的特征特别明显,充满了蓬勃的生机;另外一些则是对现有的语言进行改造,增加面向对象的特征演化而来的。如由Pascal发展而来的Object Pascal,由C发展而来的Objective-C,C+ ,由Ada发展而来的Ada 95等,这些语言保留着对原有语言的兼容,并不是纯粹的面向对象语言,但由于其前身往往是有一定影响的语言,因此这些语言依然宝刀不老,在程序设计语言中占有十分重要的地位面向对象主要特征:封装性:封装是一种信息隐蔽技术,它体现于类的说明,是对象的重要特性。封装使数据和加工该数据的方法(函数)封装为一个整体,以实现独立性很强的模块,使得用户只能见到对象的外特性(对象能接受哪些消息,具有那些处理能力),而对象的内特性(保存内部状态的私有数据和实现加工能力的算法)对用户是隐蔽的。封装的目的在于把对象的设计者和对象者的使用分开,使用者不必知晓行为实现的细节,只须用设计者提供的消息来访问该对象。继承性:继承性是子类自动共享父类之间数据和方法的机制。它由类的派生功能体现。一个类直接继承其它类的全部描述,同时可修改和扩充。继承具有传递性。继承分为单继承(一个子类只有一父类)和多重继承(一个类有多个父类)。类的对象是各自封闭的,如果没继承性机制,则类对象中数据、方法就会出现大量重复。继承不仅支持系统的可重用性,而且还促进系统的可扩充性。多态性:对象根据所接收的消息而做出动作。同一消息为不同的对象接受时可产生完全不同的行动,这种现象称为多态性。利用多态性用户可发送一个通用的信息,而将所有的实现细节都留给接受消息的对象自行决定,如是,同一消息即可调用不同的方法。例如:Print消息被发送给一图或表时调用的打印方法与将同样的Print消息发送给一正文文件而调用的打印方法会完全不同。多态性的实现受到继承性的支持,利用类继承的层次关系,把具有通用功能的协议存放在类层次中尽可能高的地方,而将实现这一功能的不同方法置于较低层次,这样,在这些低层次上生成的对象就能给通用消息以不同的响应。在OOPL中可通过在派生类中重定义基类函数(定义为重载函数或虚函数)来实现多态性。优点:面向对象出现以前,结构化程序设计是程序设计的主流,结构化程序设计又称为面向过程的程序设计。在面向过程程序设计中,问题被看作一系列需要完成的任务,函数(在此泛指例程、函数、过程)用于完成这些任务,解决问题的焦点集中于函数。其中函数是面向过程的,即它关注如何根据规定的条件完成指定的任务。在多函数程序中,许多重要的数据被放置在全局数据区,这样它们可以被所有的函数访问。每个函数都可以具有它们自己的局部数据。这种结构很容易造成全局数据在无意中被其他函数改动,因而程序的正确性不易保证。面向对象程序设计的出发点之一就是弥补面向过程程序设计中的一些缺点:对象是程序的基本元素,它将数据和操作紧密地连结在一起,并保护数据不会被外界的函数意外地改变2.1.2 Swing 技术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事 件:WindowEventWindow getWindow() 返回发生此事件的window对象Window getOppositeWindow() 若发生了焦点转移,返回另一个参与此事件的window对象,或者nullint getOldState() 窗口变化前的状态NORMALICONIFIEDMAXIMIZED_BOTHint getNewState() 窗口变化后的状态事件产生原因:窗口发生变化2.1.3 swt技术SWT(StandardWidgetToolkit)即标准小窗口工具箱,是IBM公司推出的一种在Eclipse中使用的集成开发环境,SWT提供可移植的API,并与底层本机OSGUI平台紧密集成,它是一个与本地窗口系统集成在一起的小部件集和图形库。SWT由JNI(JavaNativeInterface,Java本机接口)调用操作系统的内部API,因此运行速度快,能够获得与操作系统的内部应用程序相同的外观。JFace是一个用户界面工具箱,也是一个易用、功能强大的图形包,它简化了常见的图形用户界面的编程任务。SWT和JFace都是Eclipse平台上的主要组件。JFace是在SWT的基础上创建的,但JFace并不能完全覆盖SWT的功能,JFace。由于JFace的功能更强大,因此做图形界面开发时一般优先选用JFace2.1.4 Applet技术Applet的工作原理:含有Applet的网页的HTML文件代码中部带有 和这样一对标记,当支持Java的网络浏览器遇到这对标记时,就将下载相应的小应用程序代码并在本地计算机上执行该Applet。Java Applet 是用Java 语言编写的一些小应用程序,这些程序是直接嵌入到页面中,由支持Java的浏览器(IE 或 Netscape)解释执行能够产生特殊效果的程序。它可以大大提高Web页面的交互能力和动态执行能力。包含Applet的网页被称为Java-powered页,可以称其为Java支持的网页。当用户访问这样的网页时,Applet被下载到用户的计算机上执行,但前提是用户使用的是支持Java的网络浏览器。由于Applet是在用户的计算机上执行的,所以它的执行速度不受网络带宽或者Modem存取速度的限制,用户可以更好地欣赏网页上Applet产生的多媒体效果。在Java Applet中,可以实现图形绘制,字体和颜色控制,动画和声音的插入,人机交互及网络交流等功能。 Applet还提供了名为抽象窗口工具箱(Abstract Window Toolkit,AWT)的窗口环境开发工具。 AWT利用用户计算机的GUI元素,可以建立标准的图形用户界面,如窗口、按钮、滚动条等等。目前,在网络上有非常多的Applet范例来生动地展现这些功能,读者可以去调阅相应的网页以观看它们的效果。2.2设计方案论证2.2.1设计思路贪吃蛇游戏设计与实现,主要分为以下二个模块:游戏主界面模块和游戏控制模块。在此只实现游戏的游戏主界面模块、游戏控制模块。并且实现移动速度、暂停、重新开始等功能。游戏主界面模块:游戏的主界面是进入游戏后,能够给玩家第一感官的部分,主要包括游戏图形区域界面、游戏的速度选择更新界面、新生方块的预览、暂停游戏按钮、重新开始游戏按钮。从很大程度上决定了玩家对游戏的兴趣问题,因此,游戏的主界面应该力求美观,爽心悦目。游戏控制模块:这个模块是游戏的中心环节,主要完成控制游戏的开始、暂停、重新开始等功能。为了能够给玩家一个很好的游戏环境,这部分应该做到易懂、易操作。本设计所开发的是基于Java的一个贪吃蛇游戏软件,主要实现游戏的速度控制、游戏的暂停、游戏的退出等功能,分为: 游戏主界面模块、游戏控制模块以二个模块。2.2.2程序概述本程序是一个利用Java应用软件制作的贪食蛇小游戏。进入游戏之后,游戏自动进入游戏状态;在游戏过程中,通过键盘操作贪吃蛇蛇体进行上下左右方向的运动,此时食物在界面之内随机位置生成;当蛇头触碰到食物并且进入一格之后,定为吃掉食物,之后蛇体加长一格;当蛇头触碰到身体并且进入一格时、判定为吃到自己、判定死亡,当蛇头触碰到边界、并且进入一格之后判定为撞墙、判定为死亡。 当游戏途中需要暂停时,点击菜单栏的“暂停/继续”按钮,可以暂停游戏、再次点击“暂定/继续”按钮、可以继续进行游戏;当想要重新开始游戏时,点击“开始游戏”按钮,在弹窗提示下可以重新开始游戏;当想要退出游戏时,点击“退出游戏”按钮,在弹窗提示下可以退出游戏。本程序的另一个功能是在程序运行窗口的左上角显示,用户在游戏过程中的移动速度和蛇体长度。2.2.3程序流程图本次游戏设计的处理流程如图2.1所示。单击“F2”按钮, 游戏开始,蛇开始随机。键盘操作: 向上左移右移向下没有吃到食物且蛇碰到边界单击“确定”游戏结束游戏中途欲中断,稍后继续游戏单击“F3暂停游戏”游戏暂停进入游戏画面再次单击开始F3按钮,游戏恢复图2.1 程序流程图 2.2.4总设计模块的划分根据游戏需求中游戏所要实现的功能,整个游戏分为二个模块进行具体的设计,如图2.2所示。贪吃蛇游戏游戏主界面模块游戏控制模块图2.2 设计总模块 游戏控制模块的主要框架如图3所示。游戏控制模块游戏的暂停功能游戏的重新开始游戏的退出图2.3 控制模块框架游戏暂停/继续控制:点击“F3”或“暂停/继续”按钮,游戏暂停;再单击,游戏继续。游戏重新开始控制:点击“F2”或“开始游戏”按钮后,点击确定,即游戏重新开始。游戏退出控制:点击“F4”或“退出游戏”按钮后,点击确定,退出游戏界面。2.2.5类、方法、属性说明(1)成员变量成员变量描述变量类型名称文件菜单中子菜单“新建”JMenuItemmFile_New编辑菜单中子菜单“撤消”JMenuItemmEdit_Undo格式菜单中子菜单“颜色”JMenuformatMenu_Color帮助菜单中子菜单“帮助主题”MenuItemmHelp_HelpTopics表2.1 主要成员变量(属性)(2)方法方法名功能备注Notepad4()描述记事本无Text.setBackground(Color.black)设置编辑区默认背景色无Text.setForeground(Color.black)设置编辑区默认前景色无表2.2 主要方法2.3程序设计2.3.1 界面设计(1)首先,创建窗口及相关按钮,通过JMenuBar方法创建一个水平菜单栏,之后通过JMenu set、JMeu difficult、JMeu help 分别创建设置、难度、帮助、三个选项,并添加按钮触发的相应方法;(2)之后通过new JMenuItem 创建“设置”菜单内的三个按钮:开始游戏、暂停/继续游戏、退出游戏,并通过.add方法加入到“设置”菜单并且添加按钮触发的相应方法;通过使用new JRadioButton 创建“难度”菜单内的三个按钮:初级、中级、高级选项,并通过.add方法加入到“难度”菜单并且添加各个按钮触发的相应方法;(3)同理,new JMenuItem 创建“帮助”菜单内的关于按钮,并通过.add方法加入到“帮助”菜单且添加按钮触发的相应方法。(4)使用new JLabel方法创建两个JLabel对象,分别显示蛇体长度及蛇运行速度,长度初始为1,速度初始为5,并且通过this.addWindowListener(this)添加监听器,从而实现实时显示游戏信息。2.3.2 蛇体设计(1)首先,创建绘画对象MyPaint mp,之后在绘画对象中加入蛇对象mp = new MyPaint();mp.setShe(this);(2)使用.setColor(Color.BLUE)方法设置颜色、设置蛇头颜色为蓝色,并用.fillRect(x, y, 10, 10)将蛇头与蛇身体进行分割、分别设定颜色,.setColor(Color.RED)设定蛇身体颜色为红色。2.3.3 设置菜单及相关按钮的实现(1) 通过以下代码:public void setBegin() JLabel ks = new JLabel(开始游戏?);ks.setFont(f);int a = JOptionPane.showConfirmDialog(s, ks);if (a = 0) x = 150;y = 0;sjx = r.nextInt(300) / 10 * 10;/设定窗口按键大小sjy = r.nextInt(300) / 10 * 10;/同上fx = 2;sw = 0;sd = 300;cs = 0;pause = false;death = false;body = false;s.setSpeed();s.setDS(sw, 305 - sd);当点击开始按钮时,弹窗会提示是否重新开始游戏,并有“是”、“否”选项,当点击“是”之后,游戏自动重新开始,当点击“否”之后,游戏将还原到点击“开始游戏”之前的状态。“退出游戏”选项同理。(2) 通过以下代码实现暂停/继续功能public void setPause() if (pause) pause = false; else pause = true;游戏进行中点击暂停/继续按钮,调用此方法实现暂停/继续功能。2.3.4 按键监听功能实现通过以下代码,设定按键监听功能,从而实现键盘操作游戏的目的public void keyPressed(KeyEvent e) switch (e.getKeyCode() case 38:fx = 1;/ 上break;case 40:fx = 2;/ 下break;case 37:fx = 3;/ 左break;case 39:fx = 4;/ 右break;case KeyEvent.VK_F3:/ 暂停热键this.setPause();break;case KeyEvent.VK_F2:/ 开始热键this.setBegin();break;case KeyEvent.VK_F4:/ 退出热键this.setQuit();break;游戏中按下、上下左右方向键,可以实现贪吃蛇头部转变方向的动作,并且此段代码设定了开始、暂停/继续、退出游戏的快捷按键,当按下键盘的相关按键时,直接调用相对应的方法实现开始游戏、暂停/继续游戏、退出游戏的功能。2.3.5 游戏速度设置public void setSpeed() slow.setSelected(true);/当游戏等级为初级时,相应的最大长度为300,速度为110mp.setSD(300, 110);this.setDS(0, 305 - 300);slow.setEnabled(true);medium.setEnabled(true);/当超过相应的设置,将进入下一等级,“中级”fast.setEnabled(true);以上代码将通过修改时钟频率,从而修改了贪吃蛇的移动速度,速度分为三个等级,分别是初级、中级、高级,三段设置分别设置了最低速度,最高速度为225。每当修改难度的时候,会自动加载相应的速率,总而实现手动修改游戏速度的目的。2.3.6 判定贪吃蛇游戏是否结束任何游戏都是有规则判定游戏是否继续,是否结束的,此游戏同样是这样,利用下面的判定方法:for (int i = 1; i = sw; i+) int j = cs - i;if (j 0) j = cs - i + 999 + 1;String s = zxj.split(/);if (x = Integer.parseInt(s0) & y = Integer.parseInt(s1) / 蛇撞到自己身上了death = true;body = true;if (sjx = Integer.parseInt(s0) & sjy = Integer.parseInt(s1) g.setColor(Color.BLACK);g.fillRect(sjx, sjy, 10, 10);g.setColor(Color.RED);continue;g.fillRect(Integer.parseInt(s0), Integer.parseInt(s1), 10, 10);当蛇触碰到边界并且前进一格之后,或者头触碰到身体并且前进一格之后,程序会判定贪吃蛇游戏结束。2.3.7各功能界面截图及操作说明(1)初始界面,在游戏的开始菜单里面能看到设置、难度和帮助的三个主要的菜单。分别点击三个菜单,可以显示相关按钮,并且此时游戏暂停。游戏的基本界面简单、明了,简单的风格能让人看了之后有耳目一新的感觉。如下图2.4所示。图2.4 初始界面(2)设置菜单栏,其中包括开始游戏、继续或者暂停游戏、退出。其中继续和暂停游戏在相同的按钮,点击开始游戏按钮,在弹窗的提示下进行选择可在游戏初始化之后开始游戏,也可以在游戏结束之后重新开始游戏;点击暂停/继续按钮,可以实现游戏暂停,暂停之后继续游戏的操作;点击退出游戏按钮,在弹窗的提示选项下可以进行退出游戏才操作。界面可以进行方便快捷的操作。这些都是游戏最基本的需求。如图2.5所示。 图2.5游戏菜单栏(3)难度菜单栏,设置游戏的难度、即贪吃蛇运动的速度,其中有三个级别:初级、中级、高级,此选项在游戏暂停时或者游戏初始化时可以进行选择,顾名思义,速度会随着级别越来越快,从而曾加游戏的难度,增加挑战性和娱乐性(如图2.6)。图2.6 难度菜单栏(4)帮助菜单栏,其中是关于游戏的相关信息,点击关于选项,弹窗会提示游戏的相关内容,作者等等相关信息。为玩家提供相应的帮助(如图2.7)。图2.7 帮助菜单栏 2.3.8 游戏操作界面 (1)鼠标点击开始游戏按钮,开始游戏,边框颜色是黑色,蛇头颜色是蓝色,蛇身颜色是红色,食物的颜色是黑色的。蛇体可在黑色边框内自由行动,游戏过程栩栩如生,趣味性十足。如图2.8所示。图2.8游戏操作界面(2)游戏开始运行,蛇开始移动,通过键盘上下左右方向键可以控制蛇头转向,并且吃到一次食物即黑色方块后长度增加1、速度增加5从而增加游戏的难度,增加趣味性,蛇的身体会随着吃到的食物越来越多,变得越来越长,蛇体部分是红色。如图2.9所示。 图2.9游戏开始运行界面(3) 按方向键改变蛇的运行方向,当蛇头触碰到边界并且进入一格之后,程序会弹窗提示游戏结束,当蛇头触碰到身体并且进入一格之后也会有同样的效果,弹出窗户口提示游戏结束效果如图2.10所示。 图2.10 游戏结束界面 (4) 关闭程序,退出游戏的时候,界面会问您是否确定要退出游戏,有三个按钮可以提供选择。选择是,退出了系统。选择否或取消的话就可以继续游戏了。如图2.11所示。图2.11 游戏退出程序 第3章、结论3.1测试的目的测试是为了证明程序有错误,而不是证明程序无错误。一个好的测试用例是在于它能发现至今未发现的错误。一个成功的测试是发现了至今未发现的错误的测试。软件测试就是利用测试工具按照测试方案和流程对产品进行功能和性能测试,甚至根据需要编写不同的测试工具,设计和维护测试系统,对测试方案可能出现的问题进行分析和评估。执行测试用例后,需要跟踪故障,以确保开发的产品适合需求。软件测试是确认软件的质量,其一方面是确认软件做了你所期望的事情,另一方面是确认软件以正确的方式来做了这件事情。软件测试是提供信息,比如提供给开发人员或项目经理的反馈信息,为风险评估所准备的信息。软件测试不仅是在测试软件产品的本身,而且还包括软件开发的过程。如果一个软件产品开发完成之后发现了很多问题,这说明此软件开发过程很可能是有缺陷的。因此软件测试的目的还是保证整个软件开发过程是高质量的3.2软件测试系统测试是为了发现错误而执行程序的过程,成功的测试是发现了至今尚未发现的错误的测试。测试的目的就是希望能以最少的人力和时间发现潜在的各种错误和缺陷。应根据开发各阶段的需求、设计等文档或程序的内部结构精心设计用例,并利用这些实例来运行程序,以便发现错误。信息系统的测试应该包括软件测试、硬件测试和网路测试。硬件测试、网络测试可以根据具体的性能指标来进行,系统的测试更多是指软件测试。3.2.1 测试的基本概念1测试的目的软件测试的目的是尽可能多地发现软件产品(主要是指程序)中的错误和缺陷。需要明确的是软件测试不能证明软件没有存在的错误,软件测试只能减少软件中的错误和漏洞,使得软件能正常顺利的为人们提供各种服务。2测试用例要进行测试,除了要有测试数据(或称输入数据)外,还应同时给出该组测试数据应该得到怎样的输出结果,我们称它为预期结果。在测试时将实际的输出结果与预期结果比较,若不同则表示发现了错误。因此测试用例是由测试数据和预期结果构成的。为了发现程序中的错误,应竭力设计能暴露错误的测试。一个好的测试用例是极有可能发现迄今为止尚未发现的错误的测试用例。一次成功的测试是发现了至今为止尚未发现的错误的测试。3白盒测试和黑盒测试测试的关键是测试用例的设计,其方法可分成两类:白盒测试和黑盒测试。白盒测试是把程序看成装在一只透明的白盒子里,测试者完全了解程序的结构和处理过程。它根据程序的内部逻辑来设计测试用例,检查程序中的逻辑通路是否都按预定的要求正确地工作。黑盒测试是把程序看成一只黑盒子,测试者完全不了解(或不考虑)程序的结构和处理过程。它根据规格说明书规定的功能来设计测试用例,检查程序的功能是否符合规格说明的要求。3.2.2 测试的基本步骤软件测试的主要步骤有单元测试、集成测试和确认测试。1单元测试(Unit Testing)单元测试也称模块测试。通常单元测试可放在编码阶段,程序员在编写好一个模块后,总会对自己编写的模块进行测试,检查它是否实现了详细设计说明书中规定的模块功能和算法。单元测试主要发现编码和详细设计中产生的错误,通常采用白盒测试。2集成测试(Integration Testing)集成测试也称组装测试,它是对由各模块组装而成的程序进行测试,主要检查模块间的接口和通信。集成测试主要发现设计阶段产生的错误,通常采用黑盒测试。3确认测试(Validation Testing)确认测试的任务是检查软件的功能、性能及其他特征与用户的需求一致,它是以需求规格说明书(即需求规约)作为依据的测试。确认测试通常采用黑盒测试。确认测试产生测试程序是否满足需求规格说明书所列的各项要求,然后要进行软件配置复查,特别是文档是否齐全,各方面的质量是否符合要求等。如果一个软件是为某个客户定制的,那么最后由客户来实施验收测试(acceptance testing),以便客户确认该软件是他所需要的。如果一个软件是作为产品被许多客户使用的话,那不可能为每个客户进行验收测试。大多数软件生产者使用一种Alpha测试和Beta测试的过程,来揭露仅由最终用户才能发现的错误。3.3 本程序测试程序运行正常,贪吃蛇基本能够实现游戏功能,在方向键的条件下实现了上下左右的行走,蛇体能按照蛇头的运行轨迹进行运动,吃到食物之后蛇体加长一格并且速度加五,游戏状态栏能实时进行显示游戏当前的状态,包括蛇体长度以及蛇运行速度,撞到边界或者蛇头触碰身体游戏结束,设置菜单内按钮:重新开始、暂停/继续、退出游戏,难度菜单内按钮:初级、中级、高级,帮助菜单按钮:关于,均能正常实现功能,程序运行流畅,无死循环或卡顿现象,测试成功。参 考 文 献1 罗伟坚.Java经典游戏程序设计M.北京:人民邮电出版社,2010.2426.2 朱福喜. Java程序设计技巧与开发实例M.北京:人民邮电出版社,2009.3637.3 陆惠恩. 实用软件工程M.北京:清华大学出版社,2009.9899.4 (美)Bruce Eckel.陈昊天 译.Java编程思想M.北京:机械工业出版社,2009.99102.5 高凌琴,陈青华.俄罗斯方块游戏关键技术探讨J.信息技术与信息化研究探讨,2010,1(2):165167.6 王宇,战学刚,高国伟.计算机算法解决俄罗斯方块中的数学与计算问题J.计算机应用与软件,2011,24(3):3235.7朱福喜,黄昊. Java项目开发与毕业设计指导M.北京:清华大学出版社,2011.6972.8 郑人杰,殷人昆,陶永雷.实用软件工程M.北京:清华大学出版社,2011.110129.9易君 编.Java.NET网络编程M.北京:中国铁道出版社,2010.5657.10王咏武,王咏刚.道法自然M,电子工业出版社2009.256270.11张白一
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 天水中语文考试题及答案
- 2025年公需科目人工智能与健康试题及参考答案
- 装修仓库单据管理办法
- 专户资金存放管理办法
- 街道小区楼道管理办法
- 营销创业销售管理办法
- 行政服务提升管理办法
- 中国创新驿站管理办法
- 营养包发放管理办法
- 蚌埠公益岗管理办法
- 纺织企业安全生产知识培训
- 2025年秋新北师大版数学三年级上册全册教学设计
- 2025年全国小学生“学宪法、讲宪法”活动知识竞赛题库及答案
- 小学心理健康教育四级预警汇报流程
- 教案2025秋形势与政策纪念抗战胜利坚定民族信念抗战胜利80周年
- 2025-2026人教版(2024)物理九年级全册教学进度表
- 义务教育质量监测学校成绩分析报告
- 2025版房地产抵押按揭续贷合同
- 2025年秋季小学四年级上册语文教学计划及教学进度表
- 北京市西城区2024-2025学年七年级下学期期末道德与法治试题(解析版)
- 2025年广东省高考化学试题(含答案解析)
评论
0/150
提交评论