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

📄 server.java

📁 用J2ME开发手机网络游戏——斗地主,调试环境:Win XP;J2ME
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
             else if(redata.startsWith("READY"))
             {//READY#tableId#ID
            	 rcvData.getNextToken();
            	 tableId=Integer.parseInt(rcvData.getNextToken())-1;
	             reid=Integer.parseInt(rcvData.getNextToken());
	             int k;
            	 for(k=0;k<3;k++)
            	 {
            		 if(table[tableId].id[k]==reid)
            			 break;
            	 }
            	 table[tableId].readyState[k]=1;
            	 table[tableId].readyNum++;
            	 
            	 int up=(k+2)%3;
            	 int down=(k+1)%3;
            	 String str="";
            	 if(table[tableId].readyNum==2)
            	 {
            		 if(table[tableId].readyState[up]==1)
            		 {
            			 str="READYDOWN#";
            			 data=str.getBytes();
                    	 dgp = new DatagramPacket(data, data.length, table[tableId].add[up], table[tableId].p[up]);
                         s.send(dgp);
                         
                         str="READYUP#";
                         data=str.getBytes();
                    	 dgp = new DatagramPacket(data, data.length, table[tableId].add[k], table[tableId].p[k]);
                         s.send(dgp);
            		 }
            		 else if(table[tableId].readyState[down]==1)
            		 {
            			 str="READYUP#";
            			 data=str.getBytes();
                    	 dgp = new DatagramPacket(data, data.length, table[tableId].add[down], table[tableId].p[down]);
                         s.send(dgp);
                         
                         str="READYDOWN#";
                         data=str.getBytes();
                    	 dgp = new DatagramPacket(data, data.length, table[tableId].add[k], table[tableId].p[k]);
                         s.send(dgp);
            		 }
            	 }
            	 else if(table[tableId].readyNum==3)//
            	 {
            		 str="TWOREADY#";
            		 for(int i=0;i<3;i++)
            		 {
            			 data=str.getBytes();
	                     dgp = new DatagramPacket(data, data.length, table[tableId].add[i], table[tableId].p[i]);
	                     s.send(dgp);
            		 }
            		 //
            		 table[tableId].clear();
            		 table[tableId].allotCards();//洗牌
	            	 String strpai="";
	            	 for(int i=0;i<17;i++)
	            	 {
	            		strpai=strpai+String.valueOf(table[tableId].play_a[i])+"#";
	            	 }
	            	 strpai="PEASANTCARDS#"+strpai;
	            	 data=strpai.getBytes();
	            	 dgp = new DatagramPacket(data, data.length, table[tableId].add[0], table[tableId].p[0]);
                     s.send(dgp);//发给玩家1
                     
                     strpai="";
                     for(int i=0;i<17;i++)
	            	 {
	            		strpai=strpai+String.valueOf(table[tableId].play_b[i])+"#";
	            	 }
	            	 strpai="PEASANTCARDS#"+strpai;
	            	 data=strpai.getBytes();
	            	 dgp = new DatagramPacket(data, data.length, table[tableId].add[1], table[tableId].p[1]);
                     s.send(dgp);//发给玩家2
                     
                     strpai="";
                     for(int i=0;i<17;i++)
	            	 {
	            		strpai=strpai+String.valueOf(table[tableId].play_c[i])+"#";
	            	 }
	            	 strpai="PEASANTCARDS#"+strpai;
	            	 data=strpai.getBytes();
	            	 dgp = new DatagramPacket(data, data.length, table[tableId].add[2], table[tableId].p[2]);
                     s.send(dgp);//发给玩家3
	            	 
	            	 Random random=new Random();//随机数决定谁先叫牌
	            	 int kk=(random.nextInt())%3;
	            	 table[tableId].call=Math.abs(kk);
	            	 String strcall="PLSCALL#1#";
	            	 data=strcall.getBytes();
	            	 dgp = new DatagramPacket(data, data.length, table[tableId].add[table[tableId].call], table[tableId].p[table[tableId].call]);
                     s.send(dgp);
            		 
            	 }
             }
		  }//end of while
	}//end of main
}//end of class
class Table
{
	InetAddress add[]=new InetAddress[3];
	int p[]=new int[3];//port
	String nickname[]=new String[3];
	String score[]=new String[3];
	String sex[]=new String[3];
	int state[]={0,0,0};
	int id[]={0,0,0};
	int num=0;//number of players joined in.
	int readyNum=0;//再来一次开牌的话
	int readyState[]={0,0,0};
	//
	int callState[]={-1,-1,-1};
	int callNum=0;
	int mincall=1;
	int call=0;//下次叫牌的玩家
	boolean iscall=false;//只要有玩家叫牌,置为true;
	int dz=-1;
	//
	int pai[] = new int[54]; //用于保存取出来的54个随机数
	int play_a[] = new int[17];
	int play_b[] = new int[17];
	int play_c[] = new int[17]; //存放a,b,c三个玩家的牌
	int dizhu[]=new int[20];//存放地主的牌
	Random rnd=new Random(System.currentTimeMillis()); //随机数xuan
	public void allotCards()
	{//分配牌
		int paishu=0;
		int qu=0;
		int n=0;
		while(paishu<54) //while语句的作用,机选出54个数据,按选出来的顺序依次放在pai[]中
		{
			qu = Math.abs(rnd.nextInt())%54+1;
			for(int m = 0; m<=paishu; m++) //判断机选出来的数值qu是否已经在pai[]中
			{
				if(pai[m]==qu)
				{
					n=0;
					break;
				}
				else n= 1;
			}
			if(n==1) //如果机选出来的数值不在pai[]中,则把qu的值加入到pai[]里面相应的位置
			{
				pai[paishu]=qu;
				paishu++;
			}
		}
		int k,m;
		for(k=0,m=0;m<17;k++,m++)
		{
			play_a[k] = pai[m];
		}
		for(k=0,m=17;m<34;k++,m++)
		{
			play_b[k] = pai[m];
		}
		for(k=0,m=34;m<51;k++,m++)
		{
			play_c[k] = pai[m];
		}
		Arrays.sort(play_a);
		Arrays.sort(play_b);
		Arrays.sort(play_c);
	}
	public void allotLord()
	{
		if(dz==0)
		{
			for(int i=0;i<17;i++)
				dizhu[i]=play_a[i];
			dizhu[17]=pai[51];
			dizhu[18]=pai[52];
			dizhu[19]=pai[53];
		}
		else if(dz==1)
		{
			for(int i=0;i<17;i++)
				dizhu[i]=play_b[i];
			dizhu[17]=pai[51];
			dizhu[18]=pai[52];
			dizhu[19]=pai[53];
		}
		else if(dz==2)
		{
			for(int i=0;i<17;i++)
				dizhu[i]=play_c[i];
			dizhu[17]=pai[51];
			dizhu[18]=pai[52];
			dizhu[19]=pai[53];
		}
		Arrays.sort(dizhu);
	}
	public void clear()
	{
		callState[0]=-1;
		callState[1]=-1;
		callState[2]=-1;
		callNum=0;
		mincall=1;
		call=(call+1)%3;
		
		
	}
}//end of class table
class StringParse {
    private int currentPosition;
    private int maxPosition;
    private String str;
    private StringBuffer unstr = null;
    private char delimiter;
    
    //用于解析的构造函数
    public StringParse(String source, char del) {
        currentPosition = 0;
        str = source;
        maxPosition = source.length();
        delimiter = del;
    }
    //用于组装的构造函数
    public StringParse(char del) {
        unstr = new StringBuffer();
        unstr.append('#');
        delimiter = del; 
    }
    public String getNextToken() {
        if(currentPosition >= maxPosition)
            return " ";
        char c;
        boolean begin = false;
        StringBuffer nextString = new StringBuffer();
       while(currentPosition < maxPosition)
        {
           c = str.charAt(currentPosition);
           if(c != delimiter) 
           {
               nextString.append(c);
               begin = true;
           }
           else//处理特殊情况
           {
               if(currentPosition + 1 == maxPosition) break;
               else 
               {
                  c = str.charAt(currentPosition + 1); 
                  if(c == delimiter) 
                  {
                      nextString.append(delimiter);
                      begin = true;
                      currentPosition++;
                  }
                  else if(begin)
                  {
                      break;
                  }
               }
           }
           currentPosition++;
        }
        
       if(!begin) return " ";
       return nextString.toString();
    } 
    //服务器端使用
     public void setNextToken(String sub) {
         if(sub == null)
         {
              unstr.append("NULL#");
              return;
         }
         int len = sub.length();
         char c;
         for(int i = 0;i < len; i++ )
         {
             c = sub.charAt(i);
             unstr.append(c);
             if(c == '#') unstr.append('#');
         }
         if(len == 0) unstr.append("NULL");
         unstr.append('#');
    } 
    
     public String getString()
     {
          return unstr.toString();
     }
}

⌨️ 快捷键说明

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