Files
youlegames/codes/games/client/Projects/sangelaok/js/suanfa.js
2026-02-04 23:47:45 +08:00

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;
}
}