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


  • 相关阅读:
    原生JS实现无缝轮播
    原生JS模拟百度搜索框
    2016年终总结:一份来自跨界喜剧人的告白
    PHP学习笔记
    html5吹牛扯淡篇,闲话内容。
    html5+css3+jquery完成响应式布局
    jquery的animate({})动画整理
    函数的使用和选择
    jquery函数理解与运用
    老生长谈的$.extend()方法
  • 原文地址:https://www.cnblogs.com/daichangya/p/12959566.html
Copyright © 2020-2023  润新知