共用类主要包括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项目全程实录
分享到:
相关推荐
3. **网络通信**:手机网络象棋的关键在于玩家之间的实时通信。源码中应有网络模块,可能采用TCP/IP或WebSocket协议,实现数据的可靠传输。这部分涉及消息序列化和反序列化,以及错误处理机制。 4. **匹配系统**:...
### 基于Socket手机网络象棋开发:深入解析与技术要点 #### 一、Socket技术在手机网络象棋中的应用 在手机网络象棋的开发中,Socket编程技术是实现网络通信的关键。Socket,即套接字,是用于网络间通信的一种机制...
### 基于Socket手机网络象棋开发的关键技术与实现 #### 一、项目概述 本文档基于一个具体的案例——“基于socket手机网络象棋开发”来深入探讨其设计思路和技术实现细节。该项目旨在通过Socket通信技术搭建一个...
综上所述,虽然提供的代码片段没有直接展示中国象棋软件的具体实现细节,但我们可以通过分析整个开发流程和技术要点来更全面地理解这类软件的开发过程。希望以上内容能够帮助您更好地理解和掌握中国象棋软件开发的...
手机版象棋游戏采用MIDP1.0开发,在低端手机上运行的同时,保证了高端手机的兼容性,其市场发展空间巨大。伴随着中国移动GPRS和中国联通CDMA1X数据业务的开展,手机游戏将是3G数据业务的一个重要的应用领域。 根据...
网络象棋对战C#源码是一个用于开发网络象棋游戏的应用程序,它基于C#编程语言,提供了实现在线对战功能的完整代码基础。在深入理解这一源码之前,我们需要先了解一些基本的背景知识。 1. **C#语言**: C#是由微软...
在本项目中,我们主要探讨的是使用Java编程语言开发的一款象棋游戏。Java是一种广泛使用的面向对象的编程语言,以其跨平台性和强大的类库支持而备受赞誉。在Java中开发象棋游戏,不仅可以锻炼编程技能,还能深入理解...
标题“使用wpf开发的象棋程序”揭示了这是一个基于Windows Presentation Foundation(WPF)技术构建的中国象棋游戏应用。WPF是.NET Framework的一部分,主要用于构建桌面应用程序,提供了丰富的用户界面设计能力和...
【标题】"vs网络版象棋"是一款使用Visual Studio(VS)开发平台构建的网络象棋游戏。这款游戏设计的核心目标是实现多人在线对弈的功能,让玩家能够在互联网上与他人实时进行象棋对战。 【描述】在VS开发环境下,这...
在中国象棋开发中,图像资源是至关重要的组成部分,它们为玩家提供直观的视觉体验,增强游戏的吸引力。这个“中国象棋开发图片包”显然包含了专门为Android游戏设计的图像资源,使得开发者能够更加轻松地构建自己的...
手机版象棋游戏采用MIDP1.0开发,在低端手机上运行的同时,保证了高端手机的兼容性,其市场发展空间巨大。伴随着中国移动GPRS和中国联通CDMA1X数据业务的开展,手机游戏将是3G数据业务的一个重要的应用领域。
在本文中,我们将深入探讨如何使用C#编程语言结合遗传算法和神经网络来开发人工智能(AI)象棋算法。这是一个复杂而有趣的项目,涉及到多个计算机科学领域的知识。 首先,让我们了解遗传算法。遗传算法是一种模拟自然...
Unity开发的象棋游戏是一种基于Unity引擎构建的桌面游戏,主要使用了Unity的UGUI(Unity Graphical User Interface)系统来设计用户界面,并且结合了象棋规则与计算机AI技术,使得游戏体验更加丰富和智能。...
这个基于Android开发的象棋游戏源码是一个宝贵的教育资源,可以帮助开发者了解如何将传统的桌面游戏移植到移动设备上。下面我们将深入探讨这个项目中涉及的关键知识点。 1. **Android SDK和开发环境**:首先,你...
《智能手机中国象棋——象棋小巫师》 在当今科技日新月异的时代,智能手机已经成为了我们生活的一部分,而各种手机应用也如雨后春笋般涌现。在这个丰富的应用市场中,有一款名为“智能手机中国象棋”的游戏,特别...
《象棋程序开发资料全集》是一份专为开发者准备的资源合集,涵盖了从基础到高级的象棋程序设计知识。在这个压缩包中,你可以找到一系列关于如何创建、优化和理解象棋算法的重要信息。以下是一些主要的知识点: 1. *...
基于Java的中国象棋对弈游戏系统开发代码。适用场景:课程设计、大作业、毕业设计、项目设计等。适用人群:本科、专科、高职等。 代码量:3000行左右。可以直接运行,一键导入Idea、Eclipse即可。 支持JavaJDK所有...
中国象棋 基于cocos creator开发的单机中国象棋,电脑棋力分为简单,普通,困难三级,电脑AI采用经典的Alpha-Beta剪裁算法,棋力还有优化的空间,不过现在的棋力困难模式一般人已经下不过了。
Java版的手机象棋游戏,采用MIDP1.0开发,在低端手机上运行的同时,保证了高端手机的兼容性,支持大型Web服务器,以Http协议通讯。
【C# TCP/IP网络象棋】是一个利用C#编程语言实现的基于TCP/IP协议的网络游戏,它允许玩家通过互联网进行在线对弈。在这款游戏中,C#被用来创建服务器和客户端应用程序,使得用户能够通过TCP连接进行实时的棋局交互。...