J2ME手机游戏开发论文.doc_第1页
J2ME手机游戏开发论文.doc_第2页
J2ME手机游戏开发论文.doc_第3页
J2ME手机游戏开发论文.doc_第4页
J2ME手机游戏开发论文.doc_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

汉口学院学士学位毕 业 论 文 题 目: J2ME手机游戏开发 目 录内容摘要1关键词1Abstract1Key words11.引言1 1.1 java语言的特点及手机游戏的特征和类型1 1.1.1 java的主要特点1 1.1.2 手机游戏特征2 1.1.3 手机游戏的类型3 1.1.4 手机软件的状况4 1.2 J2ME的体系结构4 1.2.1 java技术4 1.2.2 J2ME的层次结构6 1.3java开发技术6 1.3.1手机中的J2ME6 1.3.2 MIDP介绍72.系统开发环境9 2.1开发工具9 2.2开发环境93.系统需求分析10 3.1需求分析10 3.2可行性分析104.系统概要设计11 4.1设计目标11 4.2系统功能模块115.系统详细设计14 5.1程序设计13 5.1.1主类Game14 5.1.2类snakeMain、snakeWin、SnakeAct145.2各功能界面截图18 5.2.1贪吃蛇游戏的基本运行界面18 5.2.2程序开始运行界面195.3总结226.系统测试23 6.1测试的意义23 6.2测试过程23 6.3测试结果23结束语24致谢25参考文献26附录27 内容摘要:近年来,Java作为一种新的编程语言,以其简单性、可移植性和平台无关性等优点,得到了广泛地应用。随着手机的日益普及、Java功能在移动设备上的实现,Java应用程序产生的手机增值服务逐渐体现出其影响力,对丰富人们的生活内容、提供快捷的资讯起着不可忽视的作用。 本论文介绍了手机的软硬件特性、J2ME的相关技术及本程序的结构分析和具体功能的实现本文在分析J2ME技术的基础上,介绍一个“贪吃蛇”游戏开发实例。 本文在介绍Java相关技术和国内外发展现状的基础上,对“贪吃蛇”游戏的整个生命周期的各个开发阶段进行了详细地介绍。首先,分析了开发本游戏软件的可行性,重点分析本设计所采用的技术的可行性。其次,从游戏主界面等几方面,分析了本游戏的功能需求;从可使用性和安全性方面分析了属性需求。然后,进行了游戏的概要设计和详细设计,这也是本文的重点。概要设计给出一个功能模块的主框架以及三个类模块的函数调用关系;详细设计介绍了Java2标准运行环境的配置,重点给出各个类模块的程序流程图,列表介绍了各个类包含的变量、使用的方法,展示了游戏的界面。为了保证程序代码的正确性和功能实现的可靠性,本文还介绍了游戏软件的程序调试过程和功能测试结果。关键词:J2ME;java;jdk;“贪吃蛇”游戏 Abstract:In recent years, Java, as a new programming language, with its simplicity, portability and platform independence and other advantages, had been used widely. With the increasing popularity of the mobile phone, Java function in the realization of mobile devices, Java applications that make mobile value-added services to reflect its influence gradually, the rich peoples life content, provide quick information plays an important role. This paper introduces the software and hardware of the mobile phone and the relevant technology of the J2ME characteristics and the program structure analysis and the realization of the function of concrete based on the analysis of the J2ME technology, and on the basis of introducing a snake game development examples.Based on the introduction of Java related technology and the domestic and foreign development present situation, on the basis of snake game of the whole life cycle of each development phases are introduced in detail. First of all, analyzes the feasibility of this game software development, this paper analyzes the design of the feasibility of the technology. Second, from the game in such aspects as the interface, and analyzes the function requirements of this game; Can use sex and safety from analyzes the attribute demand. Then, the summary of game design and detailed design, this also is the focus of this paper. General design give a function modules main frame and three class module function call relationship; The detailed design Java2 standard operation environment is introduced the configuration, each kind of module are key program flow chart, the list in each kind of variable contains, and use of the method, show the game interface. In order to guarantee the correctness of the program code and function of the realization of the reliability, this paper also introduces the game software program debugging process and function test results.Key words:J2ME; Java; JDK; Snake game 1.引言手机游戏成绩斐然,成为IT产业中增长最快的部分之一.纵观IT产业的历史,计算机游戏已经成为技术创新背后的动者渴望更加强大的硬件计算能力;渴望不受不同的软件的限制。无论是将图形强制在人工智能(AI)上 还是网络安全性。 游戏开发者和玩家常常是前沿计算机技术的最早的采用者。由于他们的创新天性,游戏不再是由大型采购公司控制的技术产品。游戏领域总是有充足的空间给那些在这方面有天分的单个创新者。随着技术对游戏经验的促进,游戏市场持续增长。商业IT革命为我们节省了时间力之一。计算机游戏和金钱,从而提高了我们的工作水平,我们因此花费更多的时间和金钱在游戏上,来改善生活的整体质量。甚至在当今困难的经济时代,游戏仍保持快速增长,他仍然是盈利行业的组成部分。Java开发者应该注意到这里蕴藏着的巨大的商机。 1.1 java语言的特点及手机游戏的特征和类型 Java语言是一种适用于网络编程的语言,它的基本结构与C + +极为相似,但却简单得多。它集成了其它一些语言的特点和优势,又避开了它们的不足之处。1.1.1 java的主要特点 (1)简单性 Java与C + +相比,不再支持运算符重载、多重继承等易混淆和较少使用的特性,而增加了内存空间自动垃圾收集的功能,复杂特性的省略和实用功能的增加使得开发变得简单而可靠。另外, Java的系统非常小, Java应用软件能在相当小的系统之上独立工作。 (2)平台独立性 这是Java最吸引人的地方。由于它采用先编译成中间码(字节码) ,然后装载与校验,再解释成不同的机器码来执行,即“Java虚拟机”的思想,“屏蔽”了具体的“平台环境”特性要求,使得只要能支持Java虚拟机,就可运行各种Java程序。 (3)面向对象的技术 面向对象的技术是近年来软件开发中用得最为普遍的程序设计方法,具有继承性、封装性、多态性等众多特点, Java在保留这些优点的基础上,又具有动态联编的特性,更能发挥出面向对象的优势。 (4)多线程 多线程机制使应用程序能并行执行, Java有一套成熟的同步原语,保证了对共享数据的正确操作1通过使用多线程,程序设计者可以分别用不同的线程完成特定的行为,而不需要采用全局的事件循环机制,这样就很容易实现网络上实时的交互行为。 传统手机的软件是正在手机出厂时由手机制造商固化在其硬件设备上的,需要灯芯手机的功能就需要更换一部手机,而手机使用者总是希望不用花太多的钱就能使手机功能不断升级。随着由Sun公司提出的J2ME技术成熟Java手机终于出现了。Java手机与传统手机的最大区别在于可以运用第三方提供的应用软件,当然应用软件必须遵循J2ME的编程规范。这样,手机使用者可以根据自己的需要从网上下载或购买应用软件。而在各种应用软件中,手机游戏所占的比例是最大的。有鉴于此,本文将介绍在J2ME平台下进行手机游戏开发的基本原理和开发过程1.1.2 手机游戏特征 手机游戏的盈利主要是由于它们的涉及面很广。手机已经与现代生活方式紧紧地结合在一起。他们是最普遍携带的个人用品中仅次于钥匙和钱包的东西。传统的台式机游戏将目标锁定在低级趣味的人和青少年身上,而手机游戏则每个人都可以访问的到,随时,随地。尽管每个手机游戏都不贵,但是巨大的使用量(如:每人每星期一个新游戏)将使得这个市场商机无限并且有利可图。但是,对于开发者来说,将控制台游戏迁移到手机游戏工程很大因为他们所面向的对象、生活方式和分布式模型都有着极大的区别。让我们从手机游戏的需求谈起吧。一个成功的手机游戏大多具有以下特征: (1)易于学习: 既然手机游戏面向的是普通消费者而不是计算机高手,那么他们不可能深入的学习游戏技巧。消费者不会花几个小时去研究一个3美元的手动操作的游戏。所以游戏必须是一下载就可以玩的。保持游戏的简单是最基本的要求。 (2)可中断性: 多任务处理是手机生活方式的基本特征。手机用户常常在任务(如等一个电子邮件或者等车)之间有一小段时间。而游戏、日历管理、通讯和工作数据访问使用的是同一个设备。所以一个好的手机游戏应该提供短时间的娱乐功能,并且允许用户在游戏和工作模式之间顺利切换。 (3)基于订阅:手机游戏的盈利成功取决于他们巨大的使用量。一开始开发和设计每个游戏都是昂贵的。如果一个手机游戏开发者要赚钱的话,重要的是:同一个游戏引擎,多个标题,基本的故事情节类似。基于订阅的游戏是不断产生收入的最好方法。 (4)丰富的社会交互: 不管一个游戏设计得多好,只要玩家找到了它的根本模式或者玩完了所有的游戏路径很快就会厌烦这个游戏。对于一个基于订阅的游戏,重要的是与别的玩家合作以增强所玩游戏的智力和随机性。在今天纷繁复杂的多玩家游戏中具有丰富社会交互的游戏证明是成功的。 (5)利用手机技术的优点: 巨额的手机技术研发费用都花在提高设备和网络的可用性和可靠性上面。因此,手机设备硬件和网络协议与桌面/控制台世界(如全球定位系统(GPS)扩展、条形码扫描仪、和短消息服务(SMS)/多媒体信息服务(MMS)通讯)有着非常大的差别。好的手机游戏应该利用那些更新的设备特征和网络基础设备的优点。 (6)无违法内容:既然所有年龄/性别的人群都玩手机游戏并且常常在公共/工作场合,你应该避免明显的暴力或者色情内容。 1.1.3 手机游戏的类型 基于以上标准,最有可能成功的手机游戏就是那些临时小游戏,它可为广泛的玩家在所有的社交场合提供娱乐。特别是,下列类型的游戏将是明天最具有杀伤力的游戏: (1)多玩家游戏: 这些游戏可以提供手机访问以便建立在线游戏团体。或者,他们利用手机专有特征如多媒体通讯和基于位置的服务,从而创建完全不同的社会结构。好的游戏设计和管理是这种类型游戏成功的关键。 (2)基于内容的游戏:这些游戏传送版权的多媒体内容,如名人的图片、视频片断、音频立体声、和私人的体育节目,给那些音乐/电影/体育迷们。它成功的关键就是提供值得订阅的高品质的内容流。 (3)高冲击的视频游戏:PC 和台式游戏已经从2D 进化到3D。手机游戏也会遵循这种趋势。现在已经出现手机3D工具箱和听筒。但是,3D是非常资源集中型的。他们要求开发者和图形设计者都是专家级的。专业的商店最有可能开发这些游戏。 在手机游戏的早期,大多数开发者都是想要玩转设备、学习技巧和快速攻关的狂热分子。但是,随着更多的开发者加入这个行业,手机游戏已经进化成涉及到专业设计师、构造师、开发者、产品经销商、律师、和艺术家在内的主导产品。这是行业走向成熟的必然趋势。尽管在某人的业余时间内要开发和推销简单的游戏更加困难,但是更多的专业商店将为许多人提供更多的就业机会。 1.1.4 手机软件现状 在信息社会中,手机及其他无线设备越来越多的走进普通百姓的工作和生活,随着信息网络化的不断进展,手机及其他无线设备上网络势在必行。但是传统手机存在以下弊端: (1)传统手机出厂时均由硬件厂商固化程序,程序不能增加、删除,有了错误也不能更新、修改,若要增加新功能必须另换一部手机。 (2)传统手机访问互联网是通过WAP(Wireless Application Protocal),所有网络资源必须接通网络才能在线访问,非常耗时、费用亦很高。 而Java技术在无线应用方面的优势非常明显: (1)应用程序可按需下载,而不是购买由硬件商提供的套件,可升级空间大。 (2)Java技术提供了一个类库,它使的应用开发商可以创建更为直觉、丰富的用户界面(GUI); 1.2 J2ME的体系结构1.2.1 java技术Sun公司的Java技术目前有三个平台:java SE,java EE,java ME。Java平台是一种纯软件平台,它有三个版本Java SE、Java EE、Java ME。Java SE(Java Platform,Standard Edition)这个版本以前叫做J2SE,后来版本号从1.4直接跳到5.0,其实也就是1.5,所以就叫成Java SE 5.0。目前Java开发人员使用较多的版本是5.0,当然还有Java SE 6.0这个更新的版本。它允许开发和部署在桌面、服务器、嵌入式环境和实时环境中使用的Java 应用程序。Java SE还包含了支持Java Web服务开发的类,并为Java EE这个版本提供基础。虽说桌面应用程序,Java一直不被看好,但也稍微提一下,负责桌面GUI开发的类库我知道的有:JDK自带的主要是AWT/SWING这个Java原生类库;也可以使用IBM的SWT/JFace这个第三方类库。Java开发工具有:NetBeans(最近已经是6.0final版了,做GUI有使用VB的感觉),Eclipse(SWT/JFace这个项目其实就是做Eclipse项目时扩展出来的,所以对SWT/JFace支持的也不错)。Java EE(Java Platform,Enterprise Edition)这个版本以前叫做J2EE,也就是大家可能听得比较多的,也是Java比较流行的领域,Java的企业级版本。Java EE下有很多流行的开发框架,像Struts、Spring、Hibernate这种流行的所谓SSH组合等。根据项目大小、应用领域,技术平台的选择面还是很多的,除了Java EE,还有.Net,LAMP组合(Linux、Apatch、MySql、PHP组合),相对来说比较新Ruby在Ruby on Rails的框架应用,后两者可能在相对来说比较轻量级的Web领域运用成功案例比较多,更重量的企业级潜力还有待挖掘。Java ME(Java Platform,Micro Edition)这个版本以前叫做J2ME。应用领域像各种移动设备和嵌入式设备,比如:手机、PDA、电视机顶盒和打印机。Java ME不是太熟悉,不过移动设备和嵌入式设备的开发个人觉得算是比较有意思的领域,最近比较瞩目的业界新闻有一个就是Google发布开源智能手机操作系统开发平台Android,也就是前一阵子炒得很火的GPhone(原来Google出的不是手机,而是一个手机操作系统开发平台)。这个平台貌似会对Java ME有些冲击,按照网上的消息,Android包括:1、高度定制的Linux操作系统内核及智能手机硬件驱动支持;2、经过Google修改过的Java虚拟机Dalvik,这里的性能比SUN的Hotspot高,支持大部分Java核心类库;3、大量智能手机开发核心类库;4、大量现成的智能手机应用软件;5、基于Eclipse的开发环境。也是按照网上的说法,Java EE提供了统一的编程平台,但不能调用操作系统的资源;而Android下直达操作系统,上直达应用软件,如:浏览器、日历、地图等。 Java开发工具很多,个人使用的IDE有Eclipse和NetBeans。Eclispe比较流行,各种插件也多,当然用起来也不错;NetBeans现在也是越做越好了,介绍这两个IDE主要是开源的,当然还有其它工具如JBuilder、IntelliJ、JCreator。这些IDE各有优势劣势,根据你开发的项目来选择了。1.22 J2ME的层次结构 为了使J2ME程序广泛适用于各类嵌入式平台,满足市场对个性化和灵活性的需求,J2ME采用了模块化的结构,底层是宿主机的操作系统,内部则分为三层:Java Virtual Machine(虚拟机层);Configuration(配置层);Profile(简表层)。J2ME中有两类虚拟机:CVM (C Virtual Machine,C虚拟机)与KVM (K Virtual Machine,K虚拟机),CVM的功能比KVM功能更为强大。Configuration层为应用程序提供运行基础,存在两种配置:cLDc(connected Limited Device Configuration,连接限制设备配置),与KVM一起用于内存有限电力供应有限的嵌入式装置(如:PDA,手机等)。CDC (Connected Device Configuration,连接设备配置),与CVM一起用于要求内存超过2兆的电力供应相对充足的嵌入式装置(如:智能化空调,冰箱等)。 Profile层建立在Configuration层之上,定义了一整套J2ME应用程序可用的API类。MIDP(Mobile Information Devices Profile,移动信息设备简表)是Sun公司推出的简表中被采用最多的一种,它建立在CDLC上 。1.3 Java开发技术1.31 手机中的J2ME 集成在手机中的J2ME通常采用CLDCMIDP结构。其中:CLDC包括J2ME的核心API,MIDP包括用户接口(uI)和HT?P连接等J2ME扩展API。J2ME通用结构与手机中的J2ME结构之间的对应关系如图2所示。 J2ME通用结构 用于手机的J2ME结构应用程序用户程序 MIDP应用模型层 CLDC:java核心 API配置层KVMJava虚拟机层本地操作系统手机操作系统 图2 J2ME通用结构和用于手机的J2ME结构之间对应关系1.32 MIDP介绍 由图2可见,手机程序其实是完全基于MIDP开发的。MIDP提供一种标准的运行环境,允许在终端用户设备上动态地配置新的应用程序和服务。MIDP包括一个低级的UI API和一个高级的UI API。低级的API允许完全访问一个设备的显示屏,也允许访问键盘事件,但是没有可用的用户界面控件,应用程序必须精确地绘制出按钮和其它所有的控件。相反,高级API提供简单的用户界面,而控件却不能直接访问原始的输入事件或显示屏。MIDP的实现确定了绘制控件的方法,也确定了如何管理用户输入。 CLDCMIDP包含三个核心CLDC软件包java1ang、javaio和javautil,另加四个特定于MIDP的软件包:javaxmicroeditionio、javaxmicroedition1cdui、javaxmicroeditionmidlet、javaxmicroeditionIllISI 。所有基于MIDP的程序的主类都必须是基于MIDlet的。MIDlet是一个Java类,它扩展了javaxmicroeditionmidletMIDiet抽象类,主要实现startApp()、pauseApp0和destroyApp0方法。MIDlet在应用程序生命周期中有三种可能的存在状态:运行状态、暂停状态、销毁状态。运行状态始于startApp方法被调用时。在暂停状态中,MIDlet将释放一部分资源,但是它准备着再次被运行。销毁状态则永久闭,释放所有的资源。应用程序只需要负责实现这三个方法,方法都由系统来调用。 一个J2ME手机程序的基本框架如下: public MyApp extends MIDlet public MyApp() ) public void startApp() ) public void pauseApp() ) public void destroyApp() ) ) 2.系统开发环境2.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好很多。但不管怎么说,我们还是需要先把Sun JDK掌握好。2.2 应用环境(1)操作系统:Solaris、Windows NT、Windows xp、Windows 7等(2)应用软件:jdk1.6 3.系统需求分析3.1 需求分析 本系统主要是完成贪吃蛇游戏的基本操作。用户可以自己练习和娱乐。本系统需要满足以下几点要求:(1) 利用方向键来改变蛇的运行方向。 (2) 在随机的地方产生食物。 (3) 吃到食物就变成新的蛇体,碰到壁或自身则游戏结束,否则正常运行。3.2 可行性分析 贪吃蛇游戏是一种简单的大众的游戏,自从计算机实现以来,深受广大电脑玩家的喜爱,做一个简单的贪吃蛇小游戏。 贪吃蛇的核心算法时如何实现移动和吃掉食物,没有碰到食物的时候,把当前运动方向上的下个节点入队,并以蛇节点的颜色绘制这个节点,然后把头指针所指的节点出队,并以游戏框架内部背景色重绘出队的节点,这样就可以达到移动的效果。而在吃到食物的时候,则只需把食物入队即可。实现贪吃蛇的基本的蛇身移动、吃到食物身体增长、和碰到墙壁或自身死亡。本次设计我将主要运用java语言来完成。Java语言是一种跨平台,适合于分布式计算环境的面向对象编程语言,用Java写的应用程序不用修改就可在不同的软硬件平台上运行。由于Java主要用于网络应用程序开发,因此对安全性有较高的要求。如果没有安全保证,用户从网络下载程序执行就非常危险。Java通过自己的安全机制防止了病毒程序的产生和下载程序对本地系统的威胁破坏。 第四章 系统概要设计4.1 设计目标本软件是针对贪吃蛇小游戏的JAVA程序,利用方向键来改变蛇的运行方向,空格键暂停或继续游戏,并在随机的地方产生食物,吃到食物就变成新的蛇体,碰到壁或自身则游戏结束,否则正常运行。4.2 系统功能模块本系统共包括1个java源文件和3个类文件。1. 类之间的关系如图1所示。 图1类之间的关系 Game为源程序中的包,定义了snakeFrame的对象JFrame,开始运行程序。通过snakeMain、snakeWin、snakeAct三个类实现游戏。snakeMain实现该文件的程序入口,含有main方法;JFrame实现菜单控制运行等总体要求,实现方向键控制蛇的方向,实现游戏开始、结束等;snakeWin实现蛇的结构和具体运动,如判断食物被吃掉及判断后的动作。snakeAct实现获取x、y的值。2.游戏流程图 图2 游戏流程过程 从游戏流程图中可以看书游戏具体过程是整个游戏中的核心,只要是随机显示食物,实现方向键控制社体移动,判断蛇的死亡方法,吃掉食物及判断后的动作,实现游戏结束。设置newGame、stopGame按钮来控制游戏,实现游戏开始和结束。 3.java源文件及其功能如表所示。表1 java源文件及其功能序号文件名主要功能1SnakeMain该文件为程序入口,含有main方法。2JFrame实现菜单控制运行等总体要求 3SnakeWin 该文件的snakeWin对象 4snakeAct该文件的snakeAct对象5JPanel该文件实现画板功能,用红蓝间隔画蛇身。 6Location该文件窗口大小 7nThread该文件为蛇运动线程。 snakeMain主要功能是实现该文件的程序入口,含有main方法;JFrame实现菜单控制运行等总体要求,实现方向键控制蛇的方向,实现游戏开始、结束等;snakeWin实现蛇的结构和具体运动,如判断食物被吃掉及判断后的动作。snakeAct实现获取x、y的值;JPanel该文件实现画板功能,用红绿画蛇头、蛇身;nThead该文件为记录状态的线程。5.系统详细设计5.1 程序设计5.1.1主类Game (1)主类为此程序的入口,定义了SnakeFrame的对象JFrame,开始运行此程序。 (2)源代码见文件SnakeGame.Java5.1.2类SnakeMain、snakeWin、snakeAct一、snakeMain.java成员变量描述 变量类型 名称蛇类主函数 SnakeMain snakeMain 表5-1 snakeMain中的成员变量方法名功能snakeMain()创建蛇体主函数 表5-2 snakeMain中的成员方法二、snakeWin.java (1)Public class snakeWin extends JPanel implements ActionListener,KeyListener,Runnable中的成员变量及成员方法 成员变量描述 变量类型 名称 接口 implementsActionListenerKeyListenerRunnable 按钮 JButtonnewGamestopGameok 速度 intspeed 蛇体ArrayListsnakeAct 对话框JDilogdialog 状态标签JLabelLabel 线程nThreadThread 布局管理器setLayoutFlowLayout 表5-3 snakeWin中的成员变量 方法名 功能 JPanle创建蛇的面板 Runnable设置接口 addKeyListener监视器 表5-4 snakeWin中的成员方法 (2) public void paintComponent(Graphics g)中的成员变量和成员方法 成员变量描述 变量类型 名称绘图paintComponentGraphicsdrawRectdrawString分数、速度蛇体颜色setColor红色点、绿色点 表5-5 paintComponent中的成员变量方法名功能Graphics绘图List.get().getX/getY在随机的地方产生食物setColor()设置颜色 表5-6 paintComponent中的成员方法 (3)public void actionPerformed(ActionEvent e) 中的成员变量和成员方法 成员变量描述 变量类型 名称事件执行actionPerformedActionEvent e事件eventActionEvent e横坐标intx纵坐标inty新建蛇块tempActsnakeAct食物块宽public static final intX食物块高public static final intY线程nThreadThread 表5-7 actionPerformed中的成员变量 方法名功能actionPerformed组建对象 表5-8 actionPerformed中的成员方法 (4)private void eat() 中的成员变量和成员方法 成员变量描述 变量类型 名称新建蛇块tempActsnakeAct 表5-9 eat中的成员变量方法名功能 eat()判断食物是否被蛇吃掉,如果食物在蛇运行方向的正前方,并且与蛇头接触,则被吃掉List.get().getX/getY在随机的地方产生食物 表5-10 eat中的成员方法 (5)public void otherMove()中的成员变量和成员方法 成员变量描述 变量类型 名称横坐标intx纵坐标inty 表5-11 Othermove的成员变量方法名功能otherMove蛇块移动List.get().getX/getY在随机的地方产生食物nThread =null死亡方法 表2-12 Othermove的成员方法 (6)public void move(int x,int y)的成员变量和成员方法 成员变量描述 变量类型 名称横坐标intx纵坐标inty 表5-13 move的成员变量方法名功能Move死亡方法List.get().getX/getY在随机的地方产生食物nThread =null死亡方法 表5-14 move的成员方法 (7)public boolean minYes(int x,int y)中的成员变量和成员方法 成员变量描述 变量类型 名称横坐标intx纵坐标inty 表5-15 minYes的成员变量方法名功能minYes边框大小List.get().getX/getY在随机的地方产生食物 表5-16 minYes的成员方法 (8)public boolean maxYes(int x,int y)中的成员变量和成员方法 成员变量描述 变量类型 名称横坐标intx纵坐标inty 表5-17 maxYes的成员变量方法名功能maxYes边框大小List.get().getX/getY在随机的地方产生食物 表5-18 maxYes的成员方法 (9)public void keyPressed(KeyEvent e) 中的成员变量和成员方法 成员变量描述 变量类型 名称向上Vk_UPKeyEvent e向下Vk_DOWNKeyEvent e向左Vk_LEFTKeyEvent e向右Vk_RIGHTKeyEvent e 表5-19 keyPressed中的成员变量 方法名功能keyPressed键盘事件 表5-20 keyPressed中的成员方法 (10)public void keyReleased(KeyEvent arg()) 中的成员方法方法名功能keyReleased键盘触发 表5-21keyReleased中的成员方法 (11)public void keyTyped(KeyEvent arg()) 中的成员方法方法名功能 keyTyped按键被按下 表5-22keyTyped中的成员方法 (12)public void run() 中的成员变量和成员方法 成员变量描述 变量类型 名称运动public static final intrun 表5-23 run中的成员变量方法名功能Move()蛇体在运行中的措施 表5-24 run中的成员方法三、snakeAct.java 成员变量描述 变量类型 名称蛇体public static final intsnakeAct横坐标intx纵坐标inty 表5-25 snakeAct中的成员变量方法名功能getX、getY获得x、y值 表5-26 snakeAct中的成员方法四、类JPanel 此类为画蛇的面板类,是实现红绿画蛇身算法的类。 源代码见文件源代码见文件SnakeWin.java五、 Implements为设置接口的方法源代码见文件SnakeGame.java六、Thread 此类为线程nThread的子类,实现蛇运动以及记录分数的功能。 源代码见文件SnakeWin.java5.2 各功能界面截图5.2.1贪吃蛇游戏的基本运行界面(1)生成初始界面: 图1 初始界面 在Eclipse软件中创建snakeMian.java、snakeWin.java、snakeAct.java,分别输入代码源文件,然后在Eclipse软件中点击运行就生成初始界面。(2)游戏菜单栏: 图2 游戏菜单栏“开始”、“退出”菜单栏实现newGame的开始、stopGame的结束;“分数”、“速度”菜单栏实现游戏得分,速度的记录。5.2.2程序开始运行界面 (1)鼠标点击“开始”按钮,开始游戏(绿色方块为食物,红色为初始的蛇体):图几? 鼠标点击“开始”按钮,开始游戏(绿色方块为食物,红色为初始的蛇体);蛇体会自动移动,由方向键控制蛇体移动。 (2)按开始,游戏开始运行,蛇开始移动,并且吃到一次食物即绿色方块后就变成蛇体:图几? 点击“开始”,游戏开始运行,蛇体开始移动,控制方向键,每吃掉一次食物即绿色方块后就会变成蛇体,蛇体长度加1,然后蛇体继续移动。 (3)按方向键改变蛇的运行方向,吃掉绿色方块(食物),绿色方块随机地方产生:图几? 控制方向键来改变蛇体的移动方向,每吃掉一次绿色方块,蛇体长度加1,然后继续移动,绿色方块会随机产生。 (4)如果不操作方向键,碰壁之后游戏结束,显示得分。图几?不控制方向键蛇体会自动先前移动,碰壁之后游戏就结束,显示“你挂了你的分数是”。(5)如果蛇头碰到蛇体,游戏结束图几?在控制方向键过程中,可能会出现蛇头碰到蛇体,碰撞之后游戏就结束,显示“你挂了你的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论