var g_NeedHunCount = 4;
var callTime = 0;
//408
var nTp = [
101,102,103,104,105,106,107,108,109,
201,202,203,204,205,206,207,208,209,
301,302,303,304,305,306,307,308,309,
401,402,403,404,405,406,407,
501,501,501,501,502,502,502,502,
];
//宁海麻将工具类
//检查是否用户当前是否已经听牌
function checkTingPai(seatData){
//当前用户的牌组
var samArr = pyPai(seatData.holds);
var tingPai = getTingArr(samArr,408);//没有百搭
var index = tingPai.indexOf(408);
if(index != -1){
tingPai.splice(index,1);
}
return njPai(tingPai);
}
//夹胡
function isJZH(seatData,hupai){
var holds = pyPai(seatData.holds);
var hupai = nTp[hupai];
var tmp1 = holds.indexOf(hupai-1);
if(tmp1 == -1){
return false;
}
holds.splice(tmp1,1);
var tmp2 = holds.indexOf(hupai+1);
if(tmp2 == -1){
return false;
}
holds.splice(tmp2,1);
return testCanHuPai(holds,408);
}
//是否在暗刻
function isAKH(seatData,hupai,kepai){
var holds = pyPai(seatData.holds);
var hp = nTp[hupai];
var kp = nTp[kepai];
holds.push(hp);
for(var i = 0; i < 3; i++){
var index1 = holds.indexOf(kp);
holds.splice(index1,1);
}
return testCanHuPai(holds,408);
}
//单调胡
function isDDH(seatData,hupai){
var holds = pyPai(seatData.holds);
var hupai = nTp[hupai];
var tmp1 = holds.indexOf(hupai);
if(tmp1 == -1){
return false;
}
holds.splice(tmp1,1);
return getCanPu(holds,408)
}
function canHus( hunNum, arr ){
sortArr(arr);
global.g_NeedHunCount;
tmpArr = [];
tmpArr = arr;
var arrLen = tmpArr.length;
if(arrLen <= 0){
if(hunNum >= 2){
return true;
}
return false;
}
if(hunNum < getModNeedNum(arrLen,true)){
return false;
}
for(var i = 0 ; i < arrLen ; i++ ){
if(i == (arrLen - 1 )){ // # 如果是最后一张牌
if(hunNum > 0){
var tmp = tmpArr[i];
hunNum = hunNum - 1;
var index = tmpArr.indexOf(tmpArr[i]);
tmpArr.splice(index,1);
g_NeedHunCount = 4;
getNeedHunInSub(tmpArr, 0);
if(g_NeedHunCount <= hunNum){
return true;
}
hunNum = hunNum +1;
tmpArr.push(tmp);
sortArr(tmpArr);
}
}
else{
if (( i+2 ) == arrLen || (tmpArr[i] % 10) != (tmpArr[i+2] % 10)){
if(test2Combine( tmpArr[i], tmpArr[i+1])){
var tmp1 = tmpArr[i];
var tmp2 = tmpArr[i+1];
var index1 = tmpArr.indexOf(tmp1);
tmpArr.splice(index1,1);
var index2 = tmpArr.indexOf(tmp2);
tmpArr.splice(index2,1);
g_NeedHunCount = 4;
getNeedHunInSub(tmpArr, 0);
if(g_NeedHunCount <= hunNum){
// print 'type:',tmp1/100, 'value', tmp1%10, 2
return true;
}
tmpArr.push(tmp1) ;
tmpArr.push(tmp2) ;
sortArr(tmpArr) ;
}
}
if(hunNum > 0 && (tmpArr[i] % 10) != (tmpArr[i+1] % 10)){
hunNum = hunNum -1 ;
var tmp = tmpArr[i] ;
var index1 = tmpArr.indexOf(tmp);
tmpArr.splice(index1,1);
g_NeedHunCount = 4;
getNeedHunInSub(tmpArr, 0);
if(g_NeedHunCount <= hunNum){
//# print 'type:',tmp/100, 'value', tmp%10, 3
return true;
}
hunNum = hunNum +1;
tmpArr.push( tmp );
sortArr( tmpArr );
}
}
}
return false;
}
function copyArr(tmpArr){
var tmp = [];
for(var i =0;i<tmpArr.length;i++){
tmp[i] = tmpArr[i];
}
return tmp;
}
//nodejs => python
function pyPai(holds){
var len = holds.length;
var pai = new Array(len);
for(var i = 0 ; i < len ; i++){
var tmp = holds[i];
pai[i] = nTp[tmp];
}
return pai;
}
function njPai(tingPai){
var len = tingPai.length;
var pai = new Array(len);
for(var i = 0 ; i < len ; i++){
var index = nTp.indexOf(tingPai[i]);
pai[i] = index;
}
return pai;
}
//1筒 2条 3万 4字
var g_mjsArr = [
101, 102, 103, 104, 105, 106, 107, 108, 109,
101, 102, 103, 104, 105, 106, 107, 108, 109,
101, 102, 103, 104, 105, 106, 107, 108, 109,
101, 102, 103, 104, 105, 106, 107, 108, 109,
201, 202, 203, 204, 205, 206, 207, 208, 209,
201, 202, 203, 204, 205, 206, 207, 208, 209,
201, 202, 203, 204, 205, 206, 207, 208, 209,
201, 202, 203, 204, 205, 206, 207, 208, 209,
301, 302, 303, 304, 305, 306, 307, 308, 309,
301, 302, 303, 304, 305, 306, 307, 308, 309,
301, 302, 303, 304, 305, 306, 307, 308, 309,
301, 302, 303, 304, 305, 306, 307, 308, 309,
401, 402, 403, 404, 405, 406, 407,
401, 402, 403, 404, 405, 406, 407,
401, 402, 403, 404, 405, 406, 407,
401, 402, 403, 404, 405, 406, 407,
501, 501, 501, 501, 502, 502, 502, 502,
];
var g_testMjsArr = [