蓝牙联网五子棋对战游戏分析
五子棋是一款比较经典的短、平、快的益智类游戏。蓝牙联网五子棋是蓝牙应用开发里
采用轮回制运用的一个典型样式。这里详细分析下它的构架和联网应用。
首先介绍下主要用到的八个类:
BTGame :midlet 类,控制所有 midlet 的运行和销毁;
MyCanvas :调用 GameWorld.keyPressed()方法处理键盘输入并实例化和绘制 GameWorld;
Chess :抽象了棋盘上是否为服务器下子;
GameWorld :抽象了游戏的棋盘和棋子以及通过调用 Control 类来收发信息;
Control :主要在 GameWorld 类和 Connetion 类之间传递坐标值和服务器判断值;
Connetion :根据服务器判断值类启动服务器和客户端并把其棋子坐标传递给 Control 类;
Server :主要是创建蓝牙服务和连接并等候服务,并负责服务器的信息收发;
Client :主要负责搜索设备和服务,并负责客户端的信息收发。
基本概念介绍
五子棋首先是由 BTGame 类运行 midlet,启动画布 MyCanvas 类,再根据启动服务器/
客户端的选择再逐次启动 GameWorld 类、Control 类、Connection 类和其选择模式的线程,
来完成蓝牙通信的初始化以及创建连接和收发信息。MyCanvas 类再通过调用 GameWorld 类
的 draw( )来绘制背景、棋盘和棋子。
――――――――――――――――――――――――――――――――――
下面我们来一一分析各个类,从 BTGame 类开始。
第一个类:BTGame 类
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class BTGame extends MIDlet implements CommandListener{
private static BTGame instance;
private MyCanvas mycanvas ;
private ChoiceGroup choices;
private Form initForm;
/** 构造函数 */
public BTGame() {
instance = this;
}
/** 主方法 */
public void startApp() {
initForm = new Form("Exce4");
String[] peerNames = { "Server", "Client"};
choices = new ChoiceGroup("Please select type:", Choice.EXCLUSIVE, peerNames, null);
initForm.append(choices); // 加上选择列表
Command exitCommand = new Command("Exit", Command.EXIT, 0);