📄 server.java
字号:
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 + -