zoukankan      html  css  js  c++  java
  • java——棋牌类游戏五子棋(webwzq1.0)之三(Msg)

    package msg;
    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 NEWGAME = 2;
    	
    	
    	/**
    	 * 出牌
    	 */
    	public static final int SENDEDPOKER = 3;
    	
    	
    	/**
    	 * 出牌
    	 */
    	public static final int RESTART = 4;
    	
    	
    	
    	/**
    	 * 该你出牌
    	 */
    	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 msg;
    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 basegame.GameFrame;
    
    import socket.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 GameFrame tc;
    	
    	/**
    	 * 根据tank的信息构建消息
    	 * @param tank
    	 */
    	public NewGameMsg(SocketData socketData) {
    		this.socketData = socketData;
    	}
    	
    	/**
    	 * 根据消息产生的场所构建新的消息
    	 * @param tc
    	 */
    	public NewGameMsg(GameFrame tc) {
    		this.tc = tc;
    	}
    	
    	
    	
    	public int getMsgType() {
    		return msgType;
    	}
    
    	public void setMsgType(int msgType) {
    		this.msgType = msgType;
    	}
    
    
    	public GameFrame getTc() {
    		return tc;
    	}
    
    	public void setTc(GameFrame 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 msg;
    
    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;
    
    
    /***************************************************************************
     * TODO
     * <br>Created on 2013-7-3 上午11:19:56<br>
     * @author daicy
     ***************************************************************************/
    public class RestartGameMsg implements Msg {
    	protected int msgType = Msg.RESTART;
    
    	
    	/**
    	 * 根据消息产生的场所构建新的消息
    	 * @param tc
    	 */
    	public RestartGameMsg() {
    	}
    	
    	public int getMsgType() {
    		return msgType;
    	}
    
    	public void setMsgType(int msgType) {
    		this.msgType = msgType;
    	}
    
    
    
    	/**
    	 * 发送相关的消息
    	 * @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());
    		} 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) {
    		
    
    	}
    
    
    }
    

    package msg;
    import java.awt.Point;
    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 basegame.GameFrame;
    
    
    /***************************************************************************
     * TODO
     * <br>Created on 2013-7-3 上午11:20:04<br>
     * @author daicy
     ***************************************************************************/
    public class SendMoveMsg implements Msg {
    	int msgType = Msg.SENDEDPOKER;
    
    	int playerId ;
    	
    	Point sendList;
    
    	GameFrame tc;
    	
    	/**
    	 * 根据tank的信息构建消息
    	 * @param tank
    	 */
    	public SendMoveMsg(int playerId,Point sendList) {
    		this.playerId = playerId;
    		this.sendList = sendList;
    	}
    	
    	/**
    	 * 根据消息产生的场所构建新的消息
    	 * @param tc
    	 */
    	public SendMoveMsg(GameFrame 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 = (Point) dis.readObject();
    			this.tc.sendXY(id, sendList);
    
    		} catch (IOException e) {
    			e.printStackTrace();
    		} catch (ClassNotFoundException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    
    	}
    
    }
    

    package msg;
    
    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 basegame.GameFrame;
    
    import socket.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 GameFrame tc;
    	
    	private NetClient thread;
    	
    	
    	/**
    	 * 根据tank的信息构建消息
    	 * @param tank
    	 */
    	public WinMsg(int playerId) {
    		this.playerId = playerId;
    	}
    	
    	/**
    	 * 根据消息产生的场所构建新的消息
    	 * @param tc
    	 */
    	public WinMsg(GameFrame 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 GameFrame getTc() {
    		return tc;
    	}
    
    	public void setTc(GameFrame 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 msg;
    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 basegame.GameFrame;
    
    /***************************************************************************
     * 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 GameFrame tc;
    	
    	
    	/**
    	 * 根据tank的信息构建消息
    	 * @param tank
    	 */
    	public YourTurnMsg(int playerId) {
    		this.playerId = playerId;
    	}
    	
    	/**
    	 * 根据消息产生的场所构建新的消息
    	 * @param tc
    	 */
    	public YourTurnMsg(GameFrame 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 GameFrame getTc() {
    		return tc;
    	}
    
    	public void setTc(GameFrame 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();
    		    getTc().turnIndex = id;
    			
    		} catch (IOException e) {
    			e.printStackTrace();
    		} catch (ClassNotFoundException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    
    	}
    
    }
    


  • 相关阅读:
    Backtrace stopped: previous frame identical to this frame (corrupt stack?)
    windows 10 无法启动 windows update 服务 错误 0x80070005 拒绝访问
    error LNK2019: 无法解析的外部符号 __imp_recv,该符号在函数 evthread_notify_drain_default 中被引用
    opencv3.1.0 在控制台程序中报错:winnt.h(6464): error C2872: ACCESS_MASK: 不明确的
    使用OCCI操作Oracle数据库写入中文乱码
    fatal error C1010: 在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include "stdafx.h""
    清空资源管理器访问过FTP的账号、密码
    Windows系统查看xxx.dll、xxx.lib文件的导出函数、依赖文件等信息的方法
    ConvertBSTRToString导致的内存泄漏
    mxnet.base.MXNetError: src/imperative/./imperative_utils.h:70: Check failed: inputs[i]->ctx().dev_mask() == ctx.dev_mask() (1 vs. 2)
  • 原文地址:https://www.cnblogs.com/daichangya/p/12959557.html
Copyright © 2011-2022 走看看