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)之二的更多相关文章

  1. UE4开发神秘海域类游戏原型 初阶(二):动画资源的整合

    前一篇已经确定神海类游戏原型的目标,首先要做的就是3C's(Character, Controls, Camera)的开发.   UE4的3C's的程序部分开发主要也就是基于他的GamePlay Fr ...

  2. android开发之网络棋牌类在线游戏开发心得(服务器端、Java) 好文章值得收藏

    标签: android服务器 2013-10-09 17:28 3618人阅读 评论(0) 收藏 举报 分类: android(11) 转自:http://blog.csdn.net/bromon/a ...

  3. CCF201512-2 消除类游戏 java(100分)

    试题编号: 201512-2 试题名称: 消除类游戏 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 消除类游戏是深受大众欢迎的一种游戏,游戏在一个包含有n行m列的游戏棋盘上进 ...

  4. 网狐6603 cocos2dx 棋牌、捕鱼、休闲类游戏《李逵捕鱼》手机端完整源码分析及分享

    该资源说明: cocos2d 棋牌.捕鱼.休闲类游戏<李逵捕鱼>手机端完整源码,网狐6603配套手机版源码,可以选桌子,适合新手学习参考,小编已亲测试,绝对完整可编译手机端,下载后将文件考 ...

  5. java导出数据EXCEL的工具类(以spring-webmvc-4.0.4jar为基础)

    1.本工具类继承于  spring-webmvc-4.0.4jar文件心中的一个类   AbstractExcelView 2.代码如下 package com.skjd.util; import j ...

  6. C++ MFC棋牌类小游戏day1

    好用没用过C++做一个完整一点的东西了,今天开始希望靠我这点微薄的技术来完成这个小游戏. 我现在的水平应该算是菜鸟中的战斗鸡了,所以又很多东西在设计和技术方面肯定会有很大的缺陷,我做这个小游戏的目的单 ...

  7. javascript开发HTML5游戏--斗地主(单机模式part3)

    最近学习使用了一款HTML5游戏引擎(青瓷引擎),并用它尝试做了一个斗地主的游戏,简单实现了单机对战和网络对战,代码可已放到github上,在此谈谈自己如何通过引擎来开发这款游戏的. 客户端代码 服务 ...

  8. 《Unity3D/2D游戏开发从0到1》正式出版发行

    <Unity3D/2D游戏开发从0到1>正式出版发行 去年个人编写的Unity书籍正式在2015年7月正式发行,现在补充介绍一下个人著作.书籍信息:      书籍的名称: <Uni ...

  9. JAVASCRIPT开发HTML5游戏--斗地主(网络对战PART4)

    继之前用游戏引擎(青瓷引擎)做了斗地主单机版游戏之后,这里分享下使用socket.io来实现网络对战,代码可已放到github上,在此谈谈自己整个的开发思路吧. 客户端代码 服务端代码 (点击图片进入 ...

  10. javascript开发HTML5游戏--斗地主(单机模式part2)

    最近学习使用了一款HTML5游戏引擎(青瓷引擎),并用它尝试做了一个斗地主的游戏,简单实现了单机对战和网络对战,代码可已放到github上,在此谈谈自己如何通过引擎来开发这款游戏的. 客户端代码 服务 ...

随机推荐

  1. Linq操作XML生成XML,实体生成XML和互转

    开发接口中难免会遇到一些数据对接需要转换城xml,看到很多之前的代码都使用很传统的方法循环集合并定义xml后一一生成的,代码之封锁 特此使用了简单易用linq操作分享给大家,希望可以帮到需要的同学 今 ...

  2. Go runtime 调度器精讲(二):调度器初始化

    原创文章,欢迎转载,转载请注明出处,谢谢. 0. 前言 上一讲 介绍了 Go 程序初始化的过程,这一讲继续往下看,进入调度器的初始化过程. 接着上一讲的执行过程,省略一些不相关的代码,执行到 runt ...

  3. JavaScript – 用 Generator 运行异步函数 & await async

    前言 上一篇 JavaScript – Promise 介绍了如何用 JS 编写可读性高的异步函数. 但其实呢, Promise 还不是最好的. 在 es6 之前, Promise 比起回调地狱是好了 ...

  4. linux 映射windows 下的共享文件夹

    linux 映射windows 下的共享文件夹     本文讯]2021年4月27日  在对接第三方系统,进行数据采集的时候,对方给了我们一个文件夹,里面全是txt文件,这个时候就要想办法获取他们数据 ...

  5. 参与 2023 第二季度官方 Flutter 开发者调查

    Flutter 3.10 已经正式发布,每个季度一次的 Flutter 开发者调查也来啦!邀请社区的各位成员们填写: 调研旨在了解你对 Flutter 的满意程度以及对其各个子系统的反馈.你的意见将对 ...

  6. A Proof of Golden Section of Fibonacci Sequence

    Update on 2024/6/25 10:40 (UTF+8) : Add the Part Five and correct some words Hello, I'm glad to show ...

  7. 深度DFS 和 广度BFS搜索算法学习

    目录 广度优先的动态图 深度优先的动态图 广度和深度的具体步骤 深度和广度的应用场景 图的两种遍历方式: 深度优先遍历(DFS--Depth First Search) 广度优先遍历(BFS--Bre ...

  8. k8s-部署

    目录 1 k8s 组件功能介绍 1.2 K8s 集群API: kube-apiserver 1.3 K8s 调度程序:kube-scheduler 1.4 K8s 控制器:kube-controlle ...

  9. 《Vue.js 设计与实现》读书笔记 - 第14章、内建组件和模块

    第14章.内建组件和模块 14.1 KeepAlive 组件的实现原理 KeepAlive 一词借鉴了 HTTP 协议. KeepAlive 组件可以避免组件被频繁的销毁/重建.本质是缓存管理,再加上 ...

  10. LeetCode 1388. Pizza With 3n Slices(3n 块披萨)(DP)

    给你一个披萨,它由 3n 块不同大小的部分组成,现在你和你的朋友们需要按照如下规则来分披萨: 你挑选 任意 一块披萨.Alice 将会挑选你所选择的披萨逆时针方向的下一块披萨.Bob 将会挑选你所选择 ...