接着,我向大家简要的介绍一下在编程过程所用到的技术与方法
1. JSR82-蓝牙编程API
2. 多线程编程模式
3. 客户端/服务器编程模式
最后,我也是简要的介绍project里边的每个类
如图是project的结构目录图(eclipse3.2/WTK2.5/JDK1.5)
如上图所示 flat包中的FlatMainMDlet.java文件中的FlatMainMIDlet类是整个程序的主类
功能当然是控制整个程序的流程与个人子程序界面的显示了。这个类没有什么技术可说的,一个很普通的类。
代码如下:
flat包中其它的类也比较简单我也不用多说什么。看相应的文件会有注释的。
代码如下:

/** *//**
* Copyright@scholar_ii
* @author 梧州学院 04计本2班 罗功武
* date 08/02/24
*/
package flat;

import javax.microedition.lcdui.Display;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;


/** *//**
* FlatMainMIDlet 游戏娱乐平台的主类
* 责负整个平台的运作
*/

public class FlatMainMIDlet extends MIDlet ...{

/**//*登录窗口*/
protected LoginWindow loginWindow = null;

/**//*游戏娱乐平台的菜单*/
protected MainMenu flatMenu = null ;
private boolean isFirst = true;
public Display display = null;

/** *//**
* 休闲娱乐平台的初使化 FlatMainMIDlet的构造函数
* 进行游戏的初使化
*/

public FlatMainMIDlet() ...{
display = Display.getDisplay(this);
}

/** *//**程序结束*/

protected void destroyApp(boolean uncondition) throws MIDletStateChangeException ...{
notifyDestroyed();

}

/** *//**程序暂停*/

protected void pauseApp() ...{

}

/** *//**程序开始*/

protected void startApp() throws MIDletStateChangeException ...{
if(isFirst)
loginWindow = new LoginWindow(this);
display.setCurrent(loginWindow);
isFirst = false;

}

/** *//**显示主菜单*/
public void showFlatMenu()

...{
if(flatMenu!=null)

...{
display.setCurrent(flatMenu);
}
}

/** *//**退出休闲平台*/
public void exitFlat()

...{

try ...{
destroyApp(true);

} catch (MIDletStateChangeException e) ...{
}
}

}/**//*FlatMainMIDlet.java文件结束*/


/** *//**
* Copyright@scholar_ii
* @author 梧州学院 04计本2班 罗功武
* date 08/02/26
*/

package flat;

import java.io.IOException;

import javax.microedition.lcdui.Alert;
import javax.microedition.lcdui.AlertType;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Form;
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.ImageItem;
import javax.microedition.lcdui.TextField;
import javax.microedition.midlet.MIDletStateChangeException;

/** *//**
*
* LoginWindow类
* 用户的登录窗口,主要是记录用用户娱乐妮称
*/

public class LoginWindow extends Form implements CommandListener ...{

/**//*娱乐平台的主类*/
private FlatMainMIDlet flatMainMidlet;

/**//*退出命令按键*/
private static final Command cmdExit = new Command("退出",Command.EXIT,1);

/**//*登录命令按键*/
private Command cmdLogin = new Command("登录",Command.OK,1);

/**//*用户妮称输入框*/
private static final TextField inputField =
new TextField("娱乐妮称:", "",10,TextField.ANY);

/**//*警告提示窗口*/
private static final Alert errAlert =
new Alert("输入有误","请输入娱乐妮称",null,AlertType.ALARM);
private ImageItem imageItem = null;

/** *//**
* LoginWindow()构造方法
* 完成LoginWindow类的初使化
* @param midlet 休闲娱乐平台的主类
* @return 无
*/

public LoginWindow(FlatMainMIDlet flatMainMidlet)...{
super("梧州学院04计本二");
this.flatMainMidlet = flatMainMidlet;
addCommand(cmdExit);
addCommand(cmdLogin);
setCommandListener(this);

try ...{
Image image = Image.createImage("/logo.png");
imageItem = new ImageItem("",image,
ImageItem.LAYOUT_CENTER,"图片无法显示");

} catch (IOException e) ...{
System.out.println("图片加载出错!");// TODO Auto-generated catch block
e.printStackTrace();
}
append(imageItem);
append(inputField);
}

/** *//**
* commandAction()方法
* 处理用户的输入操作
* @param command , displayable
* @return void
*/

public void commandAction(Command command , Displayable displayable) ...{
if(command == cmdExit)//退出平台

...{

try...{
flatMainMidlet.destroyApp(true);

}catch(MIDletStateChangeException e)...{
}
}
else if(command == cmdLogin)

...{
if(checkLogin())//正确登陆

...{
flatMainMidlet.flatMenu = new MainMenu(flatMainMidlet,inputField.getString());
flatMainMidlet.display.setCurrent(flatMainMidlet.flatMenu);
}
else//错误处理

...{
flatMainMidlet.display.setCurrent(errAlert, this);
}
}

}

/** *//**
* checkLogin()方法
* 用于检查用户的输入是法合法
* @param void
* @return boolean
*/
public boolean checkLogin()

...{
if(inputField.getString().equals(""))
return false;
else
return true;
}


}/**//*LoginWindow类文件结束*/


