手机网络象棋开发(3):公用类介绍

共用类主要包括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项目全程实录
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值