77范文网 - 专业文章范例文档资料分享平台

基于J2ME五子棋手机游戏开发 - 毕业设计论文(4)

来源:网络收集 时间:2019-02-15 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

图5.2(2) 关于表单界面

5.3 游戏设置表单的实现

游戏设置表单Option类用来对游戏的参数进行设置,包括棋盘大小,游戏难度,是否先手,过程中使用了Gauge和ChoiceGroup两种高级用户界面组件。

5.3.1 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值的范

- 13 -

围为[0,maxValue])。这个值必须大于0,否则会抛出IllegaArgumentException。 ? 参数initialValue是一个整数值,表示Gauge对象的初始值,它的范围是[0,

maxValue]。如果initialValue小于0,则Gauge对象的初始值被设置为0;

如果initialValue大于maxValue,则被设置为maxValue。

ChoiceGroup组件用来构造选择框,棋构造方法如下:

ChoiceGroup(String label,int choiceType)

该构造方法有两个参数,其中参数label用来设置此选项组的标签。Label可以设置为null,表示此Item对象的标签为空白。构造完成后,还可以使用setLabel方法和getLabel方法来分别设置和获取对象的标签。参数choiceType用来设置ChoiceGroup的类型,ChoiceGroup类继承了Choise接口的三种类型:

? EXCLUSIVE,值为1,一次只有一个元素被选择。 ? MULTIPLE,值为2,一次可以有多个元素被选择。

? IMPLICIT,值为3,类似软键菜单或者按钮,当被选择时,立即触发

Command事件。

? POPUP,值为4,弹出式菜单,当被选择时,弹出选项。

5.3.2 Option类设计

该类实现游戏参数的设置,其UML图如图4.3.2(1)所示,游戏截图如4.3.2(2)所示。

- 14 -

图5.3.2 (1) Option类的UML图

图5.3.2 (2) 设置表单界面

5.3.3 Option类代码片断

//保存记录的方法

public void saveOptions(){ try{

RecordStore rs=RecordStore.openRecordStore(\true);//打开记录,如果没有则创建

- 15 -

byte bs[]=new byte[3];

bs[0]=(byte)boardSize; //棋盘大小

bs[1]=(byte)(isComputerFirst?1:0); //先手

bs[2]=(byte)degree; //难度

if(rs.getNumRecords()>0) //如果有记录则ID为1的记录内容为当前参数

rs.setRecord(1,bs,0,3); else

rs.addRecord(bs,0,3); //如果不存在记录,则添加新记录,内容为当前的参数

rs.closeRecordStore(); //关闭记录 }

catch(RecordStoreException e){ } }

5.4 棋子Dot类的实现

Dot类代表了现实中的棋子,该类主要和于记录棋子的位置和检查落子的合法性(是否越界)。五子棋是一个二维棋类游戏,所以首先想到的是定义一个Dot类来表示棋子。考虑到移动设备的资源有限,以及尽可能减少系统资源占用,程序不在下每一步棋时生成一个对象,而是在游戏进行时,玩家或者计算机每下一步棋,在数组相应位置生成该棋子的对象,而将已经下过的棋子保存到数组中随时检索,这样可以避免过多的棋子对象占用系统内存。Dot类的UML图如4.4所示。

图5.4 Dot类的UML图

- 16 -

5.5 对战逻辑FIRlogic类的实现

FIRLogic类是整个游戏的逻辑类,包含了人工智能算法,这些算法主要体现在对各种棋型的检测并计算一个最佳的落子点。除此之外,该类还处理双方落子功能和悔棋功能,判断是否游戏结束,谁是胜利者。

5.5.1 落子与悔棋

当对战某一方在棋盘上落子时,就将棋盘数组的相应位置设置为该方代码(计算机方为1,玩家方为2)。

双方落子后,程序人使用一个Dot类棋子对象来记录最后一步棋的位置,当玩家下了一步棋后需要将上一步重新绘制,以消除棋子上的引导框。此外,还使用堆栈来存储最近的10步棋,以便玩家悔棋。

为了实现悔棋功能,该程序采用了堆栈来存储最近的棋子,当玩家取用悔棋功能时,程序就会将堆栈里的头两步棋的对象移出,这时本来位于第三的棋子对象就变成了栈顶,然后将栈顶的棋子设置为最后一步,并重新绘制棋盘。

5.5.2 棋型检测的实现

connectedIn1D方法用于检测棋盘上任意一点在指定方向上的同类棋子相连个数,传入落子方标志(区分计算机还是玩家)、检测位置的行列坐标和检测方向,返回在该方向上相连棋子的个数,若检测到对方棋子或者空白棋面则停止检测。

connectedIn8D方法是基于connectedIn1D方法的一个升级方法,是对8个方向都进行检测,最终返回一个整型的数组,后面用cd[i]表示。

expandedIn1D方法跟connectedIn1D方法相似,不同的是expandedIn1D方法是检测自己棋子以及空白棋子(最多连续四空白点)的个数,当遇上敌方棋子,

- 17 -

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库基于J2ME五子棋手机游戏开发 - 毕业设计论文(4)在线全文阅读。

基于J2ME五子棋手机游戏开发 - 毕业设计论文(4).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/470673.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: