648 lines
9.3 KiB
JavaScript
648 lines
9.3 KiB
JavaScript
var suanfa = suanfa || {
|
|
//////////////普通牌型///////////////////
|
|
putong:function(paiid,jizhang,sheng){
|
|
var duizi = [];
|
|
var type = [];
|
|
var shengpai = sheng;
|
|
for(var a=0;a<jizhang;a++)
|
|
{
|
|
if(paiid[a]==53)
|
|
{
|
|
duizi[a]=16;
|
|
}
|
|
if(paiid[a]==54)
|
|
{
|
|
duizi[a]=17;
|
|
}
|
|
if(paiid[a]!=54 && paiid[a]!=53)
|
|
{
|
|
duizi[a]=paiid[a]%13;
|
|
if(duizi[a]==2)
|
|
{
|
|
duizi[a]=15;
|
|
}
|
|
if(duizi[a]==1)
|
|
{
|
|
duizi[a]=14;
|
|
}
|
|
if(duizi[a]==0)
|
|
{
|
|
duizi[a]=13;
|
|
}
|
|
}
|
|
|
|
}
|
|
///////单牌 /////////////////////
|
|
if(jizhang==1)
|
|
{
|
|
type[0]=1;
|
|
type[1]='danzhang';
|
|
type[2]=duizi;
|
|
return type;
|
|
|
|
}
|
|
//////一对 ///// /////////////////
|
|
if(jizhang==2)
|
|
{
|
|
if(duizi[0]==duizi[1])
|
|
{
|
|
type[0]=1;
|
|
type[1]='yidui';
|
|
type[2]=duizi;
|
|
return type ;
|
|
}
|
|
type[0]=0;
|
|
return type;
|
|
|
|
|
|
}
|
|
|
|
/////////////三张牌//////////////////////
|
|
if(jizhang==3)
|
|
{
|
|
////////////三个头///////////////
|
|
if(duizi[0]==duizi[1]&&duizi[1]==duizi[2]&&sheng!=0)
|
|
{
|
|
type[0]=0;
|
|
return type;
|
|
}
|
|
else
|
|
{
|
|
var wushik = suanfa.wushik(duizi,jizhang);
|
|
if(wushik[0]!=0)
|
|
{
|
|
return wushik;
|
|
}
|
|
else
|
|
{
|
|
var wangzha = suanfa.wangzha(duizi,jizhang);
|
|
if(wangzha[0]!=0)
|
|
{
|
|
return wangzha ;
|
|
}
|
|
else
|
|
{
|
|
var feiji=suanfa.feiji(duizi,jizhang,shengpai);
|
|
return feiji ;
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
if(jizhang>=4)
|
|
{
|
|
if(jizhang==4)
|
|
{
|
|
var wangzha = suanfa.wangzha(duizi,jizhang);
|
|
if(wangzha[0]!=0)
|
|
{
|
|
return wangzha;
|
|
}
|
|
}
|
|
var zha = 0;
|
|
//////////炸弹//////////////////
|
|
for (var a=0;a<jizhang-1;a++)
|
|
{
|
|
if(duizi[a]==duizi[a+1])
|
|
{
|
|
zha=zha+1;
|
|
}
|
|
}
|
|
if(zha==jizhang-1)
|
|
{
|
|
type[0]=1;
|
|
type[1]='zhadan';
|
|
type[2]=duizi;
|
|
return type ;
|
|
}
|
|
else
|
|
{ //////////////顺子////////////////
|
|
var shunzi=suanfa.shunzi(duizi,jizhang);
|
|
if(shunzi[0]!=0)
|
|
{
|
|
return shunzi ;
|
|
}
|
|
else
|
|
{//////////////连对////////////////
|
|
var liandui=suanfa.liandui(duizi,jizhang);
|
|
if(liandui[0]!=0)
|
|
{
|
|
return liandui ;
|
|
}
|
|
else
|
|
{
|
|
///////////////多个5 10 K/////////
|
|
var wushik = suanfa.wushik(duizi,jizhang);
|
|
if(wushik[0]!=0)
|
|
{
|
|
return wushik;
|
|
}
|
|
else
|
|
{//////////////飞机或者三带二////////////////
|
|
var feiji=suanfa.feiji(duizi,jizhang,shengpai);
|
|
return feiji ;
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
},
|
|
///////////////////////////判定顺子////////////////////////////
|
|
shunzi :function (id,jizhang){
|
|
var type = [];
|
|
var duizi = id;
|
|
if(jizhang<5 || jizhang>12)
|
|
{
|
|
type[0]=0;
|
|
return type;
|
|
}
|
|
|
|
for(var a=0;a<jizhang-1;a++)
|
|
{
|
|
var dangqian=id[a];
|
|
var next = id[a+1];
|
|
if(dangqian==15 || dangqian==16 ||dangqian==17 || next==15|| next==16|| next==17 )
|
|
{
|
|
type[0]=0;
|
|
return type;
|
|
}
|
|
else
|
|
{
|
|
if(dangqian-next!=1)
|
|
{
|
|
type[0]=0;
|
|
return type;
|
|
}
|
|
|
|
}
|
|
}
|
|
type[0]=1;
|
|
type[1]='shunzi';
|
|
type[2]=duizi;
|
|
return type ;
|
|
},
|
|
|
|
|
|
///////////////////判定连对////////////////////////
|
|
liandui:function(id,jizhang){
|
|
var type = [];
|
|
var duizi = id;
|
|
if(jizhang<4 || jizhang%2!=0)
|
|
{
|
|
type[0]=0;
|
|
return type;
|
|
}
|
|
|
|
for(var a=0;a<jizhang;a=a+2)
|
|
{
|
|
var dangqian = id[a];
|
|
var next = id[a+1];
|
|
var two = id [a+3];
|
|
if(dangqian==15 || dangqian==16 ||dangqian==17 || next==15|| next==16|| next==17 )
|
|
{
|
|
type[0]=0;
|
|
return type;
|
|
}
|
|
if(dangqian!=next)
|
|
{
|
|
type[0]=0;
|
|
return type;
|
|
}
|
|
if(a<jizhang-2)
|
|
{
|
|
if(dangqian-two!=1)
|
|
{
|
|
type[0]=0;
|
|
return type;
|
|
}
|
|
}
|
|
}
|
|
type[0]=1;
|
|
type[1]='liandui';
|
|
type[2]=duizi;
|
|
return type ;
|
|
|
|
},
|
|
/////////////////5 10 K 判定////////////////////////////////////
|
|
wushik:function(id,jizhang){
|
|
var type = [];
|
|
var duizi = id;
|
|
var paixu=[0,0,0];
|
|
var wu = 0;
|
|
var shi = 0;
|
|
var laok = 0;
|
|
|
|
|
|
for(var a=0;a<jizhang;a++)
|
|
{
|
|
if(id[a]==5)
|
|
{
|
|
paixu[0]=paixu[0]+1;
|
|
wu=wu+1;
|
|
}
|
|
if(id[a]==10)
|
|
{
|
|
paixu[1]=paixu[1]+1;
|
|
shi=shi+1;
|
|
}
|
|
if(id[a]==13)
|
|
{
|
|
paixu[2]=paixu[2]+1;
|
|
laok=laok+1;
|
|
}
|
|
if(id[a]!=5 &&id[a]!=10 && id[a]!=13)
|
|
{
|
|
type[0]=0;
|
|
return type;
|
|
}
|
|
}
|
|
for(var a=0;a<3;a++)
|
|
{
|
|
for(var b=a+1;b<3;b++)
|
|
{
|
|
if(paixu[a]<paixu[b])
|
|
{
|
|
var da = paixu[b];
|
|
paixu[b]=paixu[a];
|
|
paixu[a]=da;
|
|
}
|
|
}
|
|
}
|
|
if(paixu[2]==2)
|
|
{
|
|
type[0]=0;
|
|
return type;
|
|
}
|
|
if(paixu[2]!=paixu[0] || paixu[2]!=paixu[1])
|
|
{
|
|
if(paixu[2]<3)
|
|
{
|
|
type[0]=0;
|
|
return type;
|
|
}
|
|
}
|
|
if(Utl.getMySeat()==zhuangjia)
|
|
{
|
|
if(paixu[2]>1)
|
|
{
|
|
type[0]=0;
|
|
return type;
|
|
}
|
|
}
|
|
for(var a=0;a<wu;a++)
|
|
{
|
|
bianid.push(zshu[jizhang-wu+a]);
|
|
}
|
|
|
|
for(var a=0;a<shi;a++)
|
|
{
|
|
bianid.push(zshu[jizhang-(wu+shi)+a]);
|
|
}
|
|
for(var a=0;a<laok;a++)
|
|
{
|
|
bianid.push(zshu[a]);
|
|
}
|
|
bianid.splice(0,jizhang);
|
|
|
|
|
|
|
|
|
|
type[0]=1;
|
|
type[1]='wushik';
|
|
type[2]=duizi;
|
|
type[3]=paixu[2];
|
|
return type ;
|
|
|
|
|
|
|
|
|
|
},
|
|
////////// 三王炸 四王炸 ////////////////////////////////
|
|
wangzha:function(id,jizhang){
|
|
var type = [];
|
|
var duizi = id;
|
|
if(jizhang==3)
|
|
{
|
|
if((id[0]==17&&id[1]==16&&id[2]==16) || (id[0]==17&&id[1]==17&&id[2]==16))
|
|
{
|
|
type[0]=1;
|
|
type[1]='sanwangzha';
|
|
type[2]=duizi;
|
|
return type ;
|
|
}
|
|
type[0]=0;
|
|
return type;
|
|
}
|
|
|
|
if(jizhang==4)
|
|
{
|
|
if(id[0]==17&&id[1]==17&&id[2]==16&&id[3]==16)
|
|
{
|
|
type[0]=1;
|
|
type[1]='siwangzha';
|
|
type[2]=duizi;
|
|
return type ;
|
|
}
|
|
type[0]=0;
|
|
return type;
|
|
}
|
|
|
|
|
|
|
|
},
|
|
///////////////飞机//////////////////////////////////////
|
|
feiji:function(id,jizhang,shengpai){
|
|
var type = [];
|
|
var duizi = [];
|
|
var jigesan = 0;
|
|
var duibi=[];
|
|
for(var a=0;a<jizhang;a++)
|
|
{
|
|
var dangqian = id[a];
|
|
var next = id [a+1];
|
|
var two = id[a+2];
|
|
if(dangqian==next && next==two )
|
|
{
|
|
|
|
if(jizhang<=5)
|
|
{ jigesan=jigesan+1;
|
|
id.splice(a,3);
|
|
id.unshift(100);
|
|
id.unshift(101);
|
|
id.unshift(102);
|
|
bianid.unshift(bianid[a+2]);
|
|
bianid.splice(a+3,1);
|
|
bianid.unshift(bianid[a+2]);
|
|
bianid.splice(a+3,1);
|
|
bianid.unshift(bianid[a+2]);
|
|
bianid.splice(a+3,1);
|
|
}
|
|
else
|
|
{
|
|
if(dangqian!=15)
|
|
{
|
|
if(jigesan==0)
|
|
{
|
|
duibi[0]=dangqian;
|
|
jigesan=jigesan+1;
|
|
bianid.unshift(bianid[a+2]);
|
|
bianid.splice(a+3,1);
|
|
bianid.unshift(bianid[a+2]);
|
|
bianid.splice(a+3,1);
|
|
bianid.unshift(bianid[a+2]);
|
|
bianid.splice(a+3,1);
|
|
a=a+2;
|
|
|
|
|
|
}
|
|
else
|
|
{
|
|
|
|
if(duibi[0]-dangqian==jigesan)
|
|
{
|
|
|
|
if(dangqian==duibi[jigesan-1])
|
|
{
|
|
a=a+2;
|
|
}
|
|
else
|
|
{
|
|
jigesan=jigesan+1;
|
|
duibi[jigesan-1]=dangqian;
|
|
bianid.unshift(bianid[a+2]);
|
|
bianid.splice(a+3,1);
|
|
bianid.unshift(bianid[a+2]);
|
|
bianid.splice(a+3,1);
|
|
bianid.unshift(bianid[a+2]);
|
|
bianid.splice(a+3,1);
|
|
if(shengpai==0)
|
|
{
|
|
if(kechu==0)
|
|
{
|
|
if(5*jigesan>=jizhang)
|
|
{
|
|
break;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if(bijiao.length!=0&&bijiao[1]=='feiji')
|
|
{
|
|
if(bijiao[2].length/5==jigesan)
|
|
{
|
|
break;
|
|
}
|
|
|
|
|
|
}
|
|
else
|
|
{
|
|
if(5*jigesan>=jizhang)
|
|
{
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
}
|
|
else
|
|
{
|
|
if(5*jigesan>=jizhang)
|
|
{
|
|
break;
|
|
}
|
|
a=a+2;
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
else
|
|
{
|
|
if(duibi[jigesan-1]==dangqian)
|
|
{
|
|
a=a+2;
|
|
}
|
|
else
|
|
{
|
|
if(5*jigesan>=jizhang)
|
|
{
|
|
break;
|
|
}
|
|
else
|
|
{
|
|
a=a-1;
|
|
jigesan=0;
|
|
for(var b=0;b<jizhang;b++)
|
|
{
|
|
bianid[b]=zshu[b];
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
|
|
}
|
|
}
|
|
|
|
for(var a=0;a<jigesan*3;a++)
|
|
{
|
|
for(var b=a+1;b<jigesan*3;b++)
|
|
{
|
|
var daxiao = bianid[a]%13;
|
|
var daxiaoyi = bianid[b]%13;
|
|
if(daxiao==0)
|
|
{
|
|
daxiao=13;
|
|
}
|
|
if(daxiao==1)
|
|
{
|
|
daxiao=14;
|
|
}
|
|
if(daxiaoyi==0)
|
|
{
|
|
daxiaoyi=13;
|
|
}
|
|
if(daxiaoyi==1)
|
|
{
|
|
daxiaoyi=14;
|
|
}
|
|
|
|
if(daxiaoyi>daxiao)
|
|
{
|
|
var jiaohuan=bianid[b];
|
|
bianid[b]=bianid[a];
|
|
bianid[a]=jiaohuan;
|
|
}
|
|
}
|
|
|
|
}
|
|
for(var a=0;a<jizhang;a++)
|
|
{
|
|
zshu[a]=bianid[a];
|
|
}
|
|
if(jizhang>=jigesan*3 && jizhang<jigesan*5 && shengpai==0)
|
|
{
|
|
for(var a=0;a<(jigesan*5-jizhang);a++)
|
|
{
|
|
zshu.push(a+200);
|
|
}
|
|
for(var a=0;a<zshu.length;a++)
|
|
{
|
|
duizi[a]=zshu[a]%13;
|
|
}
|
|
if(jigesan==1&&jizhang<=5)
|
|
{
|
|
type[0]=1;
|
|
type[1]='sandaier';
|
|
type[2]=duizi;
|
|
return type ;
|
|
}
|
|
else
|
|
{
|
|
|
|
type[0]=1;
|
|
type[1]='feiji';
|
|
type[2]=duizi;
|
|
type[3]=jigesan;
|
|
return type ;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
for(var a=0;a<zshu.length;a++)
|
|
{
|
|
duizi[a]=zshu[a]%13;
|
|
|
|
}
|
|
if(jizhang==jigesan*5)
|
|
{
|
|
if(jigesan==1)
|
|
{
|
|
type[0]=1;
|
|
type[1]='sandaier';
|
|
type[2]=duizi;
|
|
return type ;
|
|
}
|
|
else
|
|
{
|
|
|
|
type[0]=1;
|
|
type[1]='feiji';
|
|
type[2]=duizi;
|
|
type[3]=jigesan;
|
|
|
|
return type ;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
type[0]=0;
|
|
return type;
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|