基于J2ME五子棋手机游戏开发.doc

基于J2ME五子棋手机游戏开发 摘要 基于J2ME 技术,设计并开发了一款五子棋手机游戏,程序实验取用Java语言,便于游戏软件的移植,采用手机模拟器进行模拟测试,便于检查游戏功能的实现。在构建了完善的游戏思维的基础上,划分功能模块,实现整套游戏的开发。整个程序完成的功能是一个人机对战的五子棋游戏,游戏的重点与难点在于计算机人工智能算法,总的来说就是根据棋型选择最优的点下子。

关键词 J2ME;
手机游戏;
人工智能 ABSTRACT Based on J2ME technology, we designed and developed a mobile game backgammon, procedures, experimental access to java language, to facilitate the transplant games, mobile simulator used to simulate the test, easy to check the function of the realization of the game. Construction of a perfect game in mind, based on division of function modules, to achieve complete game development. Complete the whole process is the function of a human-computer play against a backgammon game, the game is important and difficult computer AI algorithms, in general is to choose the best according to point type chess erupted.. KEY WORDS J2ME;
Games of Mobile;
Artificial Intelligence 3 目录 1. 前 言1 2.相关介绍2 2.1 J2ME简介2 2.2 Configuration和CLDC2 2.3 手机游戏特点3 3.棋类游戏的相关探讨4 3.1 逻辑层和表现层的分离4 3.2 自适应尺寸和可移植性4 4.五子棋游戏的架构5 4.1 事件驱动游戏5 4.2 游戏的类结构5 4.3 游戏的流程7 4.4 五子棋的人工智能8 4.4.1 五子棋的获胜组合8 4.4.2 设计获胜棋型9 5.游戏设计与实现9 5.1 MIDlet简介9 5.1.1 MIDlet生命周期10 5.1.3 FIRMIDlet类代码片断12 5.2 游戏介绍表单的实现12 5.3 游戏设置表单的实现13 5.3.1 Gauge与ChoiceGroup组件介绍13 5.3.2 Option类设计14 5.3.3 Option类代码片断15 5.4 棋子Dot类的实现16 5.5 对战逻辑FIRlogic类的实现17 5.5.1 落子与悔棋17 5.5.2 棋型检测的实现17 5.5.3 FIRlogic类代码片断19 5.6 游戏画布20 5.6.1 Canvas类介绍20 5.6.2 FIRCanvas类实现21 5.6.3 用户输入23 6. 结束语24 参考文献25 致谢27 基于J2ME的五子棋手机游戏开发 1. 前 言 随着手机网络的日益进化,手机硬件性能的不断提升,手机功能越来越多, 人们对于掌上数字娱乐的追求与日俱增,随着越来越多的智能手机的上市,手机的功能已经不再局限于收发短信、接听电话等人们的基本通信需求,手机的游戏功能得以彰显。对于多媒体的支持,使得在手机上开发游戏应用程序更加得心应手,而且游戏的表现力也得到了极大的发挥。随着计算机软件技术的不断发展,嵌入手机等移动设备的软件开发逐渐出现了新的突破。Java 技术的兴起,解决了移动设备软件开发固有的一些弊端,也使高级手机游戏的开发成为现实,其良好的跨平台特性和面向对象的优势在嵌入移动设备的软件开发中显示出了巨大的威力。而J2MEJava 2 Micro Edition 的诞生给高级手机游戏的开发又带来了新的生机。J2ME 技术用于手机游戏开发,不但便于查看游戏运行过程中内存的占用量和程序的每一部分代码消耗了多少处理器时间,而且可以不断地优化代码,使用J2ME 和MIDP 进行手机游戏开发已越来越受到人们的关注。

忙碌的人们,在等车时、在公交车上、在偶尔的闲暇时间,掏出口袋中的手机,玩起手机游戏,短暂的娱乐使紧张的神经得以放松,从而以更加良好的状态投入到学习工作中去。

本游戏主要的内容是人机对战,先达到五子连株者为胜,棋盘大小范围是10 x10至20 x20,游戏难度分为三等级(初阶、中阶和高阶),玩家自行设置。玩家使用四个方向键的上(2)、下(8)、左(4)、右(6)来移动落子点位,移动到空白位置使用确定键(5)来落子,游戏过程中允许悔棋(最多连续悔5步)。

整个程序完成的功能是一个人机对战的五子棋游戏,游戏重点与难点在于如何设计一套快速有效的人工智能算法,尽可能增加游戏的可玩性。本程序取用根据盘面形势,判断在某个位置落子后会形成什么棋型(如“五连”、“冲四”、“活三”等),然后通览全盘选出最佳落子点的方法。

2.相关介绍 本次毕业设计采用了J2ME技术,Java是目前占据优势的手机软件开发技术,并且它是一种开放平台,这意味着可以开发一组代码并使其在众多的移动设备上运行。下面将述J2ME的一些相关知识。

2.1 J2ME简介 Sun公司将J2MEjava 2 Micro Edition,Java2微型版定义为“一种以广泛的消费性产品为目标、高度优化的Java运行时环境”。J2ME是为了那些使用有限能源、有限网络连接(常常是无线连接),以及有限图形用户界面的设备而开发的。

从1999年6月在Java One Developer Conference上声明之后,J2ME便进入了小型设备开发的行列。当时,由于分布式编程深受Java开发者团体的欢迎,大多数与会者都只对J2EE的功能感兴趣。富有戏剧性的是,在随后的两年里,开发者意识到了运行Java的小型组件同样具有很高的价值,J2ME逐步流行。

