java——棋牌类游戏斗地主(webddz1.0)之二
package com.ddz;
import java.io.ObjectInputStream;
import java.net.DatagramSocket;
/***************************************************************************
* TODO
* <br>Created on 2013-7-3 上午11:19:29<br>
* @author daicy
***************************************************************************/
public interface Msg {
/**
* 该你叫地主
*/
public static final int CALL = 1;
/**
* 开始游戏了
*/
public static final int NEWGAME = 2;
/**
* 出牌
*/
public static final int SENDEDPOKER = 3;
/**
* 出牌
*/
public static final int RESTART = 4;
/**
* 地主是
*/
public static final int LORDIS = 5;
/**
* 该你出牌
*/
public static final int YOURTURN = 6;
/**
* 该你出牌
*/
public static final int WIN = 7;
/**
* 发送数据
* @param ds
* @param IP
* @param udpPort
*/
public void send(DatagramSocket ds, String IP, int udpPort);
/**
* 接收并处理数据
* @param dis
*/
public void parse(ObjectInputStream dis);
}
package com.ddz;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetSocketAddress;
import java.net.SocketException;
import com.GamePanel;
import common.NetClient;
/***************************************************************************
* TODO
* <br>Created on 2013-7-3 上午11:19:17<br>
* @author daicy
***************************************************************************/
public class LordIsMsg implements Msg {
protected int msgType = Msg.LORDIS;
protected int playerId ;
private GamePanel tc;
private NetClient thread;
/**
* 根据tank的信息构建消息
* @param tank
*/
public LordIsMsg(int playerId) {
this.playerId = playerId;
}
/**
* 根据消息产生的场所构建新的消息
* @param tc
*/
public LordIsMsg(GamePanel tc,NetClient thread) {
this.tc = tc;
this.thread = thread;
}
public int getMsgType() {
return msgType;
}
public void setMsgType(int msgType) {
this.msgType = msgType;
}
public int getPlayerId() {
return playerId;
}
public void setPlayerId(int playerId) {
this.playerId = playerId;
}
public GamePanel getTc() {
return tc;
}
public void setTc(GamePanel tc) {
this.tc = tc;
}
/**
* 发送相关的消息
* @param ds 通过该socket发送数据
* @param IP 数据的目标IP
* @param udpPort 数据的目标端口
*/
public void send(DatagramSocket ds, String IP, int udpPort) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream dos;
try {
dos = new ObjectOutputStream(baos);
dos.writeObject(getMsgType());
dos.writeObject(playerId);
} catch (IOException e) {
e.printStackTrace();
}
byte[] buf = baos.toByteArray();
try {
DatagramPacket dp = new DatagramPacket(buf, buf.length,
new InetSocketAddress(IP, udpPort));
ds.send(dp);
} catch (SocketException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 分析接收到的消息数据
* @param dis 接收到的消息数据的输入流
*/
public void parse(ObjectInputStream dis) {
try {
int id = (Integer) dis.readObject();
thread.setlord(id);
tc.gameState = 2;
if(id==tc.id){
tc.reButtonVisible(true);
}
tc.reButtonName();
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
package com.ddz;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetSocketAddress;
import java.net.SocketException;
import com.GamePanel;
import com.SocketData;
/***************************************************************************
* TODO
* <br>Created on 2013-7-3 上午11:19:36<br>
* @author daicy
***************************************************************************/
public class NewGameMsg implements Msg {
protected int msgType = Msg.NEWGAME;
protected SocketData socketData ;
private GamePanel tc;
/**
* 根据tank的信息构建消息
* @param tank
*/
public NewGameMsg(SocketData socketData) {
this.socketData = socketData;
}
/**
* 根据消息产生的场所构建新的消息
* @param tc
*/
public NewGameMsg(GamePanel tc) {
this.tc = tc;
}
public int getMsgType() {
return msgType;
}
public void setMsgType(int msgType) {
this.msgType = msgType;
}
public GamePanel getTc() {
return tc;
}
public void setTc(GamePanel tc) {
this.tc = tc;
}
/**
* 发送相关的消息
* @param ds 通过该socket发送数据
* @param IP 数据的目标IP
* @param udpPort 数据的目标端口
*/
public void send(DatagramSocket ds, String IP, int udpPort) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream dos ;
try {
dos = new ObjectOutputStream(baos);
dos.writeObject(getMsgType());
dos.writeObject(socketData);
} catch (IOException e) {
e.printStackTrace();
}
byte[] buf = baos.toByteArray();
try {
DatagramPacket dp = new DatagramPacket(buf, buf.length,
new InetSocketAddress(IP, udpPort));
ds.send(dp);
} catch (SocketException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 分析接收到的消息数据
* @param dis 接收到的消息数据的输入流
*/
public void parse(ObjectInputStream dis) {
try {
socketData = (SocketData) dis.readObject();
//socketData.reverse(tc);
socketData.initData(tc);
tc.reStart();
//tc.InitData(socketData.getCards());
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
package com.ddz;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetSocketAddress;
import java.net.SocketException;
import java.util.List;
import com.GamePanel;
/***************************************************************************
* TODO
* <br>Created on 2013-7-3 上午11:20:04<br>
* @author daicy
***************************************************************************/
public class SendPorkerMsg implements Msg {
int msgType = Msg.SENDEDPOKER;
int playerId ;
List<String> sendList;
GamePanel tc;
/**
* 根据tank的信息构建消息
* @param tank
*/
public SendPorkerMsg(int playerId,List<String> sendList) {
this.playerId = playerId;
this.sendList = sendList;
}
/**
* 根据消息产生的场所构建新的消息
* @param tc
*/
public SendPorkerMsg(GamePanel tc) {
this.tc = tc;
}
/**
* 发送相关的消息
* @param ds 通过该socket发送数据
* @param IP 数据的目标IP
* @param udpPort 数据的目标端口
*/
public void send(DatagramSocket ds, String IP, int udpPort) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream dos ;
try {
dos = new ObjectOutputStream(baos);
dos.writeObject(msgType);
dos.writeObject(playerId);
dos.writeObject(sendList);
} catch (IOException e) {
e.printStackTrace();
}
byte[] buf = baos.toByteArray();
try {
DatagramPacket dp = new DatagramPacket(buf, buf.length,
new InetSocketAddress(IP, udpPort));
ds.send(dp);
} catch (SocketException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 分析接收到的消息数据
* @param dis 接收到的消息数据的输入流
*/
public void parse(ObjectInputStream dis) {
try {
int id = (Integer) dis.readObject();
sendList = (List<String>) dis.readObject();
this.tc.sendCards(id, sendList);
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
package com.ddz;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetSocketAddress;
import java.net.SocketException;
import com.GamePanel;
import common.NetClient;
/***************************************************************************
* TODO
* <br>Created on 2013-7-3 上午11:19:17<br>
* @author daicy
***************************************************************************/
public class WinMsg implements Msg {
protected int msgType = Msg.WIN;
protected int playerId ;
private GamePanel tc;
private NetClient thread;
/**
* 根据tank的信息构建消息
* @param tank
*/
public WinMsg(int playerId) {
this.playerId = playerId;
}
/**
* 根据消息产生的场所构建新的消息
* @param tc
*/
public WinMsg(GamePanel tc,NetClient thread) {
this.tc = tc;
this.thread = thread;
}
public int getMsgType() {
return msgType;
}
public void setMsgType(int msgType) {
this.msgType = msgType;
}
public int getPlayerId() {
return playerId;
}
public void setPlayerId(int playerId) {
this.playerId = playerId;
}
public GamePanel getTc() {
return tc;
}
public void setTc(GamePanel tc) {
this.tc = tc;
}
/**
* 发送相关的消息
* @param ds 通过该socket发送数据
* @param IP 数据的目标IP
* @param udpPort 数据的目标端口
*/
public void send(DatagramSocket ds, String IP, int udpPort) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream dos;
try {
dos = new ObjectOutputStream(baos);
dos.writeObject(getMsgType());
dos.writeObject(playerId);
} catch (IOException e) {
e.printStackTrace();
}
byte[] buf = baos.toByteArray();
try {
DatagramPacket dp = new DatagramPacket(buf, buf.length,
new InetSocketAddress(IP, udpPort));
ds.send(dp);
} catch (SocketException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 分析接收到的消息数据
* @param dis 接收到的消息数据的输入流
*/
public void parse(ObjectInputStream dis) {
try {
int id = (Integer) dis.readObject();
tc.setWinById(id);
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
package com.ddz;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetSocketAddress;
import java.net.SocketException;
import com.GamePanel;
/***************************************************************************
* TODO
* <br>Created on 2013-7-3 上午11:19:44<br>
* @author daicy
***************************************************************************/
public class YourTurnMsg implements Msg {
protected int msgType = Msg.YOURTURN;
protected int playerId ;
private GamePanel tc;
/**
* 根据tank的信息构建消息
* @param tank
*/
public YourTurnMsg(int playerId) {
this.playerId = playerId;
}
/**
* 根据消息产生的场所构建新的消息
* @param tc
*/
public YourTurnMsg(GamePanel tc) {
this.tc = tc;
}
public int getMsgType() {
return msgType;
}
public void setMsgType(int msgType) {
this.msgType = msgType;
}
public int getPlayerId() {
return playerId;
}
public void setPlayerId(int playerId) {
this.playerId = playerId;
}
public GamePanel getTc() {
return tc;
}
public void setTc(GamePanel tc) {
this.tc = tc;
}
/**
* 发送相关的消息
* @param ds 通过该socket发送数据
* @param IP 数据的目标IP
* @param udpPort 数据的目标端口
*/
public void send(DatagramSocket ds, String IP, int udpPort) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream dos;
try {
dos = new ObjectOutputStream(baos);
dos.writeObject(getMsgType());
dos.writeObject(playerId);
} catch (IOException e) {
e.printStackTrace();
}
byte[] buf = baos.toByteArray();
try {
DatagramPacket dp = new DatagramPacket(buf, buf.length,
new InetSocketAddress(IP, udpPort));
ds.send(dp);
} catch (SocketException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 分析接收到的消息数据
* @param dis 接收到的消息数据的输入流
*/
public void parse(ObjectInputStream dis) {
try {
int id = (Integer) dis.readObject();
if (getTc().id == id) {
getTc().turnIndex = id;
getTc().reButtonVisible(true);
if(this.getTc().gameState == 1){
}
}
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
java——棋牌类游戏斗地主(webddz1.0)之二的更多相关文章
- UE4开发神秘海域类游戏原型 初阶(二):动画资源的整合
前一篇已经确定神海类游戏原型的目标,首先要做的就是3C's(Character, Controls, Camera)的开发. UE4的3C's的程序部分开发主要也就是基于他的GamePlay Fr ...
- android开发之网络棋牌类在线游戏开发心得(服务器端、Java) 好文章值得收藏
标签: android服务器 2013-10-09 17:28 3618人阅读 评论(0) 收藏 举报 分类: android(11) 转自:http://blog.csdn.net/bromon/a ...
- CCF201512-2 消除类游戏 java(100分)
试题编号: 201512-2 试题名称: 消除类游戏 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 消除类游戏是深受大众欢迎的一种游戏,游戏在一个包含有n行m列的游戏棋盘上进 ...
- 网狐6603 cocos2dx 棋牌、捕鱼、休闲类游戏《李逵捕鱼》手机端完整源码分析及分享
该资源说明: cocos2d 棋牌.捕鱼.休闲类游戏<李逵捕鱼>手机端完整源码,网狐6603配套手机版源码,可以选桌子,适合新手学习参考,小编已亲测试,绝对完整可编译手机端,下载后将文件考 ...
- java导出数据EXCEL的工具类(以spring-webmvc-4.0.4jar为基础)
1.本工具类继承于 spring-webmvc-4.0.4jar文件心中的一个类 AbstractExcelView 2.代码如下 package com.skjd.util; import j ...
- C++ MFC棋牌类小游戏day1
好用没用过C++做一个完整一点的东西了,今天开始希望靠我这点微薄的技术来完成这个小游戏. 我现在的水平应该算是菜鸟中的战斗鸡了,所以又很多东西在设计和技术方面肯定会有很大的缺陷,我做这个小游戏的目的单 ...
- javascript开发HTML5游戏--斗地主(单机模式part3)
最近学习使用了一款HTML5游戏引擎(青瓷引擎),并用它尝试做了一个斗地主的游戏,简单实现了单机对战和网络对战,代码可已放到github上,在此谈谈自己如何通过引擎来开发这款游戏的. 客户端代码 服务 ...
- 《Unity3D/2D游戏开发从0到1》正式出版发行
<Unity3D/2D游戏开发从0到1>正式出版发行 去年个人编写的Unity书籍正式在2015年7月正式发行,现在补充介绍一下个人著作.书籍信息: 书籍的名称: <Uni ...
- JAVASCRIPT开发HTML5游戏--斗地主(网络对战PART4)
继之前用游戏引擎(青瓷引擎)做了斗地主单机版游戏之后,这里分享下使用socket.io来实现网络对战,代码可已放到github上,在此谈谈自己整个的开发思路吧. 客户端代码 服务端代码 (点击图片进入 ...
- javascript开发HTML5游戏--斗地主(单机模式part2)
最近学习使用了一款HTML5游戏引擎(青瓷引擎),并用它尝试做了一个斗地主的游戏,简单实现了单机对战和网络对战,代码可已放到github上,在此谈谈自己如何通过引擎来开发这款游戏的. 客户端代码 服务 ...
随机推荐
- CSIG青年科学家会议圆满举行,合合信息打造智能文档处理融合研究新范式
近期,第十九届中国图象图形学学会青年科学家会议(简称"会议")在广州召开.会议由中国图象图形学学会(CSIG)主办,琶洲实验室.华南理工大学.中山大学.中国图象图形学学 ...
- DOM & BOM – 用 Canvas 修图
前言 以前有写过一篇关于 canvas 处理图片的文章. 非常乱, 这篇做一个整理. 参考 Stack Overflow – HTML5 Canvas Rotate Image Stack Overf ...
- Qt连连看(二)界面制作
我们先来制作两个简单的页面 一.主界面 要求在main.cpp里面设置对应的槽函数 (1) 点击开始游戏能跳转到游戏界面 (2) 点击帮助能够显示游戏说明,如下 二.游戏界面 要求如下: (3) 初始 ...
- Servlet——Request请求转发
Request请求转发 特点:
- .Net Web项目中,实现轻量级本地事件总线 框架
一.事件总线设计方案 1.1.事件总线的概念 事件总线是一个事件管理器,负责统一处理系统中所有事件的发布和订阅. 事件总线模式通过提供一种松耦合的方式来促进系统内部的业务模块之间的通信,从而增强系统的 ...
- Vue 文件流预览 PDF
Vue js // pdf 预览 export function download(id) { return request({ url: '/bbs/regtech/law/download?id= ...
- std::vector 和 std::map 都支持以下比较运算符
在 C++ 标准库中,std::vector 和 std::map 都支持以下比较运算符: ==(相等运算符) !=(不等运算符) <(小于运算符) <=(小于等于运算符) >(大于 ...
- 最小代价的 SSO 单点登录方案
现在有多个 WebApp,想用最小的代价实现 SSO 单点登录.所谓最小代价,我的理解就是对原有 WebApp 的改动最小,因此 在旁路增加一个 SsoWebApp 用于管理 SSO 的账号,进行身份 ...
- 【问题解决】remote: parse error: Invalid numeric literal at line 1, column 20,解决思路
问题现象 某同事出现过同样的推送到git仓库报错的问题,报错信息详情如下: Delta compresion using up to 20 threads Compressing objects: 1 ...
- url 统一资源定位符的组成
协议 protocol :http 或者 https = http + ssl 或者 file 文件(本地): 域名 host 或 ip 地址: 端口 port 省略默认 80 : 路径 path ...