下面是对应的sit部分的java代码:
if(cmd.equals(this.cmd_sit)) {
if(param != null) {
param = param.trim();
if( param.indexof(" ") != -1) {
string desk_name = param.substring(0, param.indexof(" "));
param = param.substring(param.indexof(" "));
param = param.trim();
string chessman_status = param.substring(0,param.indexof(" "));
string player_name = param.substring(param.indexof(" "));
player_name = player_name.trim();
chessman_status = chessman_status.trim();
user.deskname = desk_name;
user.place = chessman_status;
if (chessman_status.equals("stand_up")) {
user.deskname = null;
user.place = null;
user.play_status = null;
}
// 由于是广播,所以自己也会收到一个坐下的命令,所以自己就不发给自己了
user.manager.notifyall(packmsg(this.m_sit, desk_name+":" + chessman_status + ":" + player_name,"" ));
}
}
}
服务器发一条信息,是如何收到,然后如何动作的呢?请看下面的部分flash代码:
function onxml_receive(x) {
if (x == null) {
return;
}
var e = x.firstchild;
if (e == null) {
return;
} else if (e.nodename == "sit") {
trace("----sit----");
_root.sit_down(e.attributes.value);
}
……
这里的onxml_receive程序就是前面说到的接收信息的主处理程序。很明显,这个在收到<sit value="6:stand_up:dongua" />串后,就会把它分解成一个结构型的内容,节点名就叫:sit,其属性值e.attributes.value等于"6:stand_up:dongua",请看这里调用的坐下的子程序:
function sit_down(str) {
var place = 0, pre, now;
var player = new array(3);
//把这个字符串分成三个部分
player = str.split(":");
//如果是自己收到自己坐下的信息就不做任何处理
if (player[2] != _root.nickname) {
set_sit(player);
// 如果自己坐在他的对面就开始游戏,定为左边先走
if (player[1] == "left" && _root.player_right[player[0]] == _root.nickname) {
// 表示自己坐在右边,拿蓝棋,后走
_root.i_run = false;
_root.my_logo = _root.second_play;
_root.your_logo = _root.first_play;
_root.rival = player[2];
_root.now_play_table = number(player[0]);
//进入开始下棋的阶段
_root.init_play();
_root.gotoandplay("begin_play");
}
if (player[1] == "right" && _root.player_left[player[0]] == _root.nickname) {
// 表示自己坐在左边,拿红棋,先走
_root.i_run = true;
_root.my_logo = _root.first_play;
_root.your_logo = _root.second_play;
_root.rival = player[2];
_root.now_play_table = number(player[0]);
//进入开始下棋的阶段
_root.init_play();
_root.gotoandplay("begin_play");
}
}
}
function set_sit(arr) {
if (arr[0] != "null") {
var place = number(arr[0]);
var obj_place = place-_root.objtabledisplay.table_begin+1;
//如果起立就清空对应棋盘对应位置的名字
if (arr[1] == "stand_up") {
if (_root.player_left[place] == arr[2]) {
_root.objtabledisplay["table_"+obj_place].player_left = "";
_root.player_left[place] = "";
} else {
_root.objtabledisplay["table_"+obj_place].player_right = "";
_root.player_right[place] = "";
}
}
//如果坐左边就修改对应棋盘左边的内容
if (arr[1] == "left") {
_root.objtabledisplay["table_"+obj_place].player_left = arr[2];
_root.player_left[place] = arr[2];
}
//如果坐右边就修改对应棋盘右边的内容
if (arr[1] == "right") {
_root.objtabledisplay["table_"+obj_place].player_right = arr[2];
_root.player_right[place] = arr[2];
}
}
}
你是不是有点看晕了?没有办法,编程序就是这样,一定要弄清楚哪些是java代码,哪些是flash代码,这两种代码看上去很相像。或者你会问为什么要一会用java代码一会用flash代码,笔者认为只有这样讲读者才会弄明白游戏到底是如何运行的。如果分开讲的话,可能会更加糊涂!好了,言归正传,下面就来说明上面的代码吧。
上面的代码是游戏坐下的程序,sit_down程序的核心分成下面几个部分:
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器