共用类主要包括Player,Queue,Message
这些类相对简单。
查看有关代码就可以理解。
后续重点介绍Desk, Umpire类
package net.tuolian.newserver;
import java.io.DataOutputStream;
import java.io.OutputStream;
/**
* player对象
* 1. 构造对象
* 2. 获得桌子getDesk
* 3. init, 初始化消息队列data.clear(), start = true
* 4. getDataInputStream, getDataOutputStream 输入输出流
* 5. reset 复位:start = false,
*
* @author sean
*
*/
public class Player {
private int ID = 1;
private String IP = "";
private int PORT = 9999;
private Desk desk;
public Queue data;
private String Color = "";
public boolean start = false;
/**
*
*/
public Player(){
desk = null;
data = new Queue();
}
/**
*
* @param ip
* @param p
*/
public Player(String ip, int p){
IP = ip;
PORT = p;
desk = null;
data = new Queue();
}
/**
* 构造方法
* @param userName
* @param password
*/
public Player(String userName, String password) {
// TODO Auto-generated constructor stub
data = new Queue();
}
public void setDesk(Desk d) {
desk = d;
}
public Desk getDesk() {
return desk;
}
public boolean equals(String ip) {
if (IP.equals(ip))
return true;
else
return false;
}
public boolean equals(Player p) {
if (IP.equals(p.getIP()) && PORT == p.getPort())
return true;
else
return false;
}
public String getIP() {
return IP;
}
public int getPort() {
return PORT;
}
public void setID(int id) {
ID = id;
}
public int getID() {
return ID;
}
public boolean isStart() {
return start;
}
public void init() {
start = false;
data.clear();
IP="";
PORT=0;
}
public void reset() {
Color = "";
start = false;
}
public void start() {
start = true;
}
public void setStart(boolean start) {
this.start = start;
}
public String getColor() {
return Color;
}
public void setColor(String color) {
Color = color;
}
private OutputStream outputStream;
/**
* 返回数据输出流
* @return
*/
public DataOutputStream getOutputStream() {
// TODO Auto-generated method stub
return new DataOutputStream(outputStream);
}
/**
* 设置数据输出流
* @param outputStream
*/
public void setOutputStream(OutputStream outputStream) {
// TODO Auto-generated method stub
this.outputStream = outputStream;
}
}
package net.tuolian.newserver;
/**
* 队列类
* @author sean
* 1. 队列构造函数
* 2. push,将对象放入第一个位置
* 3. pop, 将第一个对象取出
* 4. clear, 清空对象
* 5. empty, 判断是否为空
*/
public class Queue extends java.util.Vector {
/**
*
*/
private static final long serialVersionUID = 1L;
public class EmptyQueueException extends java.lang.RuntimeException {
/**
*
*/
private static final long serialVersionUID = 1L;
public EmptyQueueException() {
super();
}
}
public Queue() {
super();
}
/**
* 添加元素到队列
* @param x
*/
public synchronized void push(Object x) {
System.out.println("queue: is ready to add msg : " + ((Message)x).getMessage());
super.addElement(x);
}
/**
* 弹出第一个元素
* @return
*/
public synchronized Object pop() {
if (this.empty())
throw new EmptyQueueException();
Object x = super.elementAt(0);
System.out.println("queue: is ready to remove msg : " + ((Message)x).getMessage());
//第一个元素
super.removeElementAt(0);
return x;
}
/**
* 队列第一个元素
* @return
*/
public synchronized Object front() {
if (this.empty())
throw new EmptyQueueException();
return super.elementAt(0);
}
/**
* 检查队列是否为空
* @return
*/
public boolean empty() {
return this.isEmpty();
}
/**
* 清空队列
*/
public synchronized void clear() {
super.removeAllElements();
}
/**
* 搜索元素的索引号
* @param x
* @return
*/
public int search(Object x) {
return super.indexOf(x);
}
}
package net.tuolian.newserver;
/**
*
* @author sean
*
*/
public class Message {
public static final int REGISTER_REQ = 1000;
public static final int START_REQ = 1001;
public static final int DESKS_REQ = 1002;
public static final int MOVE_REQ = 1003;
public static final int TAKE_REQ = 1004;
public static final int EXITGAME_REQ = 1008;
public static final int EXIT_REQ = 1009;
public static final int DESKS_RESP = 1100;
public static final int UPDATEDESK_RESP = 1101;
public static final int GAME_RESP = 1102;
int cmdType;
String message;
int playerId;
/**
*
* @param cmdType
* @param message
*/
public Message(int cmdType, String message) {
// TODO Auto-generated constructor stub
this.cmdType = cmdType;
this.message = message;
}
/**
* 返回消息内容
* @return
*/
public String getMessage() {
// TODO Auto-generated method stub
return message;
}
public void setPlayerId(int id) {
// TODO Auto-generated method stub
this.playerId = id;
}
public int getCmdType() {
return cmdType;
}
public void setCmdType(int cmdType) {
this.cmdType = cmdType;
}
public int getPlayerId() {
return playerId;
}
public void setMessage(String message) {
this.message = message;
}
}
注:很多代码参考了java项目全程实录
分享到:
相关推荐
基于Socket手机网络象棋开发基于Socket手机网络象棋开发基于Socket手机网络象棋开发基于Socket手机网络象棋开发基于Socket手机网络象棋开发基于Socket手机网络象棋开发基于Socket手机网络象棋开发
手机网络象棋源码,注释的非常详细,希望能够给感兴趣的朋友一点参考价值。手机版。
3. 连接客户端后,将socket作为参数,启动独立线程独立读写、逻辑业务(第二篇重点描述) 具体代码如下: /** * */ package net.tuolian.newserver; import java.io.IOException; import java.net.ServerSocket; ...
手机版象棋游戏采用MIDP1.0开发,在低端手机上运行的同时,保证了高端手机的兼容性,其市场发展空间巨大。伴随着中国移动GPRS和中国联通CDMA1X数据业务的开展,手机游戏将是3G数据业务的一个重要的应用领域。 根据...
【案例三】AICrowd国际象棋挑战:棋子分类
手机版象棋游戏采用MIDP1.0开发,在低端手机上运行的同时,保证了高端手机的兼容性,其市场发展空间巨大。伴随着中国移动GPRS和中国联通CDMA1X数据业务的开展,手机游戏将是3G数据业务的一个重要的应用领域。
中国象棋开发图片包有图片供象棋开发可做简单开发应用,Android游戏
网络象棋对战C#源码 网络象棋对战 网络象棋对战C#源码 网络象棋对战C#源码
象棋程序开发资料全集象棋程序开发资料全集象棋程序开发资料全集象棋程序开发资料全集象棋程序开发资料全集象棋程序开发资料全集象棋程序开发资料全集
基于Java的中国象棋对弈游戏系统开发代码。适用场景:课程设计、大作业、毕业设计、项目设计等。适用人群:本科、专科、高职等。 代码量:3000行左右。可以直接运行,一键导入Idea、Eclipse即可。 支持JavaJDK所有...
Java版的手机象棋游戏,采用MIDP1.0开发,在低端手机上运行的同时,保证了高端手机的兼容性,支持大型Web服务器,以Http协议通讯。
象棋源码H5开发设计的象棋 AI在线对弈网页页面象棋源码【全新經典版+内嵌ai算法】 效果演示https://www.a5ymg.cn/571.html 【象棋源码】全新經典版H5开发设计的象棋完整篇AI在线对弈网页页面象棋源码 經典版H5开发...
Flash象棋网络版是问答娱乐推出的一套多人网络联机棋类游戏,网络版包括服务端+纯...Flash网络象棋功能介绍: 男女虚拟形象支持 棋子走子路点显示,不会玩的玩家也能轻易上手 将军,房间聊天等提示采用语音
是基于VS开发平台的一款象棋游戏。主要是针对网络象棋的开发
安卓游戏开发:象棋游戏源码,适合新手学期,代码全面简单。
超级智能的手机中国象棋程序包,简单易操作。非常智能
使用C#开发的基于遗传算法和神经网络的人工智能象棋算法
C# 象棋游戏开发源码适合初学者C# 象棋游戏开发源码适合初学者C# 象棋游戏开发源码适合初学者C# 象棋游戏开发源码适合初学者
天机是一款以当今最前沿的计算机博弈理论和技术打造而成的具有中国象棋特级大师水平的象棋软件,其棋力在当今的商业软体中处于顶尖水平。天机支持并行计算,最多支持到16个cpu,运用了大量人工智能技术,独立创新...
j2se开发的中国象棋