⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cardserver.java

📁 手机游戏对战平台。自己做的一个东东。 支持多个手机联网打游戏;采用socket链接通信。 平台:J2ME&JAVA
💻 JAVA
字号:
/* * To change this template, choose Tools | Templates * and open the template in the editor. */package control;import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.IOException;import java.util.ArrayList;import java.util.List;import java.util.Random;import java.util.logging.Level;import java.util.logging.Logger;import serverInf.GameServer;import serverInf.Sender;import serverInf.Serializable;import serverInf.ServerInterface;/** * * @author XJX */import java.util.Collections;import java.util.Comparator;public class CardServer implements ServerInterface{	private CardMessage cardmsg;	private GameServer gameserver;	private Sender[] senders;	private String[] userList;        boolean isInit=false;        private int[] turns={0,1,2};        private int mainturn=0;        boolean checkPair=false;        ArrayList<Integer>card0 =new ArrayList<Integer>();        ArrayList<Integer>card1 =new ArrayList<Integer>();        ArrayList<Integer>card2 =new ArrayList<Integer>();	public CardServer(int port,String[] userList){		this.userList=userList;		cardmsg=new CardMessage();		gameserver=new GameServer(port, model.PlatformState.MaxPlayers[1], cardmsg,this );	}	public void start(){		gameserver.start();	}                       public void gameStart(){//            if(isInit){//                    cardmsg=new CardMessage();//                    cardmsg.command=-1;//                    sendToAll(cardmsg);//                    return;//                }                if(senders[0]!=null&&senders[1]!=null&&senders[2]!=null){                    isInit=true;                    mainturn=0;                    initCard();                    sendCard();                    try {                        Thread.sleep(1000);                    } catch (InterruptedException ex) {                        Logger.getLogger(CardServer.class.getName()).log(Level.SEVERE, null, ex);                    }                    removeAllPair();                    fixCard();                                        sendCard();                }        }        	public void reveiveMessage(Serializable message) {		cardmsg=(CardMessage)message;                System.out.println(this.getClass().getName());                System.out.flush();                if(cardmsg.command==1&&checkPair==false){                                        removeAllPair();                    sendCard();                }else if(cardmsg.command==0){                   getCard(mainturn,cardmsg.leftNum);                   sendCard();                   try {                        Thread.sleep(1000);                    } catch (InterruptedException ex) {                        Logger.getLogger(CardServer.class.getName()).log(Level.SEVERE, null, ex);                    }                   removeAllPair();                   //checkPair=false;                   mainturn=(mainturn+1)%3;                   sendCard();                }	}	public void sendToAll(CardMessage msg){		for(int i=0;i<senders.length;i++){			if(senders[i]!=null){			senders[i].send(msg);			}		}	}                public void removeAllPair() {            try {            removePair(card0);            removePair(card1);            removePair(card2);            } catch (Exception e) {                System.err.println("removaAllPair: "+e);            }        }        public void removePair(ArrayList<Integer> card){            int i=0;            while (i<card.size()){                int originalSize=card.size();                int a=card.get(i);                if (a==52) {                    i++;                    if (i<card.size())                        a=card.get(i);                    else                        break;                }                int j=i+1;                while (j<card.size()){                    if (card.get(j)==52){                        j++;                    }                                        if (j<card.size() && card.get(j)%13==a%13){                                               card.remove(i);                                               card.remove(j-1);                        break;                    }                    j++;                }                if (card.size()==originalSize) {                    i++;                } else {                    i=0;                }            }                                         }        public void getCard(int turner,int cardIndex){            if(turner==0){                int card=card1.get(cardIndex);                card0.add(card);                card1.remove(cardIndex);            }else if(turner==1){                int card=card2.get(cardIndex);                card1.add(card);                card2.remove(cardIndex);            }else if(turner==2){                int card=card0.get(cardIndex);                card2.add(card);                card0.remove(cardIndex);            }        }       public void sendCard(){            int []Card0=new int[card0.size()];            for(int i=0;i<Card0.length;i++)Card0[i]=card0.get(i);            int []Card1=new int[card1.size()];            for(int i=0;i<Card1.length;i++)Card1[i]=card1.get(i);            int []Card2=new int[card2.size()];            for(int i=0;i<Card2.length;i++)Card2[i]=card2.get(i);            CardMessage msg;            if(mainturn==0){                 msg=new CardMessage("hi",0,1,Card1.length,Card2.length,Card0);                senders[0].send(msg);                 msg=new CardMessage("hi",0,2,Card2.length,Card0.length,Card1);                senders[1].send(msg);                 msg=new CardMessage("hi",0,0,Card0.length,Card1.length,Card2);                senders[2].send(msg);            }else if(mainturn==1){                msg=new CardMessage("",0,0,Card1.length,Card2.length,Card0);                senders[0].send(msg);                 msg=new CardMessage("",0,1,Card2.length,Card0.length,Card1);                senders[1].send(msg);                 msg=new CardMessage("",0,2,Card0.length,Card1.length,Card2);                senders[2].send(msg);            }else if(mainturn==2){                msg=new CardMessage("",0,2,Card1.length,Card2.length,Card0);                senders[0].send(msg);                 msg=new CardMessage("",0,0,Card2.length,Card0.length,Card1);                senders[1].send(msg);                 msg=new CardMessage("",0,1,Card0.length,Card1.length,Card2);                senders[2].send(msg);            }        }       public void initCard(){          int []cards=new int[53];          for(int i=0;i<cards.length;i++){              cards[i]=i;          }          Random rand=new Random();          for(int i=0;i<500;i++){          int a=rand.nextInt(53);          int b=rand.nextInt(53);          int tmp=cards[a];          cards[a]=cards[b];          cards[b]=tmp;          }          for(int i=0;i<cards.length;i++){              switch(i%3){                  case 0:                      card0.add(cards[i]);                      break;                  case 1:                      card1.add(cards[i]);                      break;                  case 2:                      card2.add(cards[i]);                      break;              }          }          /*          Comparator comp = new Mycomparator();          Collections.sort(card0,comp);           Collections.sort(card1,comp);          Collections.sort(card2,comp);           * */        }               public void getSenders(Sender[] senders) {		this.senders=senders;                	}    private void fixCard() {        int point = 0;        if (card0.size() == 0) {            point++;        }        if (card1.size() == 0) {            point++;        }        if (card2.size() == 0) {            point++;        }        while (point > 0) {            initCard();            sendCard();            try {                Thread.sleep(500);            } catch (InterruptedException ex) {                Logger.getLogger(CardServer.class.getName()).log(Level.SEVERE, null, ex);            }            removeAllPair();            point = 0;            if (card0.size() == 0) {                point++;            }            if (card1.size() == 0) {                point++;            }            if (card2.size() == 0) {                point++;            }        }    }    public void illegalExit(String userAccount) {        throw new UnsupportedOperationException("Not supported yet.");    }}class CardMessage implements Serializable {    public String user = "";    public int command;    public int turn = -1;    public int leftNum;    public int rightNum;    public int[] handCard = null;    public CardMessage() {    }    public CardMessage(String user, int command, int turn, int leftNum, int rightNum, int[] handCard) {        this.user = user;        this.command = command;//-1 someone leave;0 get card;1 remove card        this.turn = turn;        this.leftNum = leftNum;        this.rightNum = rightNum;        this.handCard = handCard;    }    public void deserialize(DataInputStream is) throws IOException {        user = is.readUTF();        command = is.readInt();        turn = is.readInt();        this.leftNum = is.readInt();        this.rightNum = is.readInt();        int len = is.readInt();        handCard = new int[len];        if (len != 0) {            for (int i = 0; i < len; i++) {                handCard[i] = is.readInt();            }        }    }    public void serialize(DataOutputStream os) throws IOException {        os.writeUTF(user);        os.writeInt(command);        os.writeInt(turn);        os.writeInt(leftNum);        os.writeInt(rightNum);        if (handCard != null) {            os.writeInt(handCard.length);            for (int i = 0; i < handCard.length; i++) {                os.writeInt(handCard[i]);            }        } else {            os.writeInt(0);        }    }        public String toString(){        return user+" "+command+" "+turn+" "+leftNum+" "+rightNum;    }}class Mycomparator implements Comparator {    public int compare(Object o1, Object o2) {        Integer p1 = (Integer) o1;        Integer p2 = (Integer) o2;        if (p1 < p2) {            return 0;        } else {            return 1;        }    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -