基于J2ME五子棋手机游戏开发(21页).doc
《基于J2ME五子棋手机游戏开发(21页).doc》由会员分享,可在线阅读,更多相关《基于J2ME五子棋手机游戏开发(21页).doc(21页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、-基于J2ME五子棋手机游戏开发-第 17 页基于J2ME五子棋手机游戏开发摘要 基于J2ME 技术,设计并开发了一款五子棋手机游戏,程序实验取用Java语言,便于游戏软件的移植,采用手机模拟器进行模拟测试,便于检查游戏功能的实现。在构建了完善的游戏思维的基础上,划分功能模块,实现整套游戏的开发。整个程序完成的功能是一个人机对战的五子棋游戏,游戏的重点与难点在于计算机人工智能算法,总的来说就是根据棋型选择最优的点下子。关键词 J2ME;手机游戏;人工智能ABSTRACT Based on J2ME technology, we designed and developed a mobile g
2、ame 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 compl
3、ete 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 Intelligen
4、ce目录1. 前 言12.相关介绍22.1 J2ME简介22.2 Configuration和CLDC22.3 手机游戏特点33.棋类游戏的相关探讨43.1 逻辑层和表现层的分离43.2 自适应尺寸和可移植性44.五子棋游戏的架构54.1 事件驱动游戏54.2 游戏的类结构54.3 游戏的流程74.4 五子棋的人工智能84.4.1 五子棋的获胜组合84.4.2 设计获胜棋型95.游戏设计与实现95.1 MIDlet简介95.1.1 MIDlet生命周期105.1.3 FIRMIDlet类代码片断125.2 游戏介绍表单的实现125.3 游戏设置表单的实现135.3.1 Gauge与Choice
5、Group组件介绍135.3.2 Option类设计145.3.3 Option类代码片断155.4 棋子Dot类的实现165.5 对战逻辑FIRlogic类的实现175.5.1 落子与悔棋175.5.2 棋型检测的实现175.5.3 FIRlogic类代码片断195.6 游戏画布205.6.1 Canvas类介绍205.6.2 FIRCanvas类实现215.6.3 用户输入236. 结束语24参考文献25致谢27基于J2ME的五子棋手机游戏开发1. 前 言随着手机网络的日益进化,手机硬件性能的不断提升,手机功能越来越多, 人们对于掌上数字娱乐的追求与日俱增,随着越来越多的智能手机的上市,手
6、机的功能已经不再局限于收发短信、接听电话等人们的基本通信需求,手机的游戏功能得以彰显。对于多媒体的支持,使得在手机上开发游戏应用程序更加得心应手,而且游戏的表现力也得到了极大的发挥。随着计算机软件技术的不断发展,嵌入手机等移动设备的软件开发逐渐出现了新的突破。Java 技术的兴起,解决了移动设备软件开发固有的一些弊端,也使高级手机游戏的开发成为现实,其良好的跨平台特性和面向对象的优势在嵌入移动设备的软件开发中显示出了巨大的威力。而J2ME(Java 2 Micro Edition) 的诞生给高级手机游戏的开发又带来了新的生机。J2ME 技术用于手机游戏开发,不但便于查看游戏运行过程中内存的占用
7、量和程序的每一部分代码消耗了多少处理器时间,而且可以不断地优化代码,使用J2ME 和MIDP 进行手机游戏开发已越来越受到人们的关注。忙碌的人们,在等车时、在公交车上、在偶尔的闲暇时间,掏出口袋中的手机,玩起手机游戏,短暂的娱乐使紧张的神经得以放松,从而以更加良好的状态投入到学习工作中去。本游戏主要的内容是人机对战,先达到五子连株者为胜,棋盘大小范围是10x10至20x20,游戏难度分为三等级(初阶、中阶和高阶),玩家自行设置。玩家使用四个方向键的上(2)、下(8)、左(4)、右(6)来移动落子点位,移动到空白位置使用确定键(5)来落子,游戏过程中允许悔棋(最多连续悔5步)。整个程序完成的功能
8、是一个人机对战的五子棋游戏,游戏重点与难点在于如何设计一套快速有效的人工智能算法,尽可能增加游戏的可玩性。本程序取用根据盘面形势,判断在某个位置落子后会形成什么棋型(如“五连”、“冲四”、“活三”等),然后通览全盘选出最佳落子点的方法。2.相关介绍本次毕业设计采用了J2ME技术,Java是目前占据优势的手机软件开发技术,并且它是一种开放平台,这意味着可以开发一组代码并使其在众多的移动设备上运行。下面将述J2ME的一些相关知识。2.1 J2ME简介Sun公司将J2ME(java 2 Micro Edition,Java2微型版)定义为“一种以广泛的消费性产品为目标、高度优化的Java运行时环境”
9、。J2ME是为了那些使用有限能源、有限网络连接(常常是无线连接),以及有限图形用户界面的设备而开发的。从1999年6月在Java One Developer Conference上声明之后,J2ME便进入了小型设备开发的行列。当时,由于分布式编程深受Java开发者团体的欢迎,大多数与会者都只对J2EE的功能感兴趣。富有戏剧性的是,在随后的两年里,开发者意识到了运行Java的小型组件同样具有很高的价值,J2ME逐步流行。J2ME不只是一个单独的技术规范,而是一系列技术规范的总称。这些规范定义了Java技术在资源限制的设备中的表现形式,而且新规范在不断制订当中,并且这些规范的制订是完全向公众开放的
10、。目前所说的手机游戏其实是其中规范的一种,即MIDP(移动信息设备规范),该规范应用最为普通,因此习惯上也被人们笼统地称为J2ME技术。J2ME主要应用于手机等小型嵌入式设备,这些设备由不同的厂商设计生产,功千差万别。J2ME在应用于这些设备的同时也保留了Java的传统特性,即任何时间和任何地点的代码都具有可移值性、部署灵活性、安全的网络传输性,以及代码稳定性。2.2 Configuration和CLDCJ2ME 平台是由配置(Configuration) 和简表( Pro2 file) 构成的。配置是提供给最大范围设备使用的最小类库集合,在配置中同时包含Java 虚拟机。简表是针对一系列设备
11、提供的开发包集合。在J2ME 中还有一个重要的概念是可选包(Optional Package) ,它是针对特定设备提供的类库,比如某些设备是支持蓝牙的,针对此功能J2ME 中制定了JSR82 (BluetoothAPI) 提供了对蓝牙的支持。目前,J2ME 中有2 个最主要的配置, 分别是Connected Limited Devices Configuration (CLDC) 和Con2nected Devices Configuration (CDC) 。CLDC 是两个配置中较小的一个,为具有间断性联网能力、较慢的处理器和有限内存的设备设计的。这些设备包括移动电话、双工呼叫器和入门级的
12、PDA ,它们通常具有16 位或32 位的CPU、128KB512KB 可用于Java 平台实现和相关应用程序的内存。CDC 是为处理能力较强、内存空间更大、联网能力更出色的设备设计的。这些设备包括电视机顶盒、车载娱乐系统、高端PDA 等。CDC 包含一个具有完备特性的Java 虚拟机,比CLDC 更大的Java SE的子集。CDC 的目标设备通常具有32 位或64 位的处理器,2MB 以上的可用于Java 平台实现和相关应用程序的内存空间。2.3 手机游戏特点一个手机游戏应该具有以下特征:易于学习:既然手机游戏面向的是普通消费者而不是计算机专家,那么他们不可能深入的学习游戏技巧。消费者不会花
13、几个小时去研究一个3 元的手动操作的游戏。保持游戏的简单是最基本的要求。可中断性: 多任务处理是手机生活方式的基本特征。手机用户常常在任务(如等一个电子邮件或者等车) 之间有一小段时间。而游戏、日历管理、通讯和工作数据访问使用的是同一个设备。所以一个好的手机游戏应该提供短时间的娱乐功能,并且允许用户在游戏和工作模式之间顺利切换。基于订阅:手机游戏的盈利成功取决于他们巨大的使用量。一开始开发和设计每个游戏都是昂贵的。如果一个手机游戏开发者要赢利的话,重要的是:同一个游戏引擎,多个标题,基本的故事情节类似。基于订阅的游戏是不断产生收入的最好方法。丰富的社会交互:不管一个游戏设计得多好,只要玩家找到
14、了它的根本模式或者玩完了所有的游戏路径很快就会厌烦这个游戏。对于一个基于订阅的游戏,重要的是与别的玩家合作以增强所玩游戏的智力和随机性。在今天纷繁复杂的多玩家游戏中具有丰富社会交互的游戏证明是成功的。3.棋类游戏的相关探讨3.1 逻辑层和表现层的分离棋类游戏是移动设置比较擅长表现的游戏,相对于动作类游戏的快节奏,棋类游戏的特点就是玩起来速度慢,比较优雅,主要来培养玩家在某方面的思考和判断能力。棋类游戏的开发常常带有人工智能算法,因此,需要注重逻辑层和表现层的分离。逻辑层处理所有的判断、推算,可采用各种比较复杂的算法,而表现层则只管与玩家交互。3.2 自适应尺寸和可移植性MIDP设备可能有不同的
15、屏幕尺寸、不同的键盘布局以及不同的可用API。在设计游戏时必须考虑这些不同点,以便获得移值性最好的游戏软件。游戏中所使用的棋盘大小是用户设定的,尺寸也并非固定,而是应用程序从系统获得屏幕的尺寸,并进行计算得出,这些可以避免在屏幕上绘画时对坐标使用的硬代码。使用Canvas类的getHeight和getWidth方法能够完成上述任务。此外,一个良好的做法是让游戏既支持键盘操作也支持指针操作,这通常不需要增加太多的代码,但可以提高游戏的可移值性。4.五子棋游戏的架构五子棋游戏的架构涉及游戏驱动、类结构和流程的初步设计,由于人机对战五子棋采用了人工智能算法,因此,还对获胜棋型和攻守策略进行了探讨。4
16、.1 事件驱动游戏棋类游戏通常具备两个重要特性,首先是对战双方轮流落子,其次是落子间隔通常是不确定的,尤其是对战后期,可能每一步棋都需要经过深思熟虑,无论是人方或是计算机方,都无法对间隔时间有实现的预期。基于以上两个特性,本游戏摒弃了大多数游戏采用的线程或定时器驱动游戏的方法,而采用事件驱动的方法,即玩家的键盘或触摸笔触发游戏的下一步动作。事件驱动大大减少了不必要的工作量,只有玩家发出消息时,计算机才启动运算,而在玩家思考期间,计算机不做任何运算和重绘操作。事件驱动的游戏循环如图3.1:4.2 游戏的类结构整个游戏共由六个类组成,如图3.2所示。游戏的FIRMIDlet类负责保持display
17、对象,并且提供各屏幕之间的切换。整个程序包含四个屏幕:游戏主屏幕表单,实际玩家进行游戏的FIRCanvas,提供某些关于游戏选项的Option表单,以及一个用来显示相关信息的About表单。此外,Dot和FIRLogic类是分别用来构造游戏棋子和算法逻辑的。图4.1 事件驱动游戏循环图4.2 类结构4.3 游戏的流程游戏启动时,FIRMIDlet对象先显示游戏主屏,在屏幕下方一侧是退出软键,另一侧是用软键构成的菜单,菜单元素主要有“设置”和“关于”选项。当玩家选择“设置”软键时,则显示游戏参数设置表单;当玩家选择“开局”软键时,则显示游戏对战主屏;当玩家选择“关于”软键时,则显示游戏介绍表单。
18、玩家进入游戏参数设置表单,当玩家按下“确定”软键时,则确认当前游戏参数,返回游戏主屏;当玩家按下“取消”软键时,则放弃此次对游戏的修改,直接返回游戏主屏幕。玩家进入游戏对战画布,对战中画布有两个软键,当玩家按下“退出”软键时,则退出游戏;当玩家按下“悔棋”软键时,则进行悔棋操作;当游戏结束时,“悔棋”软键被换成“重玩”软键。整个游戏的界面切换流程图如图3.3所示。图4.3 游戏的界面切换游戏图4.4 五子棋的人工智能人工智能也就是所谓的AI(Artificial Intelligence),它是一门很抽象的技术(或者也可以称之为艺术),游戏中的AI可以在遵循一定规则的情况下,依程序设计者本身的
19、思考逻辑制作。可以这样认为,人工智能的核心是使计算机具有自动处理事件的能力,而设计者的所有研究也应该围绕着这一方向进行。最常见的AI游戏就是棋盘式游戏。在这类游戏中,通常的策略类AI程序都是使计算机根据目前状况计算所有可走的棋与可能的获胜状况,并计算当前计算机可走棋步的获胜分数或者玩家可走棋步的获胜分数,然后再决定出一个最佳法。下面介绍一下五子棋的AI构想。4.4.1 五子棋的获胜组合在一场五子棋的游戏中,计算机必须要知道有哪些获胜组合,因此我们必须求得获胜组合的总数。现在假定当前的棋盘为15x15:1) 计算水平方向的获胜组合数,每一列的获胜组合是11,共15列,所以水平方向的获胜组合数为:
20、11x15=165。2) 计算垂直方向的获胜组合数,每一行的获胜组合是11,共15列,所以垂直方向的获胜组合数为:11x15=165。3) 计算正对角线方向的获胜组合数,正对角线上的获胜组合总数为11+(10+9+8+7+6+5+4+3+2+1)x2=121。 4) 计算反对角线方向的获胜组合数,反对角线上的获胜组合总数为11+(10+9+8+7+6+5+4+3+2+1)x2=121。 这样所有的获胜组合数为:165+165+121+121=572。4.4.2 设计获胜棋型我们已经计算出了一个15x15的五子棋盘会有572种获胜方式,这样我们可以利用数组建立一些常规棋型,棋型主要作用是:判断是
21、否有任何一方获胜;根据当前格局判断最可能的落子方式。然而在现实中,人们总结了很多能够构成获胜棋型的“前奏” ,它们是通向胜利的捷径,如“冲四” 、“活三” 、“双三”等等。5.游戏设计与实现5.1 MIDlet简介 MIDlet是用J2ME APIs开发的程序,用于移动计算环境中。MIDlet需要一个特殊的运行环境,这个环境主要包含一个应用程序管理器,它为在移动设备上选择和运行MIDlet提供方便。5.1.1 MIDlet生命周期所有MIDlet都继承自java.microedition.midlet.MIDlet,该类包含了MIDP平台控制应用程序执行过程的方法。当MIDlet被初始化后就进
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 J2ME 五子棋 手机 游戏 开发 21
限制150内