现了游戏画布,BTFIRLogic类实现了游戏逻辑,Dot类代表了五子棋的棋子,Connection类用于
网络连接和用户界面之间的交互,这样整个程序架构更加清晰。
Sever类为服务器端联网
程序,负责提供服务,等待其他设备接入,并负责服务器一方落子信息的发送和对方信息的接收;Client类为客户端程序,用于搜索设备,
搜索服务,并负责客户端一方棋盘行列信息的发送与接收。
各个类之间在程序运行时的组织与联系方式(以建立的是服务器为例):
6 各模块的设计
6.1 主类BTFIRMIDlet类
Pr: alert :Alert Alert的实例对象,用于开始时的欢迎画面。
Pr: choiceType :ChoiceGroup ChoiceGroup的选择组件,用于选择客户端还是服务端。
Pr: CMD_EXIT :Command和Pr: CMD_PLAY :Command Command的按钮。
Pr: display :Display 显示控制对象。
Pr: form :Form 连接类型选择的窗体。
Pr: imgSplash :Image Image的图片对象,用于欢迎界面上的图片。
Pr: isServer :Boolean 用户选择的的结果存于此布尔变量,服务器为TRUE,客户端为FALSE。
Pr: myCanvas :BTFIRCanvas游戏画布实例对象,根据其构造函数传入是服务器还是客户端的信息。
Pu: BTFIRMIDlet() :void 本类的构造方法,用于初始化alert和form等信息。
Pu: commandAction(Command,Displayable) :void 重写事件监听的虚函数,如点击软键CMD_PLAY则显示画布:构造相应画布,显示画布,让画布打开连接,调用画布开局函数对画布初始化创建逻辑;否则退出。
Pu: destroyApp() :void 销毁应用程序的固定的需要重写的方法,本程序中无用,不做定义。
Pu: exit() :void 人为主动销毁程序的方法。
Pu: startApp() :void 启动应用程序的固定的需要重写的方法,调用显示方法显示提示欢迎框,和form。
Pu: getDisplayable() :Displayable 返回form对象。
6.2 逻辑类BTFIRLogic类的实现
BTFIRLogic类是五子棋对战游戏的逻辑类,该类创建了棋盘的状态数组,并根据对战双方的落子情况更新该数组。对战双方落子后,BTFIRLogic类也负责检测双方的获胜情况,并通知游戏画布更新用户界面。
Pu: PLAYER_NONE :int 静态常量0表示空白区域
Pu: PLAYER_BLACK :int 静态常量1表示黑方落子
Pu: PLAYER_WHITE :int 静态常量2表示白方落子
Pu: boardSize :int 静态常量15表示棋盘的大小为15
Pr: isBlack :boolean 是否落子方为黑方标志,在逻辑类构造函数赋值
Pr: isBlackWon :boolean 是否黑方胜利标志,用于传参
Pr: isGameOver :boolean 游戏是否结束标志,用于传参
Pr: lastDot :Dot 最后棋子对象,存放行和列的坐标
Pr: triedDot :Dot 棋子对象,相当于棋子的buffer
Pr: myCanvas :BTFIRCanvas 游戏画布对象
Pr: playerCounter :int[] 落子计数器,包括0、1、2分别表示空白区域数量,黑子数量,白子数量
Pr: table :int[][] 存放棋盘的状态的数组
Pu: BTFIRLogic(BTFIRCanvas canvas,boolean isBlack) :void 构造函数,与Canvas类建立联系,初始化标志位、计数器和棋盘数组table[][]。
Pu: playerBlackGo(int row,col) :boolean 黑方落子,调用goAt(row,col,player)落子,落子前首先检测该位置是否为空白区域,并且是否超出棋盘,否则判定为无效落子。落子成功返回的布尔值为真,无效落子返回的布尔值为假,以此作为是否成功落子的判定。落子之后随即检测是否存在"五子连珠"情况(调用isGameOver()检查),更新所有状态,标志。
Pu: playerWhiteGo(int row,col) :boolean 白方落子,同上。
以下方法都是服务