/** *//**
* Copyright@scholar_ii
* @author 梧州学院 04计本2班 罗功武
* date 08/02/25
*/

package flat;

import game.GameServer;

import java.io.IOException;

import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.List;
import javax.microedition.lcdui.Ticker;
import javax.microedition.midlet.MIDletStateChangeException;
import common.RoomList;
import chat.MultiChatRoomServer;
import chat.PairChatRoomServer;


/** *//**
* MainMenu类 平台主菜单类
* 对用户提供GUI功能
* 显示娱乐平台的功能
*/

public class MainMenu extends List implements CommandListener ...{

/**//*娱乐平如的主类*/
private FlatMainMIDlet flatMainMidlet;

/**//*退出命令按键*/
private final static Command cmdExit = new Command("退出平台",Command.EXIT,1);

/**//*窗口的滚动标题*/
private final static Ticker ticker = new Ticker("我的平台,我做主!");

/**//*用于存贮用户的娱乐妮称*/
private String userName;//用户名

/** *//**
* 游戏娱乐平台的菜单的构造函数
* @param midlet
* @return 无
*/
public MainMenu(FlatMainMIDlet midlet ,String name)

...{
super("蓝牙休闲娱乐平台", List.IMPLICIT);
this.flatMainMidlet = midlet;
this.userName = name;
System.out.println(name);
Image image1 = null;
Image image2 = null;
Image image3 = null;
Image image4 = null;
Image image5 = null;
Image image6 = null;
Image image7 = null;
Image image8 = null;

try...{
image1 = Image.createImage("/item1.png");
image2 = Image.createImage("/item2.png");
image3 = Image.createImage("/item3.png");
image4 = Image.createImage("/item4.png");
image5 = Image.createImage("/item5.png");
image6 = Image.createImage("/item6.png");
image7 = Image.createImage("/item7.png");
image8 = Image.createImage("/item8.png");

}catch(IOException err)...{
System.out.println("图片加载错误");
}
append("新建双人聊天室",image1);
append("新建多人聊天室",image2);
append("加入双人聊天室",image3);
append("加入多人聊天室",image4);
append("新建互动娱乐游戏",image5);
append("加入互动娱乐游戏",image6);
append("游戏平台的帮助与介绍",image7);
append("退出蓝牙游戏娱乐平台",image8);
addCommand(cmdExit);
setTicker(ticker);
setCommandListener(this);
}

/** *//**
* commandAction()方法
* 处理用户的输入操作
* @param command , displayable
* @return void
*/

public void commandAction(Command command, Displayable displayable) ...{
if(command == cmdExit)//退出游戏娱乐平台

...{
flatMainMidlet.exitFlat();
}

else...{
if(command == List.SELECT_COMMAND)//进相应的游戏娱乐平台的功能

...{
switch(((List)displayable).getSelectedIndex())

...{
case 0://新建双人聊天室
flatMainMidlet.display.setCurrent(
new PairChatRoomServer(flatMainMidlet,userName));
break;
case 1://新建多人聊天室
flatMainMidlet.display.setCurrent(
new MultiChatRoomServer(flatMainMidlet,userName));
break;
case 2://加入双人聊天室
flatMainMidlet.display.setCurrent(
new RoomList("开放的双人聊天室",flatMainMidlet,userName,
"11111111111111111111111111111111",1));
break;
case 3://加入多人聊天室
flatMainMidlet.display.setCurrent(
new RoomList("开放的多人聊天室",flatMainMidlet,userName,
"22222222222222222222222222222222",2));
break;
case 4://新建互动娱乐游戏
flatMainMidlet.display.setCurrent(
new GameServer(flatMainMidlet,userName));
break;
case 5://加入互动娱乐游戏
flatMainMidlet.display.setCurrent(
new RoomList("开放的游戏房间",flatMainMidlet,userName,
"33333333333333333333333333333333",3));
break;
case 6://游戏平台的帮助与介绍
flatMainMidlet.display.setCurrent(new HelpWindow(), this);
break;
case 7://退出蓝牙游戏娱乐平台

try...{
flatMainMidlet.destroyApp(true);

}catch(MIDletStateChangeException e)...{
}
break;
}
}
}

}

}//MainMenu.java文件结束
