基于J2ME的手机五子棋游戏的设计.doc
盐城工学院本科生毕业设计说明书(2010)毕业设计说明书基于J2ME的手机五子棋游戏的设计与实现专业计算机科学与技术学生姓名杨婷婷班级B计算机064学号指导教师王 榕完成日期2010年5月25日基于J2ME的手机五子棋游戏的设计与实现摘 要:J2ME(Java 2 Micro Edition)是近年来随着各种不同设备,尤其是移动通信设备的飞速发展而诞生的一项开发技术。它因其“write once,run anywhere”的Java特性而提高了开发的效率。随着手机性能的不断提高,手机休闲娱乐应用将成为PC休闲娱乐应用之后又一重要业务增长点。棋类游戏规则单一,比较适合在手机等便携终端推广。 由于具有跨平台、易于移植、占用空间小的优势,J2ME成为移动应用开发平台的主流,并提供了很多用以支持移动应用软件的开发的API。现将该技术用于这次的手机游戏开发,可以实现游戏的快速开发,不但便于查看游戏运行过程中内存的占用量和程序的每一部分代码消耗了多少处理器时间,而且可以不断地优化代码,使代码具有高度的复用性、可扩展性、可维护性。游戏的开发以J2ME为平台,利用Java技术,结合J2ME的MIDP技术,并对于程序设计思想,重要类、方法等展开讨论。在对弈部分,分析设计走棋算法,选择合适的方式组织成代码,实现基本的人工智能。过程中使用了J2ME中的CLDC/MIDP软件体系,主要运用了MID Profile的特定类的支持,来完成游戏的开发。关键词:J2ME;CLDC;MIDPDesign and Implementation of Gobang Cell-phone Game Based on J2MEAbstract: J2ME is a kind of fast developing technology implemented on various devices especially mobile communication equipments. It improves the efficiency of the development process because of its "write once, run anywhere" nature. The development trend of the entertainment market based on the cell phone is very obvious because the handset performance enhances unceasingly. The entertainment market based on the cell phone will to be the new important business growth point follow the PC entertainment market. As the rules of a single chess game, it is more suitable for mobile phones and other portable terminal extension. J2ME has been the preferred platform for development because of its platform independent and compatibility, and provides a lot of APIs to support the development of mobile application software. The technology for mobile game development, can achieve the rapid development of the game. It is not only easy to observe the memory consumption and processor consumed time during the operation of the game, but also can optimize the code, so that the code has a high degree of reusability, scalability, maintainability. The game has designed by J2ME, the Java technology and the MIDP technology. I studied the procedure thought, the important class and the method. In the playing chess part, I have analyzed the algorithm, choosed the appropriate way to organize the code and realized the basic artificial intelligence. On the other hand, I learned software system of CLDC/MIDP and the specific class of the MID Profile to complete the game development. Key words: J2ME;CLDC;MIDP目 录1 概述11.1 课题研究背景11.2 课题研究意义22 开发技术背景22.1 JAVA语言概述22.2 J2ME简介32.3 J2ME的体系结构42.4 移动信息设备简表72.5 开发平台83 系统分析及总体设计93.1 可行性分析93.2 需求分析93.3 系统概要设计104 系统详细设计134.1 界面设计134.2 走棋算法274.3 胜负判断295 系统测试305.1 测试方案305.2 测试结果306 结 束 语35参考文献36致 谢37附 录38附录1 程序清单38附录1.1 StartGame.java程序清单38附录1.2 Chesses.java程序清单39附录1.3 Chessboard.java程序清单44附录1.4 其它程序清单49基于J2ME的手机五子棋游戏的设计与实现1 概述 1.1 课题研究背景手机游戏的实现方式主要包括嵌入式游戏、浏览器游戏、短消息服务游戏、J2ME和其它的解释语言。Java 2 Micro Edition是一种针对移动电话和PDA这样的小型设备的Java语言。J2ME与台式机中的Java相比还是有一定的限制,但是它已经极大的提高了移动电话支持游戏的能力。并且具备一定的优势:庞大的潜在用户群、便携性、开发门槛较低。手机是现代生活方式的产物,如同因特网的普及导致网络游戏的高速发展一样,手机的普及,对满足不同功能的手机软件的需求也就越来越迫切,这就需要比较好的手机软件开发平台,此时具有平台无关性优点的J2ME开发平台也就应运而生。J2ME是Sun公司为消费电子和嵌入式设备软件的需要而开发的应用程序接口和技术规范,J2ME提供了由多家大型的移动设备厂商一起设计和提出的工业标准简表(简称MIDP)的开发接口,由于这个MIDP简表不是某个特定的商家所拥有的,所以具有一定的通用性,因此由J2ME开发的软件对多家大型移动设备厂商生产的支持MIDP简表的手机都适用,比如Nokia、Motorola和三星等多家手机厂商推出的多款支持J2ME的手机。与传统的主流的PC游戏相比,手机游戏的价值在于打发一些无聊的时间,作为一个移动的娱乐终端,手机游戏施展身手的机会永远可能是在地铁站、公交车或者是洗手间这些地方,也许在庞大的游戏行业里,手机游戏将永远扮演着一个边缘者的角色,因为谁也不能指望一个人在家的时候用手机玩游戏或者看电影。但是手机游戏的市场是巨大的,即便是只有十分之一的用户来购买游戏,那也将是不可忽视的商业机遇。随着移动开发技术的不断升级和终端设备成本的下降,近年来,手机在普通消费人群中得到了极大的普及。凭借其便于携带、沟通迅捷、功能多样、私密性强等独有优势,手机已经成为普通民众不可替代的随身工具。其益智、趣味和休闲的特点迎合了消费者的娱乐需要,手机游戏的开发推广已经成为手机生产商和运营商重要的业务增长点,游戏软件产业价值不断提升。手机游戏是手机的一种高附加值操作软件,游戏编程是手机软件编程的重要组成,同时也持续推动手机软件技术升级进步。手机游戏按手机平台分类,主要有J2ME、Brew、UniJa等。其中J2ME手机开发平台使用最为广泛。作为SUN公司针对微型嵌入式消费电子产品开发的编程系统,J2ME技术是当前手机软件开发的主流平台,各大手机生产厂商目前的主流产品绝大都使用J2ME技术。基于J2ME技术开发手机软件可以实现手机功能的多样化与专业化,极大的满足了人们对手机要求更高的需求。1.2 课题研究意义本设计基于J2ME技术,开发一款五子棋游戏软件,可以供人们闲暇时间随时随地娱乐,提高棋艺。同时五子棋游戏程序的开发实现这个课题,正好提供给我这样一个研究的机会,通过对人工智能中博弈方面的研究,实现简单的人机对弈设计。 通过对该课题的研究与实践,首先,进一步熟悉面向对象语言,加深对J2ME层次结构的了解。通过NetBeans集成开发环境创建软件,最终形成一个具备基本功能的手机五子棋游戏,可应用于便携式设备,适合于棋类爱好者。其次,了解手机游戏开发的特点和现状。并且对人工智能中比较容易实现的人机博弈进行学习,更深刻地理解人工智能这门边缘学科的实用性。2 开发技术背景2.1 JAVA语言概述Java的出现是源于对独立于平台语言的需要,希望这种编程语言能编写出嵌入各种家用电器等设备的芯片上、且易于维护的程序。人们发现当时的编程语言都有一个共同的缺点,就是针对CPU芯片进行编译。这样,一旦电器设备更换了芯片就不能保证程序正确运行。九零年Sun公司成立了开发小组,开始致力于开发一种可移植的、跨平台的编程语言,该语言能生成正确运行于各种操作系统、各种芯片上的代码。Java的出现标志着真正的分布式系统的到来。Java是一种跨平台的、面向对象的、分布式的、解释的、安全的、结构的、可移植的、性能很优异的多线程的动态语言。Java的特点: 平台无关性:平台无关性是指Java能运行于不同的平台。Java引进虚拟机原理,并运行于虚拟机,实现不同平台的Java接口之间。使用Java编写的程序能在世界范围内共享。Java的数据类型与机器无关,Java虚拟机(Java Virtual Machine)是建立在硬件和操作系统之上,实现Java二进制代码的解释执行功能,提供不同平台的接口的。 安全性:Java的编程类似C+,学习过C+的读者将很快掌握Java的精髓。Java舍弃了C+的指针对存储器地址的直接操作,程序运行时,内存由操作系统分配,这样可以避免病毒通过指针侵入系统。Java对程序提供了安全管理器,防止程序的非法访问。面向对象:Java吸取了C+面向对象的概念,将数据封装于类中,利用类的优点,实现了程序的简洁性和便于维护性。类的封装性、继承性等有关对象的特性,使程序代码只需一次编译,然后通过上述特性反复利用。程序员只需把主要精力用在类和接口的设计和应用上。Java提供了众多的一般对象的类,通过继承即可使用父类的方法。在Java中,类的继承关系是单一的非多重的,一个子类只有一个父类,子类的父类又有一个父类。Java提供的Object类及其子类的继承关系如同一棵倒立的树形,根类为Object类,Object类功能强大,经常会使用到它及其它派生的子类。分布式:Java建立在扩展TCP/IP网络平台上。库函数提供了用HTTP和FTP协议传送和接受信息的方法。这使得程序员使用网络上的文件和使用本机文件一样容易。 健壮性:Java致力于检查程序在编译和运行时的错误。类型检查帮助检查出许多开发早期出现的错误。Java自己操纵内存减少了内存出错的可能性。Java还实现了真数组,避免了覆盖数据的可能,这些功能特征大大提高了开发Java应用程序的周期。并且Java还提供了Null指针检测、数组边界检测、异常出口、Byte code校验等功能。2.2 J2ME简介J2ME是SUN公司针对嵌入式、消费类电子产品推出的开发平台,与J2SE和J2EE共同组成Java技术的三个重要的分支。J2ME实际上是一系列规范的集合,由JCP组织制定相关的Java Specification Request(JSR)并发布,各个厂商会按照规范在自己的产品上进行实现,但是必须要通过TCK测试,这样确保兼容性。J2ME是JAVA的三大分支之一,专门用于开发基于消费性电子产品的应用。J2ME支持个人手持移动设备,如手机、PDA等。手机用户可以通过支持JAVA功能的终端,使用多种全新图形化、动态化和个性化的移动增值服务。J2ME提高了移动电话支持游戏的能力,比SMS或WAP更容易控制和交互的界面,并且可以通过无线网络连接到远程的服务器。随着JAVA手机的普及,J2ME成为目前最流行的移动游戏开发环境。目前手机访问Internet只能访问WML网页,而不是主流的HTML网页,也不能显示复杂的图形格式,能提供的功能很有限,并且,因为现有的解决方案不够智能化,又不能访问本地存储区,如果进行在线交易会增加服务器负荷,使服务器的反应速度变慢,使无线Internet的应用受到了很大限制。J2ME的出现则使上述问题迎刃而解。因为J2ME是基于Java语言的,所以它天生就具有以下优点:A.动态内容传输新的应用、服务和内容可以通过不同类型的网络动态下载。B.安全类文件校验、明确定义的应用程序编程接口和安全组件确保了第三方应用程序的行为是可靠的,不会对设备或者网络造成损害。C.交叉平台的兼容性标准化语言组件和库意味着由于支持配置和描述所带来的约束使应用和内容可以在不同设备之间灵活地传输。D.离线获取不用激活网络连接,应用就可以被使用。这种特点降低了传输费用,减轻了可能的网络故障带来的影响。E.一种功能强大的现代面向对象的编程语言Java相对于当前用于无线软件开发的编程语言和工具来说具有更加完善的抽象机制和更高级的程序构造,这使得应用开发更加有效。这些特性使第三方软件开发商可以很容易地介入应用程序的开发,并且可以很方便地将应用程序安装到手机上,开发周期也大大缩短,而且还能支持应用程序的动态下载和升级。J2ME应用程序除了能够更好地完善手机上已有的应用外,还进一步增加了字典、 图书、游戏、定时提醒等新的应用,并能访问电子邮件、即时消息、股票和电子地图等信息。J2ME程序设计的几个原则:第一,使用面向对象编程。虽然使用面向过程编程可以减小文件的尺寸,但是为了以后维护的方便和利于扩展,还是要使用面向对象编程。第二,使用MVC模式。将模型、界面和控制分离。第三,自动存储用户设定使用RMS来存储用户的信息,这样不仅可以减少用户的输入,而且对用户友好。很多程序做了自动登陆等。第四,一些系统设置允许用户关闭。如背景音乐、背景灯显示等。第五,将低级用户界面的绘制动作放在一个独立的线程里面去。第六,在需要大量时间才能完成的工作时,给用户一个等待界面。2.3 J2ME的体系结构Java 2技术是一系列产品的集合,Java 2技术体系结构如图2-1所示。图2-1 Java 2技术体系结构 其中,J2ME为运行在嵌入式消费类电子产品的设备,如移动电话、PDA、游戏终端之上的应用程序提供了一个健壮的、灵活的环境。与J2SE、J2EE和JavaCard一样,J2ME同样包含了一个小型的虚拟机和一系列的Java API。除此之外,J2ME还提供了灵活的图形用户界面、健壮的安全模型、广泛的联网协议支持。J2ME是一种通过许多部件和规范的技术,这众多的部件和规范帮助J2ME来满足这众多的消费产品的不同的需要。和所有的爪哇程式语言技术一样,在它的核心属于一种虚拟机。就像使用所有Java技术一样,J2ME的核心也在一种虚拟机中。最初,用于J2ME应用程序虚拟机的被称作Kilobyte virtual machine或简称KVM。就像它名称的含义,KVM比较小,通常只有128K或更少。这比起通常了解和使用的Java 2标准版Java虚拟机(JVM)的32MB来说就小得多了。为了使J2ME程序广泛适用于各类嵌入式平台,J2ME采用了模块化的结构,底层是宿主机的操作系统,内部则分为三层:Java Virtual Machine(虚拟机层);Configuration(配置层);Profile (简表层)。J2ME中有两类虚拟机:CVM(C虚拟机)与KVM(K虚拟机),CVM的功能比KVM更为强大。其体系结构如图2-2所示。Optional PackagesProfilesConfigurationHost Operating SysteJava Virtual Machines图2-2 体系结构框图Java 虚拟机(JVM)层:这一层是针对设备本地操作系统定制的Java虚拟机的实现,支持特定的J2ME配置,就像使用所有Java技术一样,J2ME的核心也在一种虚拟机中。配置(Configuration)层:面对的是大量各种不同的小型嵌入式设备,它们在外观和功能上均各不相同。J2ME将这些设备进行分类,将一些共性提取出来形成适合于某个范畴中设备可用的规范,称为“配置”。读者也可以将配置理解成为对硬件的描述,所以通过定义配置的方法就能够清楚地描述硬件功能。 对大量软硬件特性不同的嵌入式设备,根据其外观和性能特点进行分类,提取其中共性形成的一套规范称之为配置。配置在J2ME的体系结构中起着承上启下的作用,定义了针对存储空间、电源配置、网络连接等硬件功能和特性包括:规定了所支持的Java编程语言特性;规定了所支持的Java虚拟机特性;规定了所支持的基本Java类库及其API函数。 到目前为止,通过Java规范定义的只有两种配置:连接设备配置(CDC)和连接受限设备配置(CLDC)。CLDC和CDC的大部分功能都来源于J2SE。因为CDC与CLDC针对设备的CPU处理能力和内存大小不同,所以它们使用的虚拟机和核心类库也不相同,CDC的核心类库比CLDC的要大,提供的功能也更强。CLDC、CDC和J2SE之间的关系如图2-3所示。图2-3 CLDC、CDC和J2SE的关系图 连接设备配置(Connected Device Configuration,CDC):为处理能力较强、内存空间更大、联网能力更出色且电源稳定的设备设计。CDC的目标设备包括主要包括电视机顶盒、车载娱乐系统、高端PDA等,它们通常具备32位或64位的CPU,2MB以上可以用于Java平台实现和运行相关应用程序的内存空间。连接受限设备配置(Connected Limited Device Configuration,CLDC):为具有间断性联网能力、较慢的处理器、有限内存、没有稳定的电源供应的设备设计。CLDC的目标设备主要包括移动电话,双向呼叫器和入门级的PDA等,它们通常具有16位或32位的CPU,配置128KB512KB的内存可用于Java平台实现和运行相关应用程序。CLCD主要面向J2ME开发平台,由两个部分组成:为应用程序提供的最小Java语言类库以及适合在资源受限设备上运行的Java虚拟机(KVM)。简表(Profiles)层:简表层定义了特定系列设备上可用的应用程序编程接口(API)的最小集。简表在一个特定的配置上面实现。应用程序是针对特定的简表编写的,因此可以移植到支持该简表的任何设备上。另外,一个设备可以同时支持多个简表。用户和开发人员看到最多的就是这一层。Java虚拟机是J2ME技术的核心,但是配置和简表提供特殊环境的类应用程序接口。配置是用于一组通用设备的最小的Java平台,而简表则为具体的设备家族或特别的应用程序提供更具体的功能。每个配置和简表处理一般或具体的消费产品。配置和简表规范是由多种多样的设备生产商和用户共同开发并建立的。简化地举例概括说明,假设如果想为小型信息家电编写Java应用程序的话,需要两个前提:一个配置和至少一个简表。现在,一般是配置捆绑了虚拟机和一套针对各自的平台所能够用的横向分组设备的Java类库;另外至少需要一个简表来为平台提供附加的Java类,这个简表通常会为各自的相应设备提供用户界面、输入和数据库类。有了这两个前提,就有了可以使用Java为不同的设备编写应用程序的基本的J2ME环境。2.4 移动信息设备简表 移动信息设备简表(MIDP)为移动电话和入门级PDA设计,为移动应用程序提供了所需的全部核心功能,包括应用程序模型、用户界面、持久性数据存储、联网能力及应用程序管理功能。目前应用非常广泛的MIDlet就是在MIDP中定义的。CLDC与MIDP组成了完备的Java运行环境大大提升了手持移动智能设备的功能,并且最小化了设备内存和电源消耗。MIDP框架如图2-4所示。图2-4 MIDP框架图MIDP提供核心应用程序功能,包括用户界面、网络连接、本地数据存储和应用程序生命周期管理。MIDlet生命周期流程图如图2-5所示。MIDP中含有下列API包:A. javax.microedition.lcdui: 用户界面(UI)API,它为MIDP应用提供了一整套实现用户界面的功能特性。B. javax.microediton.rms: 移动信息设备描述提供了一种让MIDlets持久性储存并在以后可以取回数据的机制。C. javax.microedition.midlet: 这个MIDlet包明确定义了MIDP应用,也定义了和应用环境之间的交互。D. javax.microedition.io: 移动信息设备还描述包括基于有限连接设备配置GenericConnection框架的网络支持。图2-5 MIDlet生命周期流程图2.5 开发平台随着手机软件开发的发展,市场上同时并存许多手机游戏开发平台。目前的手机访问Internet只能通过WAP(Wireless Application Protocol)方式,而且只能访问WML(Wireless Markup Language)网页,而不是主流的HTML网页,也不能显示复杂的图形格式。此外,WAP采用的Brower/Serve方式访问Internet,能提供的功能很有限,并且因为现有的WAP解决方案不够智能化,又不能访问本地存储区,如果进行在线交易会增加服务器负荷,使服务器的反应速度变慢,使无线Internet的应用受到了很大限制。J2ME的出现恰好有效的解决了以上问题。其Java语言的特性,使其具有以下优点:a.动态内容传输。新的应用、服务和内容可以通过不同类型的网络动态下载。b.安全。类文件校验、明确定义的应用程序编程接口和安全组件确保了第二方应用程序的行为是可靠的,不会对设备或者网络造成损害。c.交叉平台的兼容性。标准化语言组件和库意味着由于支持J2ME配置和描述所带来的约束使应用和内容可以在不同设备之间灵活地传输。d.离线获取。不用激活网络连接,应用就可以被使用。这种特点降低了传输费用,减轻了可能的网络故障带来的影响。e.现代的面向对象思想。Java相对当前用于无线软件开发的编程语言和工具来说具有更加完善的抽象机制和更高级的程序构造,这使得应用开发更加有效。f.巨大的开发者团队。这些特性使第二方软件开发商可以很容易地介入应用程序的开发,并且可以很方便地将应用程序安装到手机上,开发周期大大缩短,而且还能支持应用程序的动态下载和升级。J2ME定义和标准化了一种可移植的无线应用开发环境,主要是针对第二方应用开发商,将设备软件开发向第二方开放,这个环境可以灵活地附加到设备制造商开发的已经存在的软件和硬件之上,并且不会对已经存在的系统软件造成影响。这种嵌入式思想也极大地推动了J2ME的发展壮大。本设计主要是在Netbeans IDE开发环境下进行开发、测试与调试。基于J2ME平台,它将Java语言的与平台无关的特性移植到小型电子设备上,允许移动无线设备之间共享应用程序。NetBeans是一套完全以Java撰写而成、并且开放原始码的开发工具。Java Studio Micro Edition大致上是把NetBeans IDE和J2ME Wireless Toolkit结合在一起的产品。可以方便J2ME应用程序的开发者更容易追踪问题与除错。四种模拟器种类,如表2-1所示。表2-1 模拟器版本模拟器名称 说 明DefaultColorPhone 普通彩屏电话 DefaultGrayPhone 普通灰屏电话 MediaControlSkin 有音频和视频控制的普通电话QwertyDevice 有Qwerty样式键盘的掌上设备3 系统分析及总体设计3.1 可行性分析3.1.1 技术可行性五子棋是传统的对弈游戏,历史悠久、规则单一。手机游戏的实现方式主要包括嵌入式游戏、浏览器游戏、短消息服务游戏、J2ME和其它的解释语言。Java 2 Micro Edition是一种针对移动电话和PDA这样的小型设备的Java语言,虽然它与台式机中的Java相比还是有一定的限制,但是已经极大的提高了移动电话支持游戏的能力。在NetBeans环境中编写并在模拟器中运行简单明了。3.1.2 操作可行性本游戏开发后可导入手机操作,供个人平常娱乐所用,完全使用手机键盘操作,操作简单,所以在这方面是完全可行的。3.2 需求分析3.2.1 系统的性能需求首先,手机游戏最大的问题在于每一款手机拥有自己的屏幕大小和特定的API及性能。游戏开发过程中,要考虑到游戏程序的设计要能合乎大多数手机的应用。J2ME提出的一系列标准使得使用J2ME开发的游戏可以在配备J2ME的任何厂家的移动设备上运行。软件最好操作简单容易。受手机屏幕大小和显示的影响。手机键盘的不方便,游戏需要设计得容易操作。其次,软件具有人工智能算法原理要简单,并且运行快速。对于人机游戏,不需要网络连接,游戏处理不会有太长的等待时间。游戏是需要快速反应的。手机处理器的频率直接要求我们需要使用简单实用的智能算法。另外,所制作的软件在结构上应具有很好的可扩展性,便于以后的功能扩展。3.2.2 系统的功能需求A.游戏内容此款游戏主题是五子棋对弈。无“禁手”的规则基本是人人皆知。相同颜色的棋子,五子一线为胜。B.游戏方式区别于一般的生活中的人与人的对弈,用在手机上为人机对弈,在手机屏幕上构造一个游戏棋盘,并且设计黑、白棋子。利用人工智能的相关知识实现对弈。C.游戏对象五子棋手机游戏是大众游戏,游戏者只要具备一般的操作知识就可以进入游戏。对玩游戏者并没有什么特殊要求。D.游戏目标此款手机游戏为棋类游戏,就是为了让人们闲暇时间休闲、锻炼棋艺,游戏设计尽可能地模拟现实生活中的场景。a) 游戏开始界面:玩家可使用“开始”软键进入游戏。 b) 棋子选择功能:玩家可选择走棋先后顺序,黑先白后。c) 棋盘界面:对弈界面,使用上、下、左、右键来移动落子点位,使用确定按钮来落子,相应条件下可实现悔棋、暂停、重新开始游戏功能。d) 胜负判断:涉及人工智能,用以判断人与机器的输赢状况,游戏无“禁手”,五子首先连成一线则为胜。3.3 系统概要设计3.3.1 模块划分在完成了需求分析后,需要对此游戏进行总体的规划,模块的划分,基本的流程设计。在总体规划期间相对要考虑到游戏的扩展性,因为在最初设计游戏的时候不可能面面俱到,而且随着技术的发展,也需要游戏具有很好的扩充性。此次系统设计的主要模块分为:欢迎模块、规则说明模块、对弈模块、胜负判断模块。各主要模块的功能描述如下:欢迎模块:这部分是游戏出现的第一个界面,主要是为了说明已经进入五子棋游戏系统。规则说明模块:此模块主要是游戏者的选择界面。提供的选择项有游戏说明,开始游戏和退出游戏。对弈模块:该部分主要是进行人机对弈的棋盘界面。该模块中包含悔棋、暂停游戏、放弃本局这些功能。胜负判断模块:这部分即是对每次棋局结果的判断,是人赢了或者是机器获胜。系统主要功能模块如图3-1所示。落子走棋实现悔棋暂停/恢复游戏放弃本局基于J2ME的手机五子棋游戏欢迎模块胜负判断模块规则说明模块对弈模块图3-1 系统功能模块图3.3.2 系统流程明确了主要模块功能后,就需要对此游戏软件基本流程有一个总体规划,本款手机游戏软件基本流程图如图3-2所示。游戏规则界面棋子类型选择选择黑子 玩家先行选择白子 机器先行棋盘对弈界面结果判断界面开始游戏退出游戏图3-2 系统基本流程图 3.3.3 系统用例图 游戏设计用例图如图3-3所示。<<extend>><<extend>><<extend>><<extend>>选择棋子人机对弈落子走棋悔棋暂停游戏放弃本局 玩家图3-3 系统用例图3.3.4 主要类的介绍 J2ME是面向对象的程序设计语言,类是其设计的核心。程序总体设计阶段首要任务就是设计好相应的类,只要类设计好了可以让程序一目了然。在这款游戏中,总共是分为了八个类,其实很多类都是相对类似的。首要的类是MIDlet类的子类Wuziqi,它是整个程序的框架,程序的运行必须从它开始。其次根据前面设计的功能模块的划分,相应的要设计各个子类,如游戏欢迎界面、游戏说明界面、棋盘设计界面、棋子设计、对弈界面、人工智能的实现界面等,另外的J2ME技术主要就是在屏幕绘制的基础上利用命令监听实现各个功能。主要类的作用说明:a) Wuziqi1.java该java文件是设计MIDlet程序的基本框架,该生命周期继承了javax.microedition.midlet.MIdlet抽象类。程序从该类开始执行。b) StartGame.java该文件生成的类显示开始游戏入口以及游戏说明。c) Chessboard.java该文件生成的类用来创建棋盘对象,在画布上绘制棋盘,另外,获得棋盘上棋子信息。将手机上的软键转化为游戏键进行走棋控制。棋盘可进行悔棋、暂停、放弃游戏。d) Chesses.java该文件生成的类负责创建棋子对象,棋子对象可以获取本身的颜色外观。e) Point.java该文件生成的类用来创建棋盘的棋点对象。可以判断该点上是否有棋子、指定当前点上的棋子、获取当前点上的棋子、移动当前点上的棋子。 f) AI.java该文件类主要是实现走棋算法以及结局判断。4 系统详细设计4.1 界面设计该部分主要说明手机游戏画面显示,包括一开始项目的创建、画面的低级绘制、图像的获取、UI组件的显示及如何进行游戏按键处理。本程序的设计主要使用了MIDP所提供的javax.microedition.lcdui包中的类来实现手机的用户界面。各个类如表4-1所示。表4-1 javax.microedition.lcdui包类描 述接口Choice提供一个常规的接口来管理选中的项目CommandListener允许创建一个高级的UI命令消息的监听器UI系统以及工具类Display代表系统显示设备和输入设备的管理器Font获得字体对象和它们的尺寸Image提供一个类来保存图像对象(以PNG格式)AlertType提供一个帮助类来定义可以创建的Alert的类型Displayable提供一个可以显示对象的抽象基类高级UICommand抽象用户的交互动作Screen类Screen提供高级UI组件的基类Alert提供一个Screen来警告一些事情List提供一个Screen对象包括一列被选项Forms & ItemsChoiceGroup提供一个UI组件代表一列选项ImageItem提供一个图像ItemTicker提供一个Item在display上面显示一条滚动的文字低级UIGraphics提供二维图像工具Canvas提供一个创建低级UI图像的基类4.1.1 项目创建 首先是在NetBeans IDE环境中创建项目,如图4-1所示。然后设置项目名称,如图4-2所示。再选择相应的平台,如图4-3所示。图 4-1 新建项目图 4-2 设置项目名称和位置图4-3 选择平台4.1.2 手机游戏外观设计 首先,MIDlet应用程序的核心即为MIDlet类。MIDlet事件处理分为高级与低级事件处理,则可实现设备内的应用程序与用户之间的交互机制。该类是设计MIDlet程序的基本框架,生命周期继承了javax.microedition.midlet.MIdlet抽象类。在active状态调用destroyApp(boolean unconditional)或者pauseApp()方法可以使得MIDlet进入destroyed或者pause状态。所使用的方法阐述如表4-2所示。表4-2 javax.microedition.MIDlet类方 法描 述abstract void destroyApp(boolean unconditional)应用程序管理器在应用程序关闭前,调用这个方法,可以保存状态和释放资源等abstract void pauseApp()在用户暂停游戏时,应用程序管理器调用MIDlet的这个方法abstract void startApp()应用程序管理器调用MIDlet的这个方法,告诉用户想要再次开始游戏abstract void notifyDestroyed()如果游戏者决定退出游戏,调用这个方法来通知应用程序管理器abstract void notifyPaused()调用该方法来通知管理器游戏者已经暂停了游戏abstract void resumeRequest()调用该方法告诉应用程序管理器MIDlet需要重新开始应用程序管理器(AM)的作用是管理MIDlet。它是一个主控程序,控制着正在发生的事情。如背景知识中所介绍,MIDlet被创建后默认为暂停状