J2ME不只是一个单独的技术规范,而是一系列技术规范的总称。这些规范定义了Java技术在资源限制的设备中的表现形式,而且新规范在不断制订当中,并且这些规范的制订是完全向公众开放的。目前所说的手机游戏其实是其中规范的一种,即MIDP(移动信息设备规范),该规范应用最为普通,因此习惯上也被人们笼统地称为J2ME技术。

J2ME主要应用于手机等小型嵌入式设备,这些设备由不同的厂商设计生产,功千差万别。J2ME在应用于这些设备的同时也保留了Java的传统特性,即任何时间和任何地点的代码都具有可移值性、部署灵活性、安全的网络传输性,以及代码稳定性。

2.2 Configuration和CLDC J2ME 平台是由配置Configuration 和简表 Pro2 file 构成的。配置是提供给最大范围设备使用的最小类库集合,在配置中同时包含Java 虚拟机。简表是针对一系列设备提供的开发包集合。在J2ME 中还有一个重要的概念是可选包Optional Package ,它是针对特定设备提供的类库,比如某些设备是支持 蓝牙的,针对此功能J2ME 中制定了JSR82 BluetoothAPI 提供了对蓝牙的支持。

目前,J2ME 中有2 个最主要的配置, 分别是Connected Limited Devices Configuration CLDC 和Con2nected Devices Configuration CDC 。

CLDC 是两个配置中较小的一个,为具有间断性联网能力、较慢的处理器和有限内存的设备设计的。这些设备包括移动电话、双工呼叫器和入门级的PDA ,它们通常具有16 位或32 位的CPU、128KB~512KB 可用于Java 平台实现和相关应用程序的内存。

CDC 是为处理能力较强、内存空间更大、联网能力更出色的设备设计的。这些设备包括电视机顶盒、车载娱乐系统、高端PDA 等。CDC 包含一个具有完备特性的Java 虚拟机,比CLDC 更大的Java SE的子集。CDC 的目标设备通常具有32 位或64 位的处理器,2MB 以上的可用于Java 平台实现和相关应用程序的内存空间。

2.3 手机游戏特点 一个手机游戏应该具有以下特征易于学习既然手机游戏面向的是普通消费者而不是计算机专家,那么他们不可能深入的学习游戏技巧。消费者不会花几个小时去研究一个3 元的手动操作的游戏。保持游戏的简单是最基本的要求。

可中断性 多任务处理是手机生活方式的基本特征。手机用户常常在任务如等一个电子邮件或者等车 之间有一小段时间。而游戏、日历管理、通 讯和工作数据访问使用的是同一个设备。所以一个好的手机游戏应该提供短时间的娱乐功能,并且允许用户在游戏和工作模式之间顺利切换。

基于订阅手机游戏的盈利成功取决于他们巨大的使用量。一开始开发和设计每个游戏都是昂贵的。如果一个手机游戏开发者要赢利的话,重要的 是同一个游戏引擎,多个标题,基本的故事情节类似。基于订阅的游戏是不断产生收入的最好方法。

丰富的社会交互不管一个游戏设计得多好,只要玩家找到了它的根本模式或者玩完了所有的游戏路径很快就会厌烦这个游戏。对于一个基于订阅的游戏,重要的是与别的玩家合作以增强所玩游戏的智力和随机性。在今天纷繁复杂的多玩家游戏中具有丰富社会交互的游戏证明是成功的。

3.棋类游戏的相关探讨 3.1 逻辑层和表现层的分离 棋类游戏是移动设置比较擅长表现的游戏,相对于动作类游戏的快节奏,棋类游戏的特点就是玩起来速度慢,比较优雅,主要来培养玩家在某方面的思考和判断能力。

棋类游戏的开发常常带有人工智能算法,因此,需要注重逻辑层和表现层的分离。逻辑层处理所有的判断、推算,可采用各种比较复杂的算法,而表现层则只管与玩家交互。

3.2 自适应尺寸和可移植性 MIDP设备可能有不同的屏幕尺寸、不同的键盘布局以及不同的可用API。在设计游戏时必须考虑这些不同点,以便获得移值性最好的游戏软件。

游戏中所使用的棋盘大小是用户设定的,尺寸也并非固定,而是应用程序从系统获得屏幕的尺寸,并进行计算得出,这些可以避免在屏幕上绘画时对坐标使用的硬代码。

使用Canvas类的getHeight和getWidth方法能够完成上述任务。此外,一个良好的做法是让游戏既支持键盘操作也支持指针操作,这通常不需要增加太多的代码,但可以提高游戏的可移值性。

4.五子棋游戏的架构 五子棋游戏的架构涉及游戏驱动、类结构和流程的初步设计,由于人机对战五子棋采用了人工智能算法,因此,还对获胜棋型和攻守策略进行了探讨。

4.1 事件驱动游戏 棋类游戏通常具备两个重要特性,首先是对战双方轮流落子,其次是落子间隔通常是不确定的,尤其是对战后期,可能每一步棋都需要经过深思熟虑,无论是人方或是计算机方,都无法对间隔时间有实现的预期。

基于以上两个特性,本游戏摒弃了大多数游戏采用的线程或定时器驱动游戏的方法,而采用事件驱动的方法,即玩家的键盘或触摸笔触发游戏的下一步动作。

事件驱动大大减少了不必要的工作量,只有玩家发出消息时,计算机才启动运算,而