• 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();
    		}
    
    	}
    
    }
    


  • 相关阅读:
    21.09.12模拟 P2809 hzwer 爱折纸
    21.09.13模拟 保存名画
    21.09.13模拟赛 魔法传输
    21.09.13模拟 分割金币
    21.09.13模拟 友谊值
    21.09.10模拟 朗格拉日计数
    21.09.10模拟 雷神领域
    P4551 最长异或路径
    P2894 [USACO08FEB]Hotel G
    NOIP复习(总结套路)
  • 原文地址:https://www.cnblogs.com/daichangya/p/12959557.html
Copyright © 2020-2023  润新知