基于j2me五子棋手机游戏开发(编辑修改稿)内容摘要:

子和算法逻辑的。 开始玩家落子判定落子合法性判定游戏是否结束计算机落子判定游戏是否结束结束NNYYYN 图 事件驱动 游戏循环 7 C a n v a s画 布F I R C a n v a sF I R L o g i c逻 辑D o t棋 子F I R M I D l e t主 类M I D l e tA b o u t关 于 表 单A b o u t设 置 表 单图 类结构 游戏的流程 游戏启动时, FIRMIDlet 对象先显示游戏主屏,在屏幕下方一侧是退出软键,另一侧是用软键构成的菜单,菜单元素主要有“设置”和“关于”选项。 当玩家选择“设置”软键时,则显示游戏参数设置表单;当玩家选择“开局”软键时,则显示游戏对战主屏;当玩家选择“关于”软键时,则显示游戏介绍表单。 玩家进入游戏参数设置表单,当玩家按下“确定”软键 时,则确认当前游戏参数,返回游戏主屏;当玩家按下“取消”软键时,则放弃此次对游戏的修改,直接返回游戏主屏幕。 玩家进入游戏对战画布,对战中画布有两个软键,当玩家按下“退出”软键时,则退出游戏;当玩家按下“悔棋”软键时,则进行悔棋操作;当游戏结束时,“悔棋”软键被换成“重玩”软键。 整个游戏的界面切换流程图如图 所示。 8 图 游戏的界面切换游戏图 五子棋的人工智能 人工智能也就是所谓的 AI(Artificial Intelligence),它是一门很抽象的技术(或者也可以称之为艺术 ),游戏中的 AI可以在遵循一定规则的情况下,依程序设计者本身的思考逻辑制作。 可以这样认为,人工智能的核心是使计算机具有自动处理事件的能力,而设计者的所有研究也应该围绕着这一方向进行。 最常见的 AI游戏就是棋盘式游戏。 在这类游戏中,通常的策略类 AI 程序都是使计算机根据目前状况计算所有可走的棋与可能的获胜状况,并计算当前计算机可走棋步的获胜分数或者玩家可走棋步的获胜分数,然后再决定出一个最佳法。 下面介绍一下五子棋的 AI构想。 五子棋的获胜组合 在一 场五子棋的游戏中,计算机必须要知道有哪些获胜组 合,因此我们必须求得获胜组合的总数。 现在假定当前的棋盘为 15x15: 1) 计算水平方向的获胜组合数,每一列的获胜组合是 11,共 15 列,所以水平方向的获胜组合数为: 11x15=165。 9 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。 设计获胜棋型 我们已 经计算出了一个 15x15 的五子棋盘会有 572种获胜方式,这样我们可以利用数组建立一些常规棋型,棋型主要作用是:判断是否有任何一方获胜;根据当前格局判断最可能的落子方式。 然而在现实中,人们总结了很多能够构成获胜棋型的“前奏” ,它们是通向胜利的捷径,如“冲四” 、“活三” 、“双三”等等。 MIDlet 简介 MIDlet 是用 J2ME APIs 开发的程序 ,用于移动计算环境中。 MIDlet 需要一个特殊的运行环境,这个环境主要包含一个应用程序管理器,它为在移动设备上选择和运行 MIDlet 提供方便。 10 MIDlet 生命周期 所有 MIDlet都继承自 ,该类包含了 MIDP平台控制应用程序执行过程的方法。 当 MIDlet 被 初始化 后就进入它的生命周期,该生命周期包含三种状态:激活态( Active)、暂停态( Paused)和销毁态( Destroyed) ,这三种状态的控 制完全由 JAM 来完成。 当出现状态迁移时, JAM 会自动调用相应的方法, MIDlet状态迁移图如 所示。 J A M 初 始 化M I D l e t暂 停 状 态( P a u s e d )激 活 状 态( A c t i v e )调 用 s t a r t A p p 方 法调 用 P a r s e A p p 方 法销 毁 状 态( D e s t r o y e d )调 用 d e s t r o y A p p 方 法调 用 d e s t r o y A p p 方 法 图 MIDlet 状态 迁移触发的方法调用 JAM 加载 MIDlet 后,首先进行初始化的工作,然后将状态设置暂停态,如果在初始化过程中没有出现异常,那么将 MIDlet 的状态设置为激活状态,否则将 MIDlet 的状态设置为销毁状态。 在每次状态转换的时候都要高用相应的方法。 11 主类 FIRMIDlet 类 的实现 FIRMIDlet类 继承了 MIDlet 类, 负责程序的启动和屏幕切换,该类用高级界面中的软键来实现游戏菜单,在不同的手机上,软键可能有不同的分布。 FIRMIDlet 类的 UML 图如图 (1)所示,主界面如图 (2)与 (3)所示。 图 FIRMIDlet 类的 UML 图 图 (2) 初屏 图 (3) 按下菜单后的屏幕 12 FIRMIDlet 类代码片断 //构建主屏表单 public FIRMIDlet() { display=(this)。 form=new Form(null)。 try{ imgSplash=(/)。 //加载屏幕图片 } catch(IOException e){ imgSplash=(1, 1)。 } (imgSplash)。 CMD_EXIT=new Command(退出 ,7,1)。 //创建退出软键 CMD_GO=new Command(开局 ,4,2)。 //创建开局软键 CMD_OPTION=new Command(设置 ,1,3)。 //创建设置软键 CMD_ABOUT=new Command(关于 ,5,3)。 //创建关于软键 (CMD_EXIT)。 //将退出软键添加到主表单 (CMD_GO)。 //将开局软键添加到主表单 (CMD_OPTION)。 //将设置软键添加到主表单 (CMD_ABOUT)。 //将关于软键添加到主表单 (this)。 //监听主表单软键事件 myCanvas=new FIRCanvas(this)。 //创建画布 options=new Options(this)。 //创建设置表单 about=new About(this)。 //创建关于表单 } 游戏介绍表单的实现 About是游戏介绍表单 类, 主 要是向玩家阐述五子棋的一些信息。 其 UML 图如 (1)所示,游戏截图如 (2)所示。 图 (1) About 类的 UML 图 13 图 (2) 关于表单界面 游戏设置表单的实现 游戏设置表单 Option 类用来对游戏的参数进行设置,包括棋盘大小,游戏难度,是否先手,过程中使用了 Gauge 和 ChoiceGroup 两种高级用户界面组件。 Gauge 与 ChoiceGroup 组件介绍 Gauge 组件实现了一个图形标尺,通常被用来表示一个过程的进展情况或者一些系列数字的选择情况。 Gauge 的构造方法根据指定的标签、交互模式、最大值、初始值生成一个新的 Gauge 对象,原型如下: Gauge( String label,Boolean interactive,int maxValue,int initialValue)  Gauge 构造方法有 4 个参数: label、 interactive、 maxValue、 initialValue  参数 label 用作 label 对象的标签,设置为 null 表示标签为空  参数 interactive 是一个 boolean 变量,表示这个 Gauge 对象的交互模式,设置为 true 表示交互模式,即用户可以改变 Gauge 对象的值:如果设置为 flase,则表示非交互模式,即用户不可以改变 Gauge 的值。  参数 maxValue是一个大于 0的整数, 表示 Gauge 对象的最大值( Gauge 值的范 14 围为 [0, maxValue])。 这个值必须大于 0,否则会抛出 IllegaArgumentException。  参数 initialValue是一个整数值,表示 Gauge 对象的初始值,它的范围是 [0,maxValue]。 如果 initialValue小于 0,则 Gauge 对象的初始值被设置为 0;如果 initialValue大于 maxValue,则。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。