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

📄 server.java

📁 用J2ME开发手机网络游戏——斗地主,调试环境:Win XP;J2ME
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
                	 data=callstr.getBytes();
                	 
                	 dgp = new DatagramPacket(data, data.length, table[tableId].add[0], table[tableId].p[0]);
                     s.send(dgp);
                     dgp = new DatagramPacket(data, data.length, table[tableId].add[1], table[tableId].p[1]);
                     s.send(dgp);
                     dgp = new DatagramPacket(data, data.length, table[tableId].add[2], table[tableId].p[2]);
                     s.send(dgp);
                     
            		 return;
            	 }
            	 
            	 table[tableId].call=(table[tableId].call+1)%3;
            	 String strcall="PLSCALL#2#";//还应该用mincalls
            	 data=strcall.getBytes();
            	 dgp = new DatagramPacket(data, data.length, table[tableId].add[table[tableId].call], table[tableId].p[table[tableId].call]);
                 s.send(dgp);
             }
             else if(redata.startsWith("OKCALLTWO"))
             {
            	 rcvData.getNextToken();
	             tableId=Integer.parseInt(rcvData.getNextToken())-1;
	             reid=Integer.parseInt(rcvData.getNextToken());
            	 table[tableId].callNum++;
            	 table[tableId].mincall=3;
            	 table[tableId].iscall=true;
            	 int k;
            	 for(k=0;k<3;k++)
            	 {
            		 if(table[tableId].id[k]==reid)
            			 break;
            	 }
            	 table[tableId].callState[k]=2;
            	 
            	 int tmp_dz=k;
            	 int tmp=2;
            	 for(int i=0;i<3;i++)
            	 {
            		 if(table[tableId].callState[i]>tmp)
            		 {
            			 tmp=table[tableId].callState[i];
            			 tmp_dz=i;
            		 }
            	 }
            	 table[tableId].dz=tmp_dz;//找出当前地主
            	 
            	 if(table[tableId].callNum==3)
            	 {
            		 int d=table[tableId].dz;
            		 int d_up=(d+2)%3;
            		 int d_down=(d+1)%3;
            		 
            		 String strpai="";
            		 table[tableId].allotLord();
            		 String pai3=String.valueOf(table[tableId].pai[51])+"#"
      		 			+String.valueOf(table[tableId].pai[52])+"#"
      		 			+String.valueOf(table[tableId].pai[53])+"#";
	            	 for(int i=0;i<20;i++)
	            	 {
	            		strpai=strpai+String.valueOf(table[tableId].dizhu[i])+"#";
	            	 }
	            	 strpai="LORDCARDS#"+strpai+pai3;
	            	 data=strpai.getBytes();
	            	 dgp = new DatagramPacket(data, data.length, table[tableId].add[d], table[tableId].p[d]);
                     s.send(dgp);//发给地主
                     
                     strpai="LORDDOWN#"+pai3;
                     data=strpai.getBytes();
	            	 dgp = new DatagramPacket(data, data.length, table[tableId].add[d_up], table[tableId].p[d_up]);
                     s.send(dgp);//发给地主的上家
                     
                     strpai="LORDUP#"+pai3;
                     data=strpai.getBytes();
	            	 dgp = new DatagramPacket(data, data.length, table[tableId].add[d_down], table[tableId].p[d_down]);
                     s.send(dgp);//发给地主的下家
            		 
                     //以下得到叫牌的倍数
                     int a=table[tableId].callState[0]>table[tableId].callState[1]?table[tableId].callState[0]:table[tableId].callState[1];
                	 int callTime=a>table[tableId].callState[2]?a:table[tableId].callState[2];
                	 String callstr="CALLTIME#"+String.valueOf(callTime)+"#";
                	 data=callstr.getBytes();
                	 
                	 dgp = new DatagramPacket(data, data.length, table[tableId].add[0], table[tableId].p[0]);
                     s.send(dgp);
                     dgp = new DatagramPacket(data, data.length, table[tableId].add[1], table[tableId].p[1]);
                     s.send(dgp);
                     dgp = new DatagramPacket(data, data.length, table[tableId].add[2], table[tableId].p[2]);
                     s.send(dgp);
            		 return;
            	 }
            	 
            	 
            	 table[tableId].call=(table[tableId].call+1)%3;
            	 String strcall="PLSCALL#3#";
            	 data=strcall.getBytes();
            	 dgp = new DatagramPacket(data, data.length, table[tableId].add[table[tableId].call], table[tableId].p[table[tableId].call]);
                 s.send(dgp);
             }
             else if(redata.startsWith("OKCALLTHREE"))
             {
            	 rcvData.getNextToken();
	             tableId=Integer.parseInt(rcvData.getNextToken())-1;
	             reid=Integer.parseInt(rcvData.getNextToken());
            	 table[tableId].callNum++;
            	 table[tableId].iscall=true;
            	 
            	 int k;
            	 for(k=0;k<3;k++)
            	 {
            		 if(table[tableId].id[k]==reid)
            			 break;
            	 }
            	 table[tableId].callState[k]=3;//叫牌状态置位1	 
            	 table[tableId].dz=k;
            	 
            	 int d=table[tableId].dz;
        		 int d_up=(d+2)%3;
        		 int d_down=(d+1)%3;
        		 
            	 String strpai="";
        		 table[tableId].allotLord();
        		 String pai3=String.valueOf(table[tableId].pai[51])+"#"
        		 	+String.valueOf(table[tableId].pai[52])+"#"
        		 	+String.valueOf(table[tableId].pai[53])+"#";
            	 for(int i=0;i<20;i++)
            	 {
            		strpai=strpai+String.valueOf(table[tableId].dizhu[i])+"#";
            	 }
            	 strpai="LORDCARDS#"+strpai+pai3;
            	 data=strpai.getBytes();
            	 dgp = new DatagramPacket(data, data.length, table[tableId].add[d], table[tableId].p[d]);
                 s.send(dgp);//发给地主
                 
                 strpai="LORDDOWN#"+pai3;
                 data=strpai.getBytes();
            	 dgp = new DatagramPacket(data, data.length, table[tableId].add[d_up], table[tableId].p[d_up]);
                 s.send(dgp);//发给地主的上家
                 
                 strpai="LORDUP#"+pai3;
                 data=strpai.getBytes();
            	 dgp = new DatagramPacket(data, data.length, table[tableId].add[d_down], table[tableId].p[d_down]);
                 s.send(dgp);//发给地主的下家
                 
                 //以下得到叫牌的倍数
                 int a=table[tableId].callState[0]>table[tableId].callState[1]?table[tableId].callState[0]:table[tableId].callState[1];
            	 int callTime=a>table[tableId].callState[2]?a:table[tableId].callState[2];
            	 String callstr="CALLTIME#"+String.valueOf(callTime)+"#";
            	 data=callstr.getBytes();
            	 
            	 dgp = new DatagramPacket(data, data.length, table[tableId].add[0], table[tableId].p[0]);
                 s.send(dgp);
                 dgp = new DatagramPacket(data, data.length, table[tableId].add[1], table[tableId].p[1]);
                 s.send(dgp);
                 dgp = new DatagramPacket(data, data.length, table[tableId].add[2], table[tableId].p[2]);
                 s.send(dgp);
             }
             else if(redata.startsWith("SENDCARDS"))
             {//SENDCARDS#房间号#用户帐号#牌数#3#5#...
            	 //这里应该判断玩家是否结束游戏...have not implement
            	 rcvData.getNextToken();
	             tableId=Integer.parseInt(rcvData.getNextToken())-1;
	             reid=Integer.parseInt(rcvData.getNextToken());
	             int nums=Integer.parseInt(rcvData.getNextToken());
	             int k;
            	 for(k=0;k<3;k++)
            	 {
            		 if(table[tableId].id[k]==reid)
            			 break;
            	 }
            	 int up=(k+2)%3;
            	 int down=(k+1)%3;
            	 String tmp="";
            	 for(int i=0;i<nums;i++)
            	 {
            		 tmp=tmp+rcvData.getNextToken()+"#";
            	 }
            	 String str="CARDSDOWN#"+String.valueOf(nums)+"#"+tmp;
            	 data=str.getBytes();
            	 dgp = new DatagramPacket(data, data.length, table[tableId].add[up], table[tableId].p[up]);
                 s.send(dgp);
                 
                 str="RIGHTSEND#";
                 data=str.getBytes();
            	 dgp = new DatagramPacket(data, data.length, table[tableId].add[down], table[tableId].p[down]);
                 s.send(dgp);
                 
                 
                 str="RIGHTUP#";//通知0座,2座正在出牌
            	 data=str.getBytes();
            	 dgp = new DatagramPacket(data, data.length, table[tableId].add[up], table[tableId].p[up]);
                 s.send(dgp);
                 
                 str="RIGHTTYPE#";//通知上家,我已出牌,须将righttype置为0
            	 data=str.getBytes();
            	 dgp = new DatagramPacket(data, data.length, table[tableId].add[up], table[tableId].p[up]);
                 s.send(dgp);
                 
                 str="CARDSUP#"+String.valueOf(nums)+"#"+tmp;
                 data=str.getBytes();
            	 dgp = new DatagramPacket(data, data.length, table[tableId].add[down], table[tableId].p[down]);
                 s.send(dgp);
                 
             }
             else if(redata.startsWith("NOSEND"))
             {//NOSEND#roomID#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;
            	 }
            	 int up=(k+2)%3;
            	 int down=(k+1)%3;
            	 
            	 String str="NOSENDDOWN#";
            	 data=str.getBytes();
            	 dgp = new DatagramPacket(data, data.length, table[tableId].add[up], table[tableId].p[up]);
                 s.send(dgp);
                 
                 str="NOSENDUP#";
                 data=str.getBytes();
            	 dgp = new DatagramPacket(data, data.length, table[tableId].add[down], table[tableId].p[down]);
                 s.send(dgp);
             }
             else if(redata.startsWith("NOLEFT"))
             {
            	 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;
            	 }
            	 int up=(k+2)%3;
            	 int down=(k+1)%3;
            	 String str="";
            	 if(table[tableId].dz==k)
            	 {
            		 str="OVERLOSE#";
                	 data=str.getBytes();
                	 dgp = new DatagramPacket(data, data.length, table[tableId].add[up], table[tableId].p[up]);
                     s.send(dgp);
                     
                     str="OVERLOSE#";
                     data=str.getBytes();
                	 dgp = new DatagramPacket(data, data.length, table[tableId].add[down], table[tableId].p[down]);
                     s.send(dgp);
            	 }
            	 else 
            	 {
            		 if(up==table[tableId].dz)
            		 {
            			 str="OVERLOSE#";
                    	 data=str.getBytes();
                    	 dgp = new DatagramPacket(data, data.length, table[tableId].add[up], table[tableId].p[up]);
                         s.send(dgp);
                         
                         str="OVERWIN#";
                         data=str.getBytes();
                    	 dgp = new DatagramPacket(data, data.length, table[tableId].add[down], table[tableId].p[down]);
                         s.send(dgp);
            		 }
            		 else if(down==table[tableId].dz)
            		 {
            			 str="OVERWIN#";
                    	 data=str.getBytes();
                    	 dgp = new DatagramPacket(data, data.length, table[tableId].add[up], table[tableId].p[up]);
                         s.send(dgp);
                         
                         str="OVERLOSE#";
                         data=str.getBytes();
                    	 dgp = new DatagramPacket(data, data.length, table[tableId].add[down], table[tableId].p[down]);
                         s.send(dgp);
            		 }
            	 }
            	 table[tableId].readyNum=0;
            	 table[tableId].readyState[0]=0;
            	 table[tableId].readyState[1]=0;
            	 table[tableId].readyState[2]=0;
             }//end of NOLEFT

⌨️ 快捷键说明

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