《毕业设计(论文)基于J2ME的手机游戏设计与实现.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)基于J2ME的手机游戏设计与实现.doc(17页珍藏版)》请在三一办公上搜索。
1、=基于J2ME的手机游戏设计与实现 学生:XX 指导教师:XX 内容提要:J2ME(Java 2 Micro Edition) 是近年来随着各种不同设备,尤其是移动通信设备的飞速发展而诞生的一项新的开发技术。它定位在消费性电子产品的应用上,对设备的智能化、多样化,提供了革命性的解决方案,并因其“Write Once, run anywhere”的Java特性而提高开发的效率。 随着手机的日益普及、Java功能在移动设备上的实现,Java应用程序产生的手机增值服务逐渐体现出其影响力,对丰富人们的生活内容、提供快捷的资讯起着不可忽视的作用。本论文着眼于J2ME技术的应用,开发一款可商用的手机游戏程
2、序五子棋。本程序将老少皆宜的经典作品移植到手机上来,为更流行的硬件平台提供应用软件。 本论文介绍了手机的软硬件特性、J2ME的相关技术及本程序的结构分析和具体功能的实现。 关键字:J2ME,手机游戏, Java,五子棋。 Design and Implementation of Handest Games Based on J2MEABSTRACT: J2ME is a kind of fast developing technology implemented on various devices especially mobile communication equipments. It
3、focuses on application for consumptive electronic products, providing revolutionary solution to the intelligentization and diversification of the equipment. It improve the efficiency of the development process thanks to its “Write Once, run anywhere” nature. When cell phone is getting ever more popu
4、lar nowadays, with the implementation of Java technology on mobile equipment, increment of capital on communication service exhibits its force on peoples everyday life, providing them ever fast information just in hand. This dissertation focuses on implementation of J2ME technology and has developed
5、 a commercial game suite run on mobile phonesGobang.It offer corresponding software for such more popular hardware platform. This dissertation introduces the characteristic of Nintendo FC machine and its software, J2ME and its relative technology as well as this programs structure and analysis of im
6、plementation in details. Key words: J2ME, mobile game, Java, Gobang. 目录1.绪论61.1手机软件状况61.2 游戏业务及J2ME的概况62.五子棋手机游戏的需求分析82.1 编写目的82.1.1 编写目的82.1.2 定义82.2 任务概述82.2.1 目标82.2.2 条件与限制82.3 功能需求82.4 性能需求82.5 环境需求82.6 本程序需要解决的相关技术问题83、五子棋手机游戏的概要设计83.1 开发环境83.2 JAVA语言的特点93.2.1 平台无关性93.2.2 安全性93.2.3 面向对象93.2.4
7、分布式93.2.5 健壮性93.3 关于JBUILDER93.4 关于Wireless Tool Kit93.5 关于 JAVA DEVELOPMENT KIT 1.5103.6 关于J2ME103.6.1 什么是J2ME103.6.2 J2ME智能客户端104. 五子棋手机游戏的详细设计与实现114.1 本程序需要解决的相关技术问题114.2 程序流程114.3 游戏API概述114.3.1游戏API类库概述124.3.2 提供低级绘制的CANVAS类124.3.3 GRAPHICS类124.3.4 PNG格式124.4 棋子的控制和敌方(手机)的智能运行134.5 有关绘图的一些技术134
8、.6 模拟器的相关调试135. 系统设计与编码实现136. 总结146.1 本程序的总结和展望146.2 经验与感想14致谢:14参考文献:15附录:151.绪论1.1手机软件状况移动电话可以说是最多人拥有的终端设备,实在举不出有哪些终端设备是拥有这么多用户的。而且,在可以搭载Java的终端设备中,也没有像移动电话这么普及的。用户人数越多,也就意味着人们使用您开发出来的应用软件的机会越大。这对一个您来说,是个很大的商机。如果能够充分利用移动电话的普及率以及通信与文件存储功能的特性,相信一定能够制作出很吸引人的内容。传统手机存在以下弊端:传统手机出厂时均由硬件厂商固化程序,程序不能增加、删除,有
9、了错误也不能更新、修改,若要增加新功能必须另换一部手机。传统手机访问互联网是通过WAP(Wireless Application Protocal),所有网络资源必须接通网络才能在线访问,非常耗时、费用亦很高。而Java技术在无线应用方面的优势非常明显:应用程序可按需下载,而不是购买由硬件商提供的套件,可升级空间大。Java技术提供了一个类库,它使的应用开发商可以创建更为直觉、丰富的用户界面(GUI); Java技术使网络带宽的应用更为有效,因为应用程序可以下载到器件上,并在本地运行,仅仅是在连接到服务器时才会占用网络带宽。基于以上分析,Java手机将具有很好的发展前景,是未来手机的发展方向,
10、是业界的热点。手机游戏的盈利主要是由于它们的涉及面很广。手机已经与现代生活方式紧紧地结合在一起。他们是最普遍携带的个人用品中仅次于钥匙和钱包的东西。传统的台式机游戏将目标锁定在低级趣味的人和青少年身上,而手机游戏则每个人都可以访问的到随时,随地。尽管每个手机游戏都不贵,但是巨大的使用量(如:每人每星期一个新游戏)将使得这个市场商机无限。只要有好的游戏,就会有更广的使用量。1.2 游戏业务及J2ME的概况纵观IT产业的历史,就像军事的发展时常推动计算机的演化一样,计算机游戏已经成为技术创新背后的动力之一。计算机游戏者渴望更加强大的硬件计算能力;渴望不受不同的软件的限制无论是将图形强制在人工智能(
11、AI)上 还是网络安全性。游戏开发者和玩家常常是前沿计算机技术的最早的采用者。由于他们的创新天性,游戏不再是由大型采购公司控制的技术产品游戏领域总是有充足的空间给那些在这方面有天分的单个创新者。 手机游戏的盈利主要是由于它们的涉及面很广。手机已经与现代生活方式紧紧地结合在一起。他们是最普遍携带的个人用品中仅次于钥匙和钱包的东西。传统的台式机游戏将目标锁定在低级趣味的人和青少年身上,而手机游戏则每个人都可以访问的到随时,随地。尽管每个手机游戏都不贵,但是巨大的使用量(如:每人每星期一个新游戏)将使得这个市场商机无限。但是,对于开发者来说,将控制台游戏迁移到手机游戏工程很大。因为他们所面向的对象、
12、生活方式和分布式模型都有着极大的区别。虽然 Java 已经被用到许多企业级软体上,可是其实骨子里面还是非常适合用在嵌入式系统之中。Java平台演进到Java2后,Java平台分别针对不同领域的需求被分成四个版本,亦即J2EE、J2SE、J2ME以及JavaCard。其中J2ME定位在消费性电子产品的应用上。这个版本针对资源有限的电子消费产品的需求精简核心类库,并提供了模块化的架构让不同类型产品能够随时增加支持的能力。这个版本的应用层面相当广泛,会是未来Java平台发展的重点项目。J2ME 在设计其规格的时候,遵循着“对各种不同的装置而造出一个单一的开发系统是没有意义的事”这个基本原则。于是 J
13、2ME 先将所有的嵌入式装置大体上区分为两种:一种是运算功能有限、电力供应也有限的嵌入式装置(比方说PDA 、手机);另外一种则是运算能力相对较佳、在电力供应上相对比较充足的嵌入式装置 (比方说冷气机、电冰箱、电视机上盒 (set-top box)。因为这两种型态的嵌入式装置,所以Java 引入了一个叫做Configuration 的概念,把上述运算功能有限、电力有限的嵌入式装置定义在Connected Limited Device Configuration(CLDC)规格之中;而另外一种装置则规范为 Connected Device Configuration(CDC)规格。也就是说, J
14、2ME 先把所有的嵌入式装置利用Configuration 的概念区隔成两种抽象的型态。J2ME平台被认为是最杰出的手机游戏平台,它为开发者、设备制造商、网络通信公司和消费者广泛接受。它有一些非常重要的特征对所有组织都有益。因为J2ME应用在不同设备上都是便携式的,他们常常可在网络上下载和执行。如果没有正确的防范,它则为用户和无线通信公司冒着无数个安全的风险。幸运的是,Java被设计成一种安全的语言。所有字节码应用在执行之前都要校验;JVM在执行过程中监督应用的安全性和存储违反问题。MIDP v2 运行时间包括一个完全特征化的、基于域的安全管理员,它在应用的数字签名者鉴别的基础上赋予应用API
15、级许可。 2.五子棋手机游戏的需求分析2.1 编写目的2.1.1 编写目的熟悉J2ME的应用和用JBUILDER开发手机教育类的游戏。以及认真完成本次毕业设计。2.1.2 定义J2ME:JAVA2 MICRO EDITION JDK:JAVA DEVELOPMENT KIT CDC:CONNECTED DEVICE CONFIGURATION CLDC:CONNECTED LIMITED DEVICE CONFIGURATION JVM:JAVA VIRTUAL MACHINE JRE:JAVA RUNNING ENVIRONMENT MIDP:MOBILE INFORMATION DEVIC
16、ES PROFILE 2.2 任务概述2.2.1 目标为了在电脑上摸拟出手机,再摸拟出手机中的五子棋游戏,真正把五子棋游戏在手机摸拟器上做出来。2.2.2 条件与限制手机使用者要求基于J2ME手机游戏简短,易操作,能够清晰的显示在手机屏幕上。2.3 功能需求说到功能需求,首先要确定的是,这是用J2ME开发手机游戏五子棋,按照五子棋的规则,首先要确定,在游戏中,哪一步是玩家下的,哪一步是AI下的。在何种情况之下,算玩家的输与赢。以及在赢了之后自动反回开始的界面,设定好开始,重来,退出等键,以满足玩家不同的需要。2.4 性能需求数据精确性 指令发下去能达到指定的位置 时间特性要求 指令发出以后反应
17、的时间在一定规定的时间里,指令发出后多久才反映过去2.5 环境需求Window xp jbuilder 2006 WTK2.1 JDK1.52.6 本程序需要解决的相关技术问题游戏程序是一项精度要求很高的程序系统,因为其代码利用率很高。一个实时运行的最终作品,每秒都会运行成千上万行程序,绘图事件、键盘事件都会以极高的频率在后台等待响应,若有丝毫的差别都将很容易导致程序在运行不久后可能出现严重错误,甚至死循环。因此,其逻辑设计应当相当严谨,需将所有可能发生的事件及意外情况考虑在设计中。3. 五子棋手机游戏的概要设计 3.1 开发环境操作环境:Microsoft Windows XP程序语言:JA
18、VA开发软件:JBUILDER 2006, WIRESS TOOL KIT2.1, JAVA DEVELOPMENT KIT 1.5 在本作品的开发环境当中,整合了JBUILDER 2006,WTK 2.1,JDK1.5三种软件,其安装配置过程较为简单,所以在此也不做多述。3.2 JAVA语言的特点3.2.1 平台无关性 Java引进虚拟机原理,并运行于虚拟机,实现不同平台之间的Java接口。使用Java编写的程序能在世界范围内共享。Java的数据类型与机器无关。 3.2.2 安全性 Java的编程类似C+,但舍弃了C+的指针对存储器地址的直接操作,程序运行时,内存由操作系统分配,这样可以避免
19、病毒通过指针入侵系统。它提供了安全管理器,防止程序的非法访问。 3.2.3 面向对象 Java吸收了C+面向对象的概念,将数据封装于类中,实现了程序的简洁性和便于维护性,使程序代码可以只需一次编译就可反复利用。 3.2.4 分布式 Java建立在TCP/IP网络平台上,提供了用HTTP和FTP协议传送和接收信息的库函数,使用其相关技术可以十分方便的构建分布式应用系统。 3.2.5 健壮性 Java致力与检查程序在编译和运行时的错误,并自动回收内存,减少了内存出错的可能性。Java取消了C语言的结构、指针、#define语句、多重继承、goto 语句、操作符、重载等不易被掌握的特性,提供垃圾收集
20、器自动回收不用的内存空间。3.3 关于JBUILDER JBUILDER是遵循SUN公司J2EE标准的可视化集成开发工具。JBUILDER是一种处于市场领先地位的跨平台环境,主要用于构建具有行业实力的企业的JAVA应用程序。JBUILDER继续了BORLAND公司开发工具系列的优秀特性,这使得用过DELPHI,CBUILDER的程序员很容易的过渡到JBUILDER的开发环境当中。3.4 关于Wireless Tool KitWTK(Wireless Tool Kit)是Sun公司针对J2ME推出的用于手机和Palm等移动设备的开发包,是除手机厂商的专用开发包外唯一的手机模拟器开发包。它通用性高
21、,开发出的应用程序可保证能运行在大部分设备上,而不像专用厂商具有一定的不兼容性。虽然它没有强大的功能和完善的调试手段,但它提供运行模拟器的最基本组件,是其他IDE需集成采用的必备元素。当然,你可以从手机厂商下载相关的API及模拟器来进行开发。同样,WTK也是个免费软件,可以在Sun上得到下载。3.5 关于 JAVA DEVELOPMENT KIT 1.5 JDK是JAVA开发工具包的简称,它标志着JAVA技术的发展和成熟。SUN公司将JDK1.2后的版本通称为JAVA2。JDK是开发JAVA程序的基础。 3.6 关于J2ME3.6.1 什么是J2ME 据J2ME应用程序调用的API,J2ME应
22、用程序分为标准应用程序和不易移植的应用程序两种。 术语: CDC:连接设备配置 CLDC:连接限制设备配置 JRE:Java运行环境 MIDP:Mobile Information Device Profile规范 OTA:Over The Air 非OTA:数据线、蓝牙(Bluetooth)、红外线(IrDA)、多媒体信息服务(MMS)、Email附件 3.6.2 J2ME智能客户端 J2ME平台被认为是最杰出的手机游戏平台,它为开发者、设备制造商、网络通信公司和消费者广泛接受。它有一些非常重要的特征对所有组织都有益。 J2ME 使用配置和简表定制 Java 运行时环境 (JRE)。作为一个
23、完整的 JRE,J2ME 由配置和简表组成,配置决定了使用的 JVM,而简表通过添加特定于域的类来定义应用程序。 移动通信的时代即将来临,通信相关待业变得前景可期,而除了移动通信的主要通信工具手机,其功能越来越强大之外,有更多的厂商相继投入移动通信设备的生产与开发,其平台和操作系统的复杂度比目前混乱的PDA有过之而不及,除了Symbian 针对手机推出操作系统 Symbian OS(过去称做EPOC,)操作系统之外,微软也针对手机推出操作系统 Smartphone 2002 (Stinger),但是日前市面上的手机仍以使用厂商自行开发的操作系统者居多。 利用Java撰写手机上的程序当然有其缺点
24、,最广为人知的可能就是执行效率的问题,Java在执行速度这个议题上一直让人诟病。不过笔者认为,随着技术的发达,将会有更快更省电的嵌入系统专用CPU出现,Java One中也传出将针对J2ME开发专用芯片,让Java在 手机上的程序可以跑得更快,因此效率上的总是其实是可以忽略的。更何况,当Sun在设计J2ME的时候,也用了很多方式企图加快Java 在手机上的执行速度。4. 五子棋手机游戏的详细设计与实现4.1 本程序需要解决的相关技术问题五子棋各种类的定义,五子棋手机AI的算法,程序各个过程的实现以及其它。4.2 程序流程 首先,进入选择模拟游戏界面,这个时候,可以进行几个选择:一为注册,这样方
25、便留下你的游戏记录。 二为直接开始游戏。 三为选择难度,这样选择难度,让玩家可以选择适合自己的难度,这样更方便手机游戏玩家。4.3 游戏API概述javax.microedition.lcdui.game包只有5个类:GameCanvas, Layer, Sprite, TiledLayer和LayerManager. 这5个类提供了开发各种游戏应用的平台。Layer是Sprite和TiledLayer的父类。这个类封装了游戏中可视化元素的行为。可视化元素可以是小精灵(sprite),代表一个可以在屏幕上来回移动的独立图形(或组成动画的一组图形),或是一个背景层:通过很少的图片,就可以生成庞大
26、游戏中的背景。我们可以用Layer来布置图形和进行可视化操作。Layer的子类通过重写paint(Graphics g)方法将元素绘制到屏幕上。LayerManager类可以控制各层的绘制及绘制顺序,因此我们可以更方便地管理游中的可视化元素(包括小精灵和背景层)。GameCanvas类扩展了上两节我们讲过的Canvas类(画布),提供一个在屏幕后端运行(off-screen)的缓冲区,所有绘制操作都先在这个缓冲区上进行,然后再显示到屏幕。它还提供了得到用户按键信息的快捷方法。4.3.1游戏API类库概述4.3.2 提供低级绘制的CANVAS类GameCanvas类扩展了上两节我们讲过的Canv
27、as类(画布),提供一个在屏幕后端运行(off-screen)的缓冲区,所有绘制操作都先在这个缓冲区上进行,然后再显示到屏幕。它还提供了得到用户按键信息的快捷方法。继承了Displayable类的Canvas类为需要图形元素精确定位和控制以及需要获得低级输入事件的应用设计。Canvas提供了键盘事件、指点杆事件(如果设备支持),并定义了允许将键盘按键映射为游戏控制键的函数。同时Canvas类可与高级Screen类交互,程序可在需要时在Canvas中掺入高级类的组件。4.3.3 GRAPHICS类Graphics类提供了简单的2D绘图功能。它具有24位深度色彩的绘制能力,以三原色分别各占一个字节
28、表示其颜色。程序只能在paint()函数中使用Graphics绘制,GameCanvas可调用getGraphics()函数直接绘制在缓冲区上,可以在任何时间请求传输到前台。其对象会被传给Canvas的paint()函数,以便最终显示。4.3.4 PNG格式 PNG(Portable Network Graphics)格式是MIDlet唯一支持的图象格式,PNG具体格式由PNG Specification,Version 1.0定义的。PNG格式提供透明背景的图象,这对绘制游戏画面和被操纵主角极有帮助。坦克之间或与障碍物碰撞时就不会因为背景有特定的颜色,显示出的效果像贴上的图片而缺乏真实感,物
29、体之间轻微重叠时最上层图片也不会覆盖超过其有效象素外的部分。 PNG格式图片中包含许多定义其图片特性的冗余部分(Chunks)。这些代码包含在每一个单独的png格式图象中,然而如果将多个png图象合并在一张幅面稍大一些的整图中,多个chunks就可以得到精简,图片的大小可以得到控制。使用Image类中的createImage函数可从整图中分割出所需要的元素。在Game包中的TiledLayer和Sprite类都整合了这样的功能。本程序中的地图元素都集成在一张tile.png图片中,实现了方便的管理和程序体积的精简。4.4 棋子的控制和敌方(手机)的智能运行GameCanvas提供getKeyS
30、tates函数可获取当前键盘上的信息。将以位的形式返回键盘上所有键的按与释放的状态,当bit为1时,键就是被按下的状态,为0时则为释放状态。只需要此一个函数的返回值就可以返回所有键的状态。游戏设置及记分系统的一切数据记录,在RMS永久存储系统中实现。由于存在着多种记录,即为RMS的高级应用,因此由上面所提及的流技术来实现。4.5 有关绘图的一些技术 在没有MIDP2.0前,进行游戏绘图一般需要手动编程使用双缓冲。需要在paint()方法内所想要画的图形画在一张预先准备好的背景,等所有绘图操作都完成后再将背景的数据拷贝到实际的屏幕上。Image类提供了一个建立背景的静态方法createImage
31、(int width, int height),再利用getGraphics()方法取得属于这个背景的Graphics对象,所进行的绘图操作都会作用在背景上,等到全部的绘图操作完成后,再调用drawImage()方法将背景的数据复制到实际显示的屏幕上。 这样的技术在绘制动画时特别有用。绘制动画时经常需要不断地更新画面,而更新画面的操作就是先将屏幕以fillRect()的方式清除,再将下一张图片画在屏幕上,然而反复的清除及重绘会造成屏幕的闪烁现象(flicker),因此使用双重缓冲的好处就是在背景进行这个清除及重绘的操作,再将完成的绘图拷贝到屏幕上,由于用户看不到清除的操作,因此就不会出现闪烁的
32、现象了。不过在某些MIDP的实现上已经加上了双重缓冲的支持,因此在处理前应先利用Canvas类的isDoubleBuffer()方法来判断。4.6 模拟器的相关调试IDE整合的Wireless Tool Kit提供了许多在运行时监视运行状态的工具。 包括内存状况的检测(手机上的内存空间十分有限,必须时刻关注机载内存是否大于程序所能使用到的最大可能的内存空间),网络状况的检测,运行函数的跟踪等。如图3-4,是内存跟踪测试随时间变化的调试器。其中,允许强制垃圾回收(Garbage Collection)。由于Java语言中,不像许多其他的如C+语言,不需要指定回收函数中特定不使用的资源,资源回收机
33、制将自动清空无效变量占用的空间。在程序运行中也可以调用System类的gc()函数手动收回废弃的内存。5. 系统设计与编码实现 详细的手机程序,代码太多,所以附于毕业论文之后,在此就不做过多的叙述。6. 总结6.1 本程序的总结和展望几乎每一个计算机程序都会有这样那样的不足,尤其是未经过精心维护的非商业软件。即使是作为操作系统的各种版本的Windows也时常会发生许多类型的错误和漏洞。特别是游戏设计涉及到了计算机算法、计算机图形学以及美工等多方面的知识,更何况对于初涉手机游戏领域学生。尤其在开始初期,感觉逻辑复杂,难以控制,不能有一个总体上的把握。在老师的指导下,经过一个月的细心编写调试,本设
34、计实现了以J2me为平台基于MIDP2.0的小游戏五子棋的尝试性开发。至今存在的一些bug及未完善的功能。6.2 经验与感想Java的上手比较困难,需要配置的环境和掌握的背景比较多,这个毕业设计算是在学期间所作过的最完整最大的程序,所以这是对自己的一次挑战。因为之前没有做过类似的程序,所以这次游戏程序做得相对来说相当简单,功能极少。之前熟悉过J2me开发的一些基本知识,但是当要真正实现游戏算法的时候,这远远是不够的。加上在手机中将Java语言引入,作为一种通用的开发标准,并将向市场推广普及仅仅短短几年,J2ME仍是一种新型的技术,中文资料除台湾出版过相关书籍外,国内相关介绍资源很有限,国内J2
35、ME开发商也屈指可数,名声较响的Digital-Red公司也仅成立于1999年。英文原版介绍的确比市面上所有的书籍都更为详细和准确。设计过程中,用自己蹩脚的英文多次浏览Sun公司网站,特别是MIDP2.0英文文档,参考了好多代码示例及函数,确实是一件很辛苦的事情。为了以后查找的方便,摘抄了部分重要的内容翻译在笔记本上,形成了25000多字符的英文翻译。同时也多次浏览CSDN网站还有好多Java爱好者的Blog文档、中国手机网等网站,参考了好多算法及代码,也收集了一些图片资源。另外在在CSDN论坛上也和一些热心的Java爱好者共同学习,得益不少。致谢:本文是在XX老师精心指导和大力支持下完成的。
36、XX老师以其严谨求实的治学态度、高度的敬业精神、兢兢业业、孜孜以求的工作作风和大胆创新的进取精神对我产生重要影响。他渊博的知识、开阔的视野和敏锐的思维给了我深深的启迪。同时,在此次毕业设计过程中我也学到了许多了JAVA,JBUILDER方面的知识,动手水平有了很大的提高。 感谢我的室友们,在毕业设计期间,当我遇到问题时,是你们无私的帮助了我,让我能够顺利的完成毕业设计与毕业论文。感谢我的爸爸妈妈,焉得谖草,言树之背,养育之恩,无以回报,你们永远健康快乐是我最大的心愿。 最后,再次对关心、帮助我的老师和同学表示衷心地感谢。 参考文献:J2ME手机程序JBUILDER开发基础工业机械出版社。J2M
37、E开发精解电子工业出版社。JAVA2教程清华大学出版社。SYMBIAN OS J2ME编程指南 人民邮电出版社。精通JBUILDER 飞思科技产品研发中心J2ME手机游戏编程入门人民邮电出版社。MIDP 2.0 Games: a Step-by-Step Turorial with Code SamplesCarol Hamer。MID PAPIs for Wireless ApplicationsSun Micosystems.。附录:import java.io.IOException;import javax.microedition.lcdui.*;import javax.micro
38、edition.midlet.MIDlet;public class FiveMIDlet extends MIDlet implements CommandListener private Display display; private Form frmFive; private Image imgLogo; private Command cmdExit; private Command cmdGo; private Command cmdOptions; private Command cmdReg; private FiveCanvas Five_Canvas; private Op
39、tions options; private Reg reg; private static String strAbout = ; public FiveMIDlet() display = Display.getDisplay(this); frmFive = new Form(null); try imgLogo = Image.createImage(/Five.png); catch(IOException _ex) imgLogo = Image.createImage(1, 1); frmFive.append(imgLogo); frmFive.append(GoBang Ga
40、me); frmFive.append(仅作为学习范例n); cmdExit = new Command(退出, 7, 1); cmdGo = new Command(开局, 4, 2); cmdOptions = new Command(设置, 1, 3); cmdReg = new Command(注册, 1, 3); frmFive.addCommand(cmdGo); frmFive.addCommand(cmdOptions); frmFive.addCommand(cmdReg); frmFive.addCommand(cmdExit); frmFive.setCommandLis
41、tener(this); reg = new Reg(this); refreshRegInfo(); Five_Canvas = new FiveCanvas(this, reg); options = new Options(this); public void startApp() display.setCurrent(frmFive); public void pauseApp() public void destroyApp(boolean flag1) public void commandAction(Command c, Displayable s) if(c = cmdExi
42、t) destroyApp(false); notifyDestroyed(); else if(c = cmdGo) display.setCurrent(Five_Canvas); Five_Canvas.setOptions(options.borderSize(), puterFirst(), options.degree(); Five_Canvas.newStage(); else if(c = cmdOptions) display.setCurrent(options.frmOptions(); else if(c = cmdReg) reg.register(display); refreshRegInfo(); public void backHome() refreshRegInfo(); display.setCurrent(frmFive); private void refreshRegInfo() String sReg = Rigsteredn; frmFive.addCommand(cmdGo); / frmFive.removeCommand(cmdReg); static strAbout = ;