d.tip_tp = function () { var tip_tp = []; var tip_ting = []; //手牌 var syp = d.c(d.hand[C_Player.seat]); if (d.user_ctrl[3] > 0) { syp[0].push(d.user_ctrl[3]); } //手牌长度 var l = syp[0].length var last_pai = 0; for (var i = 0; i < l; i++) { var qu_pai = d.c(syp); //判断是否一样 if (qu_pai[0][i] == last_pai) { continue; } last_pai = qu_pai[0][i]; qu_pai[0].splice(i, 1);//提出此牌 //qu_pai[0].push(d.jing[1]); var ting_tip = d.hu_Judge(qu_pai, d.jing); if (ting_tip.length > 0) { //console.log(JSON.stringify(qu_pai)+","+syp[0][i]); tip_tp.push(syp[0][i]); tip_ting.push(ting_tip); } } d.ting_pai = { "tip_tp": tip_tp, "tip_ting": tip_ting }; console.log(d.ting_pai); //返回听牌 return tip_tp; } /*-----------------听牌配置------------------*/ var hu_ting = { pai : [1,2,3,4,5,6,7,8,9,11,12,13,14,15,16,17,18,19,21,22,23,24,25,26,27,28,29,31,32,33,34,41,42,43],//枚举牌池 feng_shun : 1,//风牌能否组顺,0不能,1能 hu_7d : true, //能否胡七对 hu_13l : true, //能否胡13烂 hu_Q1s : false, //能否胡清一色 Q1s_pai : 0,//清一色"胡法" 有没有牌个数限制 没有输入0 如"限制所有手牌为14个" hu_Z1s : false, //能否胡字一色 Z1s_pai : 0,//字一色"胡法" 有没有牌个数限制 没有输入0 如"限制所有手牌为14个" tips_card_img : [2484,2485],//推荐牌动画的2个精灵 第一个背框,第二个麻将 } /**************推荐牌***************/ d.tips_Card = function () { var fun_tips_card = function (ting) { var hands = d.c(d.hand[C_Player.seat]);//手牌 if (d.user_ctrl[3] > 0) {//控制权有摸的牌添加摸得牌 hands[0].push(d.user_ctrl[3]); } var arr1 = Util.ordArray(Util.copyArray(hands[0])); var peng_gang = []; for(var i = 1; i< hands.length ; i++){//获取碰的牌 if(hands[i].length == 3 && hands[i][0] == hands[i][2]){ peng_gang.push(hands[i][0]); } } for (var i = 0; i < arr1.length; i++) { //计算jing的个数,数组里剔除jing,剔除可以加杠的牌 if (arr1[i] == d.jing[0] || arr1[i] == d.jing[1] || peng_gang.indexOf(arr1[i]) > -1) { arr1.splice(i, 1); i--; } } var card_mode = 0; var buildArray = [[], [], [], [], []]; //牌分类 for (var i = 0; i < arr1.length; i++) { var index = parseInt(arr1[i] / 10); buildArray[index].push(arr1[i]); } var card = [[], [], []]; /*******************13烂查烂牌***********************/ if (hu_ting.hu_13l && hands[0].length == 14) {//13烂 for (var i = 0; i < 3; i++) { card_mode = Util.ordArray(Util.copyArray(buildArray[i])); if (card_mode.length > 0) { for (var k = 0; k < card_mode.length; k++) { if (hu_ting.hu_13l_147 &&( !(card_mode[k - 1] == undefined || card_mode[k] - card_mode[k - 1] == 3) || !(card_mode[k + 1] == undefined || card_mode[k + 1] - card_mode[k] == 3))) { card[1].push(card_mode[k+1]); card_mode.splice(k+1, 1); k--; } else if (!(card_mode[k - 1] == undefined || card_mode[k] - card_mode[k - 1] > 2) || !(card_mode[k + 1] == undefined || card_mode[k + 1] - card_mode[k] > 2)) { if(card_mode.length == 3 && (card_mode[0]%10 == 2||card_mode[0]%10 ==3) && (card_mode[2] - card_mode[0] < 6 && card_mode[2] - card_mode[0] > 3) && card_mode[2] - card_mode[1] > 2 ){ card[1].push(card_mode[k]); card_mode.splice(k, 1); k--; } else { card[1].push(card_mode[k+1]); card_mode.splice(k+1, 1); k--; } } } } } for (var i = 3; i < 5; i++) { card_mode = Util.ordArray(Util.copyArray(buildArray[i])); for (var j = 0; j < card_mode.length; j++) { if (card_mode[j] == card_mode[j + 1]) { card[0].push(card_mode[j]); } } } if (card[0].length + card[1].length < 3 && card[0].length + card[1].length > 0) { for (var i = 0; i < card.length; i++) { if (card[i][0]) { if (ting == 1) { return card; } return card[i][0]; } } } else { card = [[], [], []]; } } /****************************查烂牌**************************/ for (var i = 0; i < 3; i++) {//查烂牌 card_mode = Util.ordArray(Util.copyArray(buildArray[i])); if (card_mode.length > 0) { if (card_mode.length == 1) {//0级烂牌 card[0].push(card_mode[0]); } else { for (var k = 0; k < card_mode.length; k++) {//两边隔两张以上 if ((card_mode[k - 1] == undefined || card_mode[k] - card_mode[k - 1] > 2) && (card_mode[k + 1] == undefined || card_mode[k + 1] - card_mode[k] > 2)) { card[1].push(card_mode[k]);//两边隔1张以上 } else if ((card_mode[k - 1] == undefined || card_mode[k] - card_mode[k - 1] > 1) && (card_mode[k + 1] == undefined || card_mode[k + 1] - card_mode[k] > 1)) { card[2].push(card_mode[k]) } } } } } /******************无风顺查烂风************************/ for (var i = 3; i < 5; i++) {//查烂风 var card_mode = Util.ordArray(Util.copyArray(buildArray[i])); if (card_mode.length > 0) { if (card_mode.length == 1) {//0级烂牌 card[0].push(card_mode[0]); } else if (!hu_ting.feng_shun) {//单张风 for (var k = 0; k < card_mode.length; k++) { if ((card_mode[k - 1] == undefined || card_mode[k] != card_mode[k - 1]) && (card_mode[k + 1] == undefined || card_mode[k + 1] != card_mode[k])) { card[1].push(card_mode[k]); } } } } } /*******没有3,只有单1,单2,就去除1,2 没有7只有单8,单9,就消除单8单9*******/ for (var i = 0; i < 3; i++) { card_mode = Util.ordArray(Util.copyArray(buildArray[i])); if (card_mode.length > 1) { if (card_mode[0] % 10 == 1 && card_mode[1] % 10 == 2 && (card_mode[2] % 10 > 3 || card_mode[2] == undefined)) { card[2].push(card_mode[0],card_mode[1]); } if (card_mode[card_mode.length - 1] % 10 == 9 && card_mode[card_mode.length - 2] % 10 == 8 && (card_mode[card_mode.length - 3] % 10 < 7 || card_mode[card_mode.length - 3] == undefined)) { card[2].push(card_mode[card_mode.length - 1],card_mode[card_mode.length - 2]); } } } /*******112,122,后不搭,889,899,前不搭*******/ for (var i = 0; i < 3; i++) { card_mode = Util.ordArray(Util.copyArray(buildArray[i])); if (card_mode.length > 2) { if (card_mode[3] % 10 > 3 || card_mode[3] == undefined) {//后不搭 if (card_mode[0] % 10 == 1 && card_mode[1] % 10 == 1 && card_mode[2] % 10 == 2) {//112 card[2].push(card_mode[2]); } else if (card_mode[0] % 10 == 1 && card_mode[1] % 10 == 2 && card_mode[2] % 10 == 2) {//122 card[2].push(card_mode[0]); } } var card_len = card_mode.length - 1; if (card_mode[card_len - 3] % 10 < 7 || card_mode[card_len - 3] == undefined) {//前不搭 if (card_mode[card_len] % 10 == 9 && card_mode[card_len - 1] % 10 == 8 && card_mode[card_len - 2] % 10 == 8) {//889 card[2].push(card_mode[card_len]); } else if (card_mode[card_len] % 10 == 9 && card_mode[card_len - 1] % 10 == 9 && card_mode[card_len - 2] % 10 == 8) {//899 card[2].push(card_mode[card_len - 2]); } } } } /******************有风顺查烂风************************/ if (hu_ting.feng_shun) { for (var i = 3; i < 5; i++) {//查烂风 var card_mode = Util.ordArray(Util.copyArray(buildArray[i])); if(card_mode.length == 2 && card_mode[0] != card_mode[1]){ card[2].push(card_mode[0],card_mode[1]); } } } /******多张牌中 4连张张牌中含有刻,顺的牌,去除多的那张******/ for (var i = 0; i < 3; i++) { card_mode = Util.ordArray(Util.copyArray(buildArray[i])); if (card_mode.length > 3) { for (var k = 0; k < card_mode.length - 2; k++) { //刻 if (card_mode[k] == card_mode[k + 2]) { if (card_mode[k] - card_mode[k - 1] == 1 && //四张牌刻 刻前一张 前后不搭 (card_mode[k - 1] - card_mode[k - 2] > 1 || card_mode[k - 2] == undefined) && (card_mode[k + 3] - card_mode[k] > 1 || card_mode[k + 3] == undefined)) { card[2].push(card_mode[k - 1]); } else if (card_mode[k + 3] - card_mode[k] == 1 && //四张牌刻 刻后一张 前后不搭 (card_mode[k] - card_mode[k - 1] > 1 || card_mode[k - 1] == undefined) && (card_mode[k + 4] - card_mode[k + 3] > 1 || card_mode[k + 4] == undefined)) { card[2].push(card_mode[k + 3]); } } } for (var k = 0; k < card_mode.length - 3; k++) {//四顺 if ((card_mode[k] - card_mode[k - 1] > 1 || card_mode[k - 1] == undefined) && (card_mode[k + 4] - card_mode[k + 3] > 1 || card_mode[k + 4] == undefined)) { if ((card_mode [k + 1] - card_mode[k] < 2) && card_mode[k + 2] - card_mode[k + 1] == 1 && card_mode[k + 3] - card_mode[k + 1] == 2) { card[2].push(card_mode[k]); } else if (card_mode[k + 1] == card_mode [k + 2] && card_mode[k + 2] - card_mode[k] == 1 && card_mode[k + 3] - card_mode[k + 2] == 1) { card[2].push(card_mode[k + 1]); } else if ((card_mode [k + 3] - card_mode[k + 2] < 2) && card_mode[k + 1] - card_mode[k] == 1 && card_mode[k + 2] - card_mode[k] == 2) { card[2].push(card_mode[k + 3]); } } } } } /**************************双顺,顺前后不搭**************************/ for (var i = 0; i < 3; i++) { card_mode = Util.ordArray(Util.copyArray(buildArray[i])); if (card_mode.length > 1) { for (var k = 0; k < card_mode.length - 1; k++) { if (card_mode[k + 1] - card_mode[k] == 1 && (card_mode[k - 1] == undefined || card_mode[k] - card_mode[k - 1] > 1) && (card_mode[k + 2] == undefined || card_mode[k + 2] - card_mode[k + 1] > 1)) { card[2].push(card_mode[k],card_mode[k + 1]); } } } } /**************************终极抽对子**************************/ for (var i = 0; i < 3; i++) { card_mode = Util.ordArray(Util.copyArray(buildArray[i])); if (card_mode.length > 1) { for (var k = 0; k < card_mode.length - 1;) { if (card_mode[k] == card_mode[k + 1] && (card_mode[k] - card_mode[k - 1] > 1 || card_mode[k - 1] == undefined) && (card_mode[k + 2] - card_mode[k] > 1 || card_mode[k + 2] == undefined)) { card[2].push(card_mode[k],card_mode[k + 1]); k += 2; } else { k += 1; } } } } if (ting == 1) { return card; } if (card[0].length + card[1].length + card[2].length) { for (var i = 0; i < card.length; i++) { if (card[i][0]) { return card[i][0]; } } } } var Ting_tip = Util.copyArray(d.Ting_Tip);//获取听的牌 var tip_card = 0;//记录出的牌 if (Ting_tip.length > 0) {//有听的牌 for (var i = 0; i < Ting_tip.length;) {//把精拿出来 if (Ting_tip[i] == d.jing[0] || Ting_tip[i] == d.jing[1]) { Ting_tip.splice(i, 1); continue; } i++; } if (Ting_tip.length == 1) {//听的牌为1张直接出 return Ting_tip[0]; } else if(Ting_tip.length > 1){//听的牌大于1张 var tip_card_arr = fun_tips_card(1);//获取推荐的牌 for (var i = 0; i < tip_card_arr.length; i++) {//查询推荐的牌中有没有听的牌 for (var j = 0; j < tip_card_arr[i].length && tip_card_arr[i].length > 0; j++) { if(Ting_tip.indexOf(tip_card_arr[i][j]) > -1){ return tip_card_arr[i][j]; } } } if (tip_card == 0) {//没有出的牌就出听的最后一张牌 return Ting_tip[Ting_tip.length - 1]; } } } else if (d.Ting_Tip.length == 0) { return fun_tips_card(); } } /*----------------听牌主函数-------------------*/ //arrs传入所有手牌,不含摸的牌 jing 万能牌[正,副] d.hu_Judge = function (arrs , jing,end) { var ting = []; //能听的牌 for(var i = 0 ; i < hu_ting.pai.length ; i++){//模拟摸的牌 var arrs1 = Util.copyArray(arrs); //拷贝所有牌 arrs1[0] = arrs1[0].concat(hu_ting.pai[i]); //所有牌添加摸得牌 Util.ordArray(arrs1[0]) if(d.ting.JING8_zhen_hu(arrs[0],hu_ting.pai[i],arrs1,jing)){ //判断平胡 ting = ting.concat(hu_ting.pai[i]); if(end) {return ting;} continue; } if(hu_ting.hu_7d && d.ting.heck7D_jing(arrs1,jing,hu_ting.pai[i])){ ting = ting.concat(hu_ting.pai[i]); if(end) {return ting;} continue; } if(hu_ting.hu_13l && d.ting.check13L_jing(arrs1,jing,hu_ting.pai[i])){ ting = ting.concat(hu_ting.pai[i]); if(end) {return ting;} continue; } if(hu_ting.hu_Q1s && d.ting.checkQ1s(arrs1)){ ting = ting.concat(hu_ting.pai[i]); if(end) {return ting;} continue; } if(hu_ting.hu_Z1s && d.ting.checkZ1s(arrs1)){ ting = ting.concat(hu_ting.pai[i]); if(end) {return ting;} continue; } } return ting; } /*----------------工具函数------------------*/ var Util = {}; //判断是否为数组 Util.isArray = function (array) { return Object.prototype.toString.call(array) === '[object Array]'; } //复制数组 Util.copyArray = function (array) { if(typeof array=="undefined"){ console.log("array is undefined."); return array; } var str_Array = JSON.stringify(array); var back_Array = JSON.parse(str_Array); return back_Array; } //一维数组排序 Util.ordArray = function (array) { if (array != undefined && array.length > 0) { array.sort(function f(a, b) { return a - b; }); } return array; } /*----------------胡法----------------------*/ d.ting = {}; //平胡 arr0 手牌 card 摸得牌 arrs 所有手牌 jings 万能牌[正,副] d.ting.JING8_zhen_hu = function (arr0, card, arrs, jings) { var JING = [jings[0], jings[1]]; var jing_arr = []; var arr = arr0.concat(card); Util.ordArray(arr); var hu = d.ting.hu(arr); var hu_bool = d.ting.hu_bool(hu); if (hu_bool) { if (hu.jiang && hu.jiang.length > 0) { var jiangarr = []; for (var i = 0; i < hu.jiang.length; i++) { jiangarr[jiangarr.length] = hu.jiang[i][0]; } } return hu_bool; } //剔除癞子 var JING_num = 0; for (var i = 0; i < JING.length; i++) { var jing_nul = 0; for (var j = 0; j < arr.length; j++) { var pos = arr.indexOf(JING[i]); if (pos != -1 && jing_nul == 0) { jing_arr[jing_arr.length] = arr[pos]; arr[pos] = 99; JING_num += 1; } else if (pos != -1 && jing_nul == 1) { arr[pos] = 999; jing_nul = 0; } else { break; } } var pos = arr.indexOf(999); if (pos != -1) { arr[pos] = JING[i]; } } if(JING_num==0) { return 0; } Util.ordArray(arr); var pos = arr.indexOf(99); if (pos != -1) { arr.splice(pos); } var hu = 0; if(arr.length<=1&&JING_num>=1){ return true; } hu = d.ting.class_JING8(arr, JING_num, JING, jing_arr, card).r; return hu; }; //七对胡判断 arrs 所有手牌 d.ting.heck7D_jing = function (arrs, jings, card) { if (d.ting.check7D(arrs)) { return 1; } //手牌0都是对 arr已剔除癞子 for (var i = 1; i < arrs.length; i++) { if (arrs[i].length > 0) { return 0; } } var arr1 = Util.copyArray(arrs[0]); Util.ordArray(arr1); var JING = [jings[0], jings[1]]; var jing_arr = []; //癞子数量 var JING_num = 0, jing_reduce = 0; for (var i = 0; i < JING.length; i++) { var jing_nul = 0; for (var j = 0; j < arr1.length; j++) { var pos = arr1.indexOf(JING[i]); if (pos != -1 && jing_nul == 0) { jing_arr[jing_arr.length] = arr1[pos]; arr1[pos] = 99; JING_num += 1; } else if (pos != -1 && jing_nul == 1) { arr1[pos] = 999; jing_nul = 0; } else { break; } } var pos = arr1.indexOf(999); if (pos != -1) { arr1[pos] = JING[i]; } } Util.ordArray(arr1); //console.log(arr1); var pos = arr1.indexOf(99); if (pos != -1) { arr1.splice(pos); } var next = 0; for (i = 0; i < arr1.length; i++) { if (i < next) { continue; } if (arr1[i + 1] && arr1[i] == arr1[i + 1]) { next = i + 2; } else if (JING_num > 0) { JING_num -= 1; var pos = jing_arr.indexOf(arr1[i]) if (pos != -1) { jing_reduce += 1; jing_arr.splice(pos, 1); } } else { return 0; } } return 1;//1七对 2龙七对 } //十三烂胡判断 arr 所有手牌 d.ting.check13L_jing = function (arr, jings, card) { if (d.ting.check13L(arr)) { return 1; } //不靠 for (var i = 1; i < arr.length; i++) { if (arr[i]) { return 0; } } var jing_reduce = 0; var arr1 = Util.copyArray(arr[0]); Util.ordArray(arr1); var JING = [jings[0], jings[1]]; var jing_arr = []; //癞子数量 var JING_num = 0; for (var i = 0; i < JING.length; i++) { var jing_nul = 0; for (var j = 0; j < arr1.length; j++) { var pos = arr1.indexOf(JING[i]); if (pos != -1 && jing_nul == 0) { jing_arr[jing_arr.length] = arr1[pos]; arr1[pos] = 99; JING_num += 1; } else if (pos != -1 && jing_nul == 1) { arr1[pos] = 999; jing_nul = 0; } else { break; } } var pos = arr1.indexOf(999); if (pos != -1) { arr1[pos] = JING[i]; } } //剔除癞子 Util.ordArray(arr1); var pos = arr1.indexOf(99); if (pos != -1) { arr1.splice(pos); } //判断东南西北中发白 var xing7 = 0; var arr_Contrast = [31, 32, 33, 34, 41, 42, 43]; var arr2 = []; for (var i = 0; i < 7; i++) { var pos = arr1.indexOf(arr_Contrast[i]); if (pos != -1) { arr2 = arr1.slice(pos); arr1.splice(pos); break; } } var l = arr2.length; if (l > 7) { return 0; } var n = 0; var ready_use_num = 0; for (var i = 0; i < 7; i++) { var pos = arr2.indexOf(arr_Contrast[i]); if (pos != -1) { arr2.splice(pos, 1); n += 1; } else if (pos == -1 && jing_arr.indexOf(arr_Contrast[i]) != -1 && JING_num > 0) { var pos1 = jing_arr.indexOf(arr_Contrast[i]); if (pos1 != -1) { jing_reduce += 1; jing_arr.splice(pos1, 1); } JING_num -= 1; n += 1; } else if (pos == -1 && jing_arr.indexOf(arr_Contrast[i]) == -1 && JING_num > 0) { ready_use_num += 1; } } if (arr2.length == 0) { if (n == 7) { xing7 = 1; }//可以7星 } else { return 0; } var ban = 0; //癞子分配给序数牌 var arr3 = []; for (i = 0; i < 3; i++) { arr3[i] = []; } for (i = 0; i < arr1.length; i++) { if (arr1[i] < 10) { arr3[0][arr3[0].length] = arr1[i]; } else if (arr1[i] < 20) { arr3[1][arr3[1].length] = arr1[i]; } else if (arr1[i] < 30) { arr3[2][arr3[2].length] = arr1[i]; } } var n = 0; for (i = 0; i < 3; i++) { if (arr3[i].length == 2) { if (arr3[i][0] % 10 == 2 && arr3[i][1] % 10 == 7 || arr3[i][0] % 10 == 3 && arr3[i][1] % 10 == 7 || arr3[i][0] % 10 == 3 && arr3[i][1] % 10 == 8) { n += 0; } else { n += 1; if (JING_num > 0) { var ban1 = [0, 0]; if (jing_arr.indexOf(jings[0]) != -1) { var test_arr = arr3[i].concat(jings[0]); Util.ordArray(test_arr); ban1[0] = 1; } if (jing_arr.indexOf(jings[1]) != -1) { var test_arr1 = arr3[i].concat(jings[1]); Util.ordArray(test_arr1); ban1[1] = 1; } if (i == 0 && jings[0] < 10 && jings[0] > 0 && arr3[i][0] < 10 && arr3[i][0] > 0) { if (ban1[0] == 1 && test_arr[0] < test_arr[1] - 2 && test_arr[1] < test_arr[2] - 2) { var pos = jing_arr.indexOf(jings[0]); if (pos != -1) { jing_arr.splice(pos, 1); jing_reduce += 1; } } if (ban1[1] == 1 && test_arr1[0] < test_arr1[1] - 2 && test_arr1[1] < test_arr1[2] - 2) { var pos = jing_arr.indexOf(jings[0]); if (pos != -1) { jing_arr.splice(pos, 1); jing_reduce += 1; } } } else if (i == 1 && jings[0] < 20 && jings[0] > 0 && arr3[i][0] < 20 && arr3[i][0] > 10) { if (ban1[0] == 1 && test_arr[0] < test_arr[1] - 2 && test_arr[1] < test_arr[2] - 2) { var pos = jing_arr.indexOf(jings[0]); if (pos != -1) { jing_arr.splice(pos, 1); jing_reduce += 1; } } if (ban1[1] == 1 && test_arr1[0] < test_arr1[1] - 2 && test_arr1[1] < test_arr1[2] - 2) { var pos = jing_arr.indexOf(jings[0]); if (pos != -1) { jing_arr.splice(pos, 1); jing_reduce += 1; } } } else if (i == 2 && jings[0] < 30 && jings[0] > 20 && arr3[i][0] < 30 && arr3[i][0] > 20) { if (ban1[0] == 1 && test_arr[0] < test_arr[1] - 2 && test_arr[1] < test_arr[2] - 2) { var pos = jing_arr.indexOf(jings[0]); if (pos != -1) { jing_arr.splice(pos, 1); jing_reduce += 1; } } if (ban1[1] == 1 && test_arr1[0] < test_arr1[1] - 2 && test_arr1[1] < test_arr1[2] - 2) { var pos = jing_arr.indexOf(jings[0]); if (pos != -1) { jing_arr.splice(pos, 1); jing_reduce += 1; } } } } } } else if (arr3[i].length == 3) { n += 0; } else if (arr3[i].length == 1) { n += 2; if (JING_num > 0) { var ban1 = [0, 0]; if (jing_arr.indexOf(jings[0]) != -1) { var test_arr = arr3[i].concat(jings[0]); Util.ordArray(test_arr); ban1[0] = 1; } if (jing_arr.indexOf(jings[1]) != -1) { var test_arr1 = arr3[i].concat(jings[1]); Util.ordArray(test_arr1); ban1[1] = 1; } if (i == 0 && jings[0] < 10 && jings[0] > 0 && arr3[i][0] < 10 && arr3[i][0] > 0) { if (ban1[0] == 1 && test_arr[0] < test_arr[1] - 2 && test_arr[1] < test_arr[2] - 2) { var pos = jing_arr.indexOf(jings[0]); if (pos != -1) { jing_arr.splice(pos, 1); jing_reduce += 1; } } if (ban1[1] == 1 && test_arr1[0] < test_arr1[1] - 2 && test_arr1[1] < test_arr1[2] - 2) { var pos = jing_arr.indexOf(jings[0]); if (pos != -1) { jing_arr.splice(pos, 1); jing_reduce += 1; } } } else if (i == 1 && jings[0] < 20 && jings[0] > 0 && arr3[i][0] < 20 && arr3[i][0] > 10) { if (ban1[0] == 1 && test_arr[0] < test_arr[1] - 2 && test_arr[1] < test_arr[2] - 2) { var pos = jing_arr.indexOf(jings[0]); if (pos != -1) { jing_arr.splice(pos, 1); jing_reduce += 1; } } if (ban1[1] == 1 && test_arr1[0] < test_arr1[1] - 2 && test_arr1[1] < test_arr1[2] - 2) { var pos = jing_arr.indexOf(jings[0]); if (pos != -1) { jing_arr.splice(pos, 1); jing_reduce += 1; } } } else if (i == 2 && jings[0] < 30 && jings[0] > 20 && arr3[i][0] < 30 && arr3[i][0] > 20) { if (ban1[0] == 1 && test_arr[0] < test_arr[1] - 2 && test_arr[1] < test_arr[2] - 2) { var pos = jing_arr.indexOf(jings[0]); if (pos != -1) { jing_arr.splice(pos, 1); jing_reduce += 1; } } if (ban1[1] == 1 && test_arr1[0] < test_arr1[1] - 2 && test_arr1[1] < test_arr1[2] - 2) { var pos = jing_arr.indexOf(jings[0]); if (pos != -1) { jing_arr.splice(pos, 1); jing_reduce += 1; } } } } } else if (arr3[i].length == 0) { n += 3; if (JING_num > 0) { var ban1 = [0, 0]; if (jing_arr.indexOf(jings[0]) != -1) { var test_arr = arr3[i].concat(jings[0]); Util.ordArray(test_arr); ban1[0] = 1; } if (jing_arr.indexOf(jings[1]) != -1) { var test_arr1 = arr3[i].concat(jings[1]); Util.ordArray(test_arr1); ban1[1] = 1; } if (i == 0 && jings[0] < 10 && jings[0] > 0 && arr3[i][0] < 10 && arr3[i][0] > 0) { if (ban1[0] == 1 && test_arr[0] < test_arr[1] - 2 && test_arr[1] < test_arr[2] - 2) { var pos = jing_arr.indexOf(jings[0]); if (pos != -1) { jing_arr.splice(pos, 1); jing_reduce += 1; } } if (ban1[1] == 1 && test_arr1[0] < test_arr1[1] - 2 && test_arr1[1] < test_arr1[2] - 2) { var pos = jing_arr.indexOf(jings[0]); if (pos != -1) { jing_arr.splice(pos, 1); jing_reduce += 1; } } } else if (i == 1 && jings[0] < 20 && jings[0] > 0 && arr3[i][0] < 20 && arr3[i][0] > 10) { if (ban1[0] == 1 && test_arr[0] < test_arr[1] - 2 && test_arr[1] < test_arr[2] - 2) { var pos = jing_arr.indexOf(jings[0]); if (pos != -1) { jing_arr.splice(pos, 1); jing_reduce += 1; } } if (ban1[1] == 1 && test_arr1[0] < test_arr1[1] - 2 && test_arr1[1] < test_arr1[2] - 2) { var pos = jing_arr.indexOf(jings[0]); if (pos != -1) { jing_arr.splice(pos, 1); jing_reduce += 1; } } } else if (i == 2 && jings[0] < 30 && jings[0] > 20 && arr3[i][0] < 30 && arr3[i][0] > 20) { if (ban1[0] == 1 && test_arr[0] < test_arr[1] - 2 && test_arr[1] < test_arr[2] - 2) { var pos = jing_arr.indexOf(jings[0]); if (pos != -1) { jing_arr.splice(pos, 1); jing_reduce += 1; } } if (ban1[1] == 1 && test_arr1[0] < test_arr1[1] - 2 && test_arr1[1] < test_arr1[2] - 2) { var pos = jing_arr.indexOf(jings[0]); if (pos != -1) { jing_arr.splice(pos, 1); jing_reduce += 1; } } } } } } if (JING_num - n > ready_use_num) { return 0; } for (i = 0; i < arr1.length - 1; i++) { if (arr1[i] < arr1[i + 1] - 2 && arr1[i + 1] < 10) { } else if (arr1[i] < 10 && arr1[i + 1] >= 10) { } else if (arr1[i] < arr1[i + 1] - 2 && arr1[i] >= 10 && arr1[i + 1] < 20) { } else if (arr1[i] < 20 && arr1[i + 1] >= 20) { } else if (arr1[i] < arr1[i + 1] - 2 && arr1[i] >= 20 && arr1[i + 1] < 30) { } else { ban = 1; break; } } if (ban == 0) { return 1 + xing7; }//1:13烂,2:7星13烂 return 0; } //清一色 arrs 所有手牌 d.ting.checkQ1s = function(arrs){ var arr1 = Util.copyArray(arrs[0]); for (var i = 1; i < arr1.length; i++) { arr1 = arr1.concat(arr1[i]); } if(hu_ting.Q1s_pai && arr1.length != hu_ting.Q1s_pai){ return false; } Util.ordArray(arr1); if(arr1[0] > 0 && arr1[arr1.length-1] < 10){ return true; }else if(arr1[0] > 10 && arr1[arr1.length-1] < 20){ return true; }else if(arr1[0] > 20 && arr1[arr1.length-1] < 30){ return true; } return false; } //字一色 arrs 所有手牌 d.ting.checkZ1s = function(arrs){ var arr1 = Util.copyArray(arrs[0]); for (var i = 1; i < arr1.length; i++) { arr1 = arr1.concat(arr1[i]); } if(hu_ting.Z1s_pai && arr1.length != hu_ting.Z1s_pai){ return false; } Util.ordArray(arr1); if(arr1[0] > 30 && arr1[arr1.length-1] < 44){ return true; } return false; } d.ting.check13L = function (arr) { var xing7=0; //不靠 for (var i = 1; i < arr.length; i++) { if (arr[i]) { return 0; } } var arr1 = Util.copyArray(arr[0]); Util.ordArray(arr1); //判断东南西北中发白 var arr_Contrast = [31, 32, 33, 34, 41, 42, 43]; var arr2 = []; for (var i = 0; i < 7; i++) { var pos = arr1.indexOf(arr_Contrast[i]); if (pos != -1) { arr2 = arr1.slice(pos); arr1.splice(pos); break; } } if (arr2.length == 7) {xing7=1; } for (var i = 0; i < 7; i++) { var pos = arr2.indexOf(arr_Contrast[i]); if (pos != -1) { arr2.splice(pos, 1); } } if (arr2.length == 0) { } else { return 0; } //147、258、369//是否不相连 var ban = 0; for (i = 0; i < arr1.length - 1; i++) { if (arr1[i] < arr1[i + 1] - 2 && arr1[i + 1] < 10) { } else if (arr1[i] < 10 && arr1[i + 1] >= 10) { } else if (arr1[i] < arr1[i + 1] - 2 && arr1[i] >= 10 && arr1[i + 1] < 20) { } else if (arr1[i] < 20 && arr1[i + 1] >= 20) { } else if (arr1[i] < arr1[i + 1] - 2 && arr1[i] >= 20 && arr1[i + 1] < 30) { } else { ban = 1; break; } } if (ban == 0) { return 1+xing7; } return 0; } d.ting.check7D = function (arr) { //手牌0都是对 var arr1 = Util.copyArray(arr[0]); Util.ordArray(arr1); for (var i = 1; i < arr.length; i++) { if (arr[i].length > 0) { return 0; } arr1 = arr1.concat(arr[i]); } Util.ordArray(arr1); var n = 0; for (i = 0; i < parseInt(arr1.length / 2); i++) { if (arr1[i * 2] == arr1[i * 2 + 1]) { n += 1; } else { return 0; } } if (n == 7) { return 24; } return 0; } //平胡判断第2步 d.ting.class_JING8 = function (arr, JING_num, jing, jing_arr, card) { var hu = {"r": 0}, jing_arr1 = Util.copyArray(jing_arr); //arr 手牌,不包括副露 card他家出或自家摸的牌 if (hu.r == 0) {//剔除1将 1癞 hu = d.ting.class_JING8_1jing(arr, JING_num, jing, jing_arr1, card); //console.log("111剔除1将 1癞" + JSON.stringify(hu) + "/" + hu.r); } if (hu.r == 0) {//剔除0将 2癞 //console.log("000剔除0将 2癞" + JSON.stringify(hu)); hu = d.ting.class_JING8_2jing(arr, JING_num, jing, jing_arr1, card); //console.log("111剔除0将 2癞" + JSON.stringify(hu)); } if (hu.r == 0) {//得出2将,剔除2将 var JING_num1 = JING_num; var r = d.ting.classify_un_Pair(arr, 0); //console.log(JSON.stringify(hu)+"剔除2将" + JSON.stringify(r)); if (r.jiang) { var jing_reduce = 0; var hu = d.ting.class_JING8_1(r, arr, JING_num1, jing, jing_arr1, jing_reduce); } } return hu; } //平胡判断(剔除2个癞子后的牌) d.ting.class_JING8_2jing = function (arr, JING_num, jing, jing_arr1, card) {//剔除0将 2癞 var hu = {"r": 0}; var JING_num1 = JING_num; if (JING_num1 < 2) { return hu; } var jing_reduce = 0; JING_num1 -= 2; var ban = 0; for (var i = 0; i < jing_arr1.length - 1; i++) { if (jing_arr1[i] == jing_arr1[i + 1]) { jing_arr1.splice(i, 2); ban = 1; jing_reduce = 2; break; } } if (ban == 0) { jing_reduce = 1; jing_arr1.splice(0, 2); } var r = []; //console.log("剔除0将 2癞"); r[0] = Util.copyArray(arr); var hu = d.ting.class_JING8_1(r, arr, JING_num1, jing, jing_arr1, jing_reduce); return hu; } //平胡判断(剔除1个牌和1个癞子后的牌) d.ting.class_JING8_1jing = function (arr, JING_num, jing, jing_arr1, card) {//剔除1将 1癞 var hu = {"r": 0}; var JING_num1 = JING_num; if (JING_num == 0){ return hu; } var jing_reduce = 0; JING_num1 -= 1; jing_arr1.splice(0, 1); var r = []; //console.log("剔除1将 1癞=" + JING_num); for (var i = 0; i < arr.length; i++) { r[i] = Util.copyArray(arr); r[i].splice(i, 1); } var hu = d.ting.class_JING8_1(r, arr, JING_num1, jing, jing_arr1, jing_reduce); return hu; } //平胡判断第3步 d.ting.class_JING8_1 = function (r, arr, JING_num1, jing, jing_arr1, jing_reduce) { var hu = {"r": 0, "jing_reduce": 0}; //arr 手牌,不包括副露 card他家出或自家摸的牌 //console.log(r); if (r && r.length && r[0] && r[0].length) {//牌型万饼条风箭分类 for (var i = 0; i < r.length; i++) { var arr1 = [], arr_need = [], hus = [-1, -1, -1, -1, -1]; var JING_num = JING_num1; var con = 0; for (var j = 0; j < 5; j++) { arr1[j] = []; arr_need[j] = []; } for (var j = 0; j < r[i].length; j++) { if (r[i][j] < 10) { arr1[0][arr1[0].length] = r[i][j]; } else if (r[i][j] < 20) { arr1[1][arr1[1].length] = r[i][j]; } else if (r[i][j] < 30) { arr1[2][arr1[2].length] = r[i][j]; } else if (r[i][j] < 40) { arr1[3][arr1[3].length] = r[i][j]; } else if (r[i][j] < 50) { arr1[4][arr1[4].length] = r[i][j]; } } //console.log(JING_num + "class_JING8_1=" + JSON.stringify(arr1)); //需要的癞子范围 if (arr1[0].length > 0) { hus[0] = 0; Util.ordArray(arr1[0]); var r1 = d.ting.judge_shu_JING8(arr1[0], JING_num, jing); if (r1.r) { hus[0] = 1; JING_num = r1.JING_num; } else { con = 1; } } if (arr1[1].length > 0) { hus[1] = 0; } if (con == 0 && arr1[1].length > 0) { Util.ordArray(arr1[1]); var r1 = d.ting.judge_shu_JING8(arr1[1], JING_num, jing); if (r1.r) { hus[1] = 1; JING_num = r1.JING_num; } else { con = 1; } } if (arr1[2].length > 0) { hus[2] = 0; } if (con == 0 && arr1[2].length > 0) { hus[2] = 0; Util.ordArray(arr1[2]); var r1 = d.ting.judge_shu_JING8(arr1[2], JING_num, jing); if (r1.r) { hus[2] = 1; JING_num = r1.JING_num; } else { con = 1; } } if (arr1[3].length > 0) { hus[3] = 0; } if (con == 0 && arr1[3].length > 0) { var r1 = d.ting.judge_feng_JING8(arr1[3], JING_num, jing); if (r1 && r1.r && r1.r == 1 && r1.JING_num != undefined) { JING_num = r1.JING_num; if (r1.jing_reduce) { jing_reduce += r1.jing_reduce; } } else { con = 1; } if (con == 0) { hus[3] = 1; } } if (arr1[4].length > 0) { hus[4] = 0; } if (con == 0 && arr1[4].length > 0) { Util.ordArray(arr1[4]); var r1 = d.ting.judge_zi_JING8(arr1[4], JING_num, jing); if (r1 && r1.r && r1.r == 1 && r1.JING_num != undefined) { JING_num = r1.JING_num; if (r1.jing_reduce) { jing_reduce += r1.jing_reduce; } } else { con = 1; } if (con == 0) { hus[4] = 1; } } //console.log(JING_num + "class_JING8_11111=" + JSON.stringify(hus)); //得出牌组 判断是否胡 var pos = hus.indexOf(0); if (pos == -1) { hu.r = 1 + i; hu.jing_reduce = jing_reduce; return hu; } } } else if (r&&r[0].length==0) { hu.r = 1; return hu; } return hu; } //平胡判断(风牌是否胡) d.ting.judge_feng_JING8 = function (arr1, JING_num, jing) { var hu_win = 0, jing_reduce = 0; if(hu_ting.feng_shun==0)//风牌不作顺子 { if (arr1.length == 15) {hu_win = 0; } else if (arr1.length+JING_num>=3) { var res=d.ting.checkKZ_jing(arr1,JING_num); if (res.r) { hu_win = 1; JING_num = res.num; } } } else if(hu_ting.feng_shun==1)//风牌作顺子 { //15张 必胡 if (arr1.length == 15) { hu_win = 1; } //14张 有1精必胡 if (arr1.length == 14) { if (hu_win == 0 && JING_num >= 1) { hu_win = 1; JING_num -= 1; } } //13张 有2精必胡 if (arr1.length == 13) { if (hu_win == 0 && JING_num >= 2) { hu_win = 1; JING_num -= 2; } } //12张 判断12张必胡 有3精必胡 if (arr1.length == 12) { hu_win = 1; } //11张 枚举1精必胡 判断12张 有4精必胡 if (arr1.length == 11) { var hu_win = 0; if (hu_win == 0 && JING_num >= 1) { hu_win = 1; JING_num -= 1; } } //10张 枚举2精必胡 判断12张 枚举5精必胡 if (arr1.length == 10) { var hu_win = 0; if (hu_win == 0 && JING_num >= 2) { hu_win = 1; JING_num -= 2; } } //9张 判断9张 枚举3精必胡 判断12张 有6精必胡 if (arr1.length == 9) { var hu_win = 0; var res = d.ting.check9Pai(arr1); if (res.r) { hu_win = 1; } if (hu_win == 0 && JING_num >= 3) { hu_win = 1; JING_num -= 3; } } //8张 枚举1精必胡 判断9张 枚举4精 判断12张 有7精必胡 if (arr1.length == 8) { var hu_win = 0; if (hu_win == 0 && JING_num >= 1) { hu_win = 1; JING_num -= 1; } } //7张 枚举2精 必胡 if (arr1.length == 7) { var hu_win = 0; if (hu_win == 0 && JING_num >= 2) { hu_win = 1; JING_num -= 2; } } //6张 判断6张 有3精 必胡 if (arr1.length == 6) { var hu_win = 0; var res = d.ting.check6Pai(arr1); if (res.r) { hu_win = 1; } if (hu_win == 0 && JING_num >= 3) { hu_win = 1; JING_num -= 3; } } //5张 有1精 必胡 if (arr1.length == 5) { var hu_win = 0; if (hu_win == 0 && JING_num >= 1) { hu_win = 1; JING_num -= 1; } } //4张 有2精 必胡 if (arr1.length == 4) { var hu_win = 0; if (hu_win == 0 && JING_num >= 2) { hu_win = 1; JING_num -= 2; } } //3张 判断3张 有3精 必胡 if (arr1.length == 3) { var hu_win = 0; var res = d.ting.check3Pai(arr1); if (res.r) { hu_win = 1; } if (hu_win == 0 && JING_num >= 3) { hu_win = 1; JING_num -= 3; } } //2张 有1精 必胡 if (arr1.length == 2) { var hu_win = 0; if (hu_win == 0 && JING_num >= 1) { hu_win = 1; JING_num -= 1; } } //1张 有2精 必胡 if (arr1.length == 1) { var hu_win = 0; if (hu_win == 0 && JING_num >= 2) { hu_win = 1; JING_num -= 2; } } } var r = {"r": hu_win, "JING_num": JING_num, "jing_reduce": jing_reduce}; return r; } //判断都是3刻子 (补足3的倍数) d.ting.checkKZ_jing = function (arr0,JING_num) { var arr1=Util.copyArray(arr0); Util.ordArray(arr1); var r = {"r": 0, "num": 0}; var next = 0; for (i = 0; i < arr1.length - 1; i++) { if (i < next) { continue; } if (arr1[i + 2] && arr1[i + 1] && arr1[i] == arr1[i + 1] && arr1[i] == arr1[i + 2]) { next = i + 3; } else if (JING_num > 0 && arr1[i + 1] && arr1[i] == arr1[i + 1]) { next = i + 2; JING_num -= 1; } else if (JING_num > 0) { JING_num -= 2; } else { return r; } } r.num = JING_num; if (JING_num % 3 == 0) { } else {r.r=0; return r; } r.r = 1; return r; } //平胡判断(字牌是否胡) d.ting.judge_zi_JING8 = function (arr1, JING_num, jing) { var hu_win = 0, jing_reduce = 0; if(hu_ting.feng_shun==0)//风牌不作顺子 { if (arr1.length+JING_num>=3) { var res=d.ting.checkKZ_jing(arr1,JING_num); if (res.r) { hu_win = 1; JING_num = res.num; } } } else if(hu_ting.feng_shun==1)//风牌作顺子 { //12张 判断12张 if (arr1.length == 12) { var hu_win = 1; } //11张 枚举1精 必胡 if (arr1.length == 11) { var hu_win = 0; if (JING_num >= 1) { hu_win = 1; JING_num -= 1; } } //10张 枚举2精 判断12张 if (arr1.length == 10) { var hu_win = 0; if (JING_num >= 2) { hu_win = 1; JING_num -= 2; } } //9张 判断9张 枚举3精 判断12张 if (arr1.length == 9) { var hu_win = 0; var res = d.ting.check9Pai(arr1); if (res.r) { hu_win = 1; } if (hu_win == 0 && JING_num >= 3) { hu_win = 1; JING_num -= 3; } } //8张 枚举1精 必胡 if (arr1.length == 8) { var hu_win = 0; if (hu_win == 0 && JING_num >= 1) { hu_win = 1; JING_num -= 1; } } //7张 枚举2精 必胡 if (arr1.length == 7) { var hu_win = 0; if (hu_win == 0 && JING_num >= 2) { hu_win = 1; JING_num -= 2; } } //6张 判断6张 有3精 必胡 if (arr1.length == 6) { var hu_win = 0; var res = d.ting.check6Pai(arr1); if (res.r) { hu_win = 1; } if (hu_win == 0 && JING_num >= 3) { hu_win = 1; JING_num -= 3; } } //5张 有1精 必胡 if (arr1.length == 5) { var hu_win = 0; if (hu_win == 0 && JING_num >= 1) { hu_win = 1; JING_num -= 1; } } //4张 有2精 必胡 if (arr1.length == 4) { var hu_win = 0; if (hu_win == 0 && JING_num >= 2) { hu_win = 1; JING_num -= 2; } } //3张 判断3张 有3精 必胡 if (arr1.length == 3) { var hu_win = 0; var res = d.ting.check3Pai(arr1); if (res.r) { hu_win = 1; } if (hu_win == 0 && JING_num >= 3) { hu_win = 1; JING_num -= 3; } } //2张 有1精 必胡 if (arr1.length == 2) { var hu_win = 0; if (hu_win == 0 && JING_num >= 1) { hu_win = 1; JING_num -= 1; } } //1张 有2精 必胡 if (arr1.length == 1) { var hu_win = 0; if (hu_win == 0 && JING_num >= 2) { hu_win = 1; JING_num -= 2; } } } var r = {"r": hu_win, "JING_num": JING_num, "jing_reduce": jing_reduce}; return r; } //平胡判断(序数牌是否胡) d.ting.judge_shu_JING8 = function (arr1, JING_num,jing) { var hu_win = 0; var jing_reduce = 0; var jing_num =d.newHu.needLai(arr1); if(jing_num<=JING_num){ hu_win=1; JING_num-=jing_num; } var r = {"r": hu_win, "JING_num": JING_num, "jing_reduce": jing_reduce}; return r; } //是否真胡 d.ting.hu0 = function (arr0) { d.ord(arr0); var len = arr0.length; var hu = 0; var res = 0;//if(res.r && res.r.length>0) if (len == 0) { res = 100; hu = 1; } else if (len < 3) { res = 0; hu = 0; } else if (len == 3) { var res = d.ting.check3Pai(arr0); if (res.r && res.r.length > 0) { hu = 1; } } else if (len == 6) { var res = d.ting.check6Pai(arr0); if (res.r && res.r.length > 0) { hu = 1; } } else if (len == 9) { var res = d.ting.check9Pai(arr0); if (res.r && res.r.length > 0) { hu = 1; } } else if (len == 12) { var res = d.ting.check12Pai(arr0); if (res.r && res.r.length > 0) { hu = 1; } } else if(len==15) {var res=d.ting.check15Pai(arr0); if (res.r && res.r.length > 0) { hu = 1; } } return hu; } //是否真胡的判断1 arr:是arr[0]加上摸的牌 d.ting.hu = function (arr, jiang) { jiang = jiang || 0; var arr1 = Util.copyArray(arr); if (arr1.length == 2) { if (arr1[0] == arr1[1]) { var hu = {}; hu.jiang = [[arr1[0]]]; hu.type = [[4]]; return hu; } else { var hu = {}; hu.jiang = []; hu.type = []; return hu; } } var r = d.ting.classify_un_Pair(arr1, jiang); //length<=12 var hu = {}; hu.jiang = []; hu.type = []; var n = 0; // if(r.length) // {hu.type[n]=0;hu.jiang[n]=0;} for (i = 0; i < r.length; i++) { var len = r[i].length; if (len == 0) { hu.type[n] = 100; hu.jiang[n] = r.jiang[i]; n += 1; } else if (len < 3 || r.jiang == 0) { hu.type[n] = 0; hu.jiang[n] = 0; n += 1; } else if (len == 3) { var res = d.ting.check3Pai(r[i]); if (res.r) { hu.type[n] = res; hu.jiang[n] = r.jiang[i]; n += 1; } } else if (len == 6) { var res = d.ting.check6Pai(r[i]); if (res.r) { hu.type[n] = res; hu.jiang[n] = r.jiang[i]; n += 1; } } else if (len == 9) { var res = d.ting.check9Pai(r[i]); if (res.r) { hu.type[n] = res; hu.jiang[n] = r.jiang[i]; n += 1; } } else if (len == 12) { var res = d.ting.check12Pai(r[i]); if (res.r) { hu.type[n] = res; hu.jiang[n] = r.jiang[i]; n += 1; } } else if (len == 15) { var res = d.ting.check15Pai(r[i]); if (res.r) { hu.type[n] = res; hu.jiang[n] = r.jiang[i]; n += 1; } } } return hu; } //胡的基础算法 //1 顺 2 刻 3 杠 //检测3张是否胡牌、记录杠刻顺&判断番型、分数 d.ting.check3Pai = function (arr) { var result = {}; result.arr = [arr]; result.r = 0; if (d.ting.checkABCPai(arr)) { result.r = [1]; } if (d.ting.checkAAAPai(arr)) { result.r = [2]; } return result; } //检测4张是否胡牌、记录杠刻顺&判断番型、分数 d.ting.check4Pai = function (arr) { var result = {}; result.arr = [arr]; result.r = 0; if (d.ting.checkAAAAPai(arr)) { result.r = [3]; } return result; } //检测6张是否胡牌、记录杠刻顺&判断番型、分数 d.ting.check6Pai = function (arr) { var result = {}; result.arr = []; result.r = 0; var arr1 = [arr[0], arr[1], arr[2]]; var c0 = d.ting.check3Pai(arr1); var arr1 = [arr[3], arr[4], arr[5]]; var c1 = d.ting.check3Pai(arr1); if (c0.r && c1.r) { result.r = c0.r.concat(c1.r); result.arr = c0.arr.concat(c1.arr); return result; } //特殊三连顺 AABBCC ABBCCD var r1 = d.ting.check3shunPai(arr); if (r1.r) { result.r = r1.r; result.arr = r1.arr; return result; } //第一张牌四连张 if (d.ting.checkAAAAPai(arr)) { var arr1 = [arr[3], arr[4], arr[5]]; if (d.ting.checkABCPai(arr1)) { result.r = [2, 1]; result.arr = [[arr[0], arr[1], arr[2]], arr1]; return result; } } //第二张牌四连张 var arr1 = [arr[1], arr[2], arr[3], arr[4]]; if (d.ting.checkAAAAPai(arr1)) { var arr2 = [arr[0], arr[4], arr[5]]; if (d.ting.checkABCPai(arr2)) { result.r = [1, 2]; result.arr = [arr2, [arr[1], arr[2], arr[3]]]; return result; } } //第三张牌四连张 var arr1 = [arr[2], arr[3], arr[4], arr[5]]; if (d.ting.checkAAAAPai(arr1)) { var arr2 = [arr[0], arr[1], arr[2]]; if (d.ting.checkABCPai(arr2)) { result.r = [1, 2]; result.arr = [arr2, [arr[3], arr[4], arr[5]]]; return result; } } return 0; } //检测7张是否胡牌、记录杠刻顺&判断番型、分数 d.ting.check7Pai = function (arr) { var result = {}; result.arr = []; result.r = 0; //第一张牌四重张 if (d.ting.checkAAAAPai(arr)) { var arr1 = [arr[4], arr[5], arr[6]]; var c0 = d.ting.check3Pai(arr1); if (c0.r) { result.r = [3].concat(c0.r); result.arr = [[arr[0], arr[1], arr[2], arr[3]], arr1]; return result; } } //第一张牌三连/重张 var arr1 = [arr[0], arr[1], arr[2]] var c0 = d.ting.check3Pai(arr1); var arr1 = [arr[3], arr[4], arr[5], arr[6]]; var c1 = d.ting.checkAAAAPai(arr1); if (c0.r && c1) { result.r = c0.r.concat([3]); result.arr = [[arr[0], arr[1], arr[2]], arr1]; return result; } return result; } //检测8张是否胡牌、记录杠刻顺&判断番型、分数 d.ting.check8Pai = function (arr) { var result = {}; result.arr = []; result.r = 0; //第一张牌四重张 if (d.ting.checkAAAAPai(arr)) { var arr1 = [arr[4], arr[5], arr[6], arr[7]]; var c0 = d.ting.checkAAAAPai(arr1); if (c0) { result.r = [3, 3]; result.arr = [[arr[0], arr[1], arr[2], arr[3]], arr1]; return result; } } return result; } //检测9张是否胡牌、记录杠刻顺&判断番型、分数 d.ting.check9Pai = function (arr) { var result = {}; result.arr = []; result.r = 0; var arr1 = [arr[0], arr[1], arr[2]], arr2 = [arr[3], arr[4], arr[5], arr[6], arr[7], arr[8]]; var c1 = d.ting.check3Pai(arr1), c2 = d.ting.check6Pai(arr2); if (c1.r && c2.r) { result.r = c1.r.concat(c2.r); result.arr = c1.arr.concat(c2.arr); return result; } var arr1 = [arr[6], arr[7], arr[8]], arr2 = [arr[0], arr[1], arr[2], arr[3], arr[4], arr[5]]; var c1 = d.ting.check3Pai(arr1), c2 = d.ting.check6Pai(arr2); if (c1.r && c2.r) { result.r = c1.r.concat(c2.r); result.arr = c1.arr.concat(c2.arr); return result; } //特殊三连顺AABBBCCCD ABBCCCDDE ABBBCCCDD var r1 = d.ting.check3shunPai(arr) if (r1.r) { result.r = r1.r; result.arr = r1.arr; return result; } return result; } //检测10张是否胡牌、记录杠刻顺&判断番型、分数 d.ting.check10Pai = function (arr) { var result = {}; result.arr = []; result.r = 0; //第一张牌四重张 var c0 = d.ting.checkAAAAPai(arr) if (c0) { var arr1 = [arr[4], arr[5], arr[6], arr[7], arr[8], arr[9]] var c1 = d.ting.check6Pai(arr1); if (c1.r) { result.r = [3].concat(c1.r); result.arr = [[arr[0], arr[1], arr[2], arr[3]]].concat(c1.arr); return result; } } //第四张牌四重张 var arr1 = [arr[3], arr[4], arr[5], arr[6]]; var arr2 = [arr[0], arr[1], arr[2], arr[7], arr[8], arr[9]]; var c1 = d.ting.checkAAAAPai(arr1); var c2 = d.ting.check6Pai(arr2) if (c1 && c2.r) { result.r = [3].concat(c2.r); result.arr = [arr1].concat(c2.arr); return result; } //第七张牌四重张 var arr1 = [arr[6], arr[7], arr[8], arr[9]]; var c1 = d.ting.checkAAAAPai(arr1); var c0 = d.ting.check6Pai(arr) if (c1 && c0.r) { result.r = c0.r.concat([3]); result.arr = c0.arr.concat([arr1]); return result; } return result; } //检测11张是否胡牌、记录杠刻顺&判断番型、分数 d.ting.check11Pai = function (arr) { var result = {}; result.arr = []; result.r = 0; //第一&五张牌四重张 var arr1 = [arr[0], arr[1], arr[2], arr[3]]; var arr2 = [arr[4], arr[5], arr[6], arr[7]]; var arr3 = [arr[8], arr[9], arr[10]]; var c1 = d.ting.checkAAAAPai(arr1); var c2 = d.ting.checkAAAAPai(arr2); var c3 = d.ting.check3Pai(arr3) if (c1 && c2 && c3.r) { result.r = [3, 3].concat(c3.r); result.arr = [arr1].concat([arr2]).concat(c3.arr); return result; } //第一&八张牌四重张 var arr1 = [arr[0], arr[1], arr[2], arr[3]]; var arr2 = [arr[7], arr[8], arr[9], arr[10]]; var arr3 = [arr[4], arr[5], arr[6]]; var c1 = d.ting.checkAAAAPai(arr1); var c2 = d.ting.checkAAAAPai(arr2); var c3 = d.ting.check3Pai(arr3) if (c1 && c2 && c3) { result.r = [3].concat(c3.r).concat([3]); result.arr = [arr1].concat(c3.arr).concat([arr2]); return result; } //第四&八张牌四重张 var arr1 = [arr[3], arr[4], arr[5], arr[6]]; var arr2 = [arr[7], arr[8], arr[9], arr[10]]; var arr3 = [arr[0], arr[1], arr[2]]; var c1 = d.ting.checkAAAAPai(arr1); var c2 = d.ting.checkAAAAPai(arr2); var c3 = d.ting.check3Pai(arr3) if (c1 && c2 && c3) { result.r = c3.r.concat([3, 3]); result.arr = c3.arr.concat([arr1]).concat([arr2]); return result; } return result; } //检测12张是否胡牌、记录杠刻顺&判断番型、分数 d.ting.check12Pai = function (arr) { var result = {}; result.arr = []; result.r = 0; //三个四重张 //var arr1 = [arr[0], arr[1], arr[2], arr[3]]; //var arr2 = [arr[4], arr[5], arr[6], arr[7]]; //var arr3 = [arr[8], arr[9], arr[10], arr[11]]; //var c1 = d.ting.checkAAAAPai(arr1); //var c2 = d.ting.checkAAAAPai(arr2); //var c3 = d.ting.checkAAAAPai(arr3) //if (c1 && c2 && c3) { //result.r = [3, 3, 3]; //result.arr = [arr1].concat([arr2]).concat([arr3]); //return result; //} var arr1 = [arr[0], arr[1], arr[2]]; var arr2 = [arr[3], arr[4], arr[5], arr[6], arr[7], arr[8], arr[9], arr[10], arr[11]]; var c1 = d.ting.check3Pai(arr1); var c2 = d.ting.check9Pai(arr2); if (c1.r && c2.r) { result.r = c1.r.concat(c2.r); result.arr = c1.arr.concat(c2.arr); return result; } var arr1 = [arr[9], arr[10], arr[11]]; var arr2 = [arr[0], arr[1], arr[2], arr[3], arr[4], arr[5], arr[6], arr[7], arr[8]]; var c1 = d.ting.check3Pai(arr1); var c2 = d.ting.check9Pai(arr2); if (c1.r && c2.r) { result.r = c1.r.concat(c2.r); result.arr = c1.arr.concat(c2.arr); return result; } var arr1 = [arr[0], arr[1], arr[2], arr[3], arr[4], arr[5]]; var arr2 = [arr[6], arr[7], arr[8], arr[9], arr[10], arr[11]]; var c1 = d.ting.check6Pai(arr1); var c2 = d.ting.check6Pai(arr2); if (c1.r && c2.r) { result.r = c1.r.concat(c2.r); result.arr = c1.arr.concat(c2.arr); return result; } //特殊三连顺 var r1 = d.ting.check3shunPai(arr) if (r1.r) { result.r = r1.r; result.arr = r1.arr; return result; } return result; } //检测15张是否胡牌、记录杠刻顺&判断番型、分数 d.ting.check15Pai=function (arr) { var result={}; result.arr=[]; result.r=0; var arr1=[arr[0],arr[1],arr[2]]; var arr2=[arr[3],arr[4],arr[5],arr[6],arr[7],arr[8],arr[9],arr[10],arr[11],arr[12],arr[13],arr[14]]; var c1=d.ting.check3Pai(arr1); var c2=d.ting.check12Pai(arr2); if(c1.r&&c2.r) {result.r=c1.r.concat(c2.r); result.arr=c1.arr.concat(c2.arr); return result; } var arr1=[arr[12],arr[13],arr[14]]; var arr2=[arr[0],arr[1],arr[2],arr[3],arr[4],arr[5],arr[6],arr[7],arr[8],arr[9],arr[10],arr[11]]; var c1=d.ting.check3Pai(arr1); var c2=d.ting.check12Pai(arr2); if(c1.r&&c2.r) {result.r=c1.r.concat(c2.r); result.arr=c1.arr.concat(c2.arr); return result; } var arr1=[arr[0],arr[1],arr[2],arr[3],arr[4],arr[5]]; var arr2=[arr[6],arr[7],arr[8],arr[9],arr[10],arr[11],arr[12],arr[13],arr[14]]; var c1=d.ting.check6Pai(arr1); var c2=d.ting.check9Pai(arr2); if(c1.r&&c2.r) {result.r=c1.r.concat(c2.r); result.arr=c1.arr.concat(c2.arr); return result; } var arr1=[arr[9],arr[10],arr[11],arr[12],arr[13],arr[14]]; var arr2=[arr[0],arr[1],arr[2],arr[3],arr[4],arr[5],arr[6],arr[7],arr[8]]; var c1=d.ting.check6Pai(arr1); var c2=d.ting.check9Pai(arr2); if(c1.r&&c2.r) {result.r=c1.r.concat(c2.r); result.arr=c1.arr.concat(c2.arr); return result; } //特殊三连顺 var r1=d.ting.check3shunPai(arr) if(r1.r) {result.r=r1.r; result.arr=r1.arr; return result; } return result; } d.ting.classify_un_Pair = function (arr1, jiang) { var arr = Util.copyArray(arr1); var r0 = d.ting.classify_Pair(arr, jiang); var r = []; Util.ordArray(arr); for (var i = 0; i < r0.length; i++) { var pos = arr.indexOf(r0[i][0]); var arr2 = Util.copyArray(arr); if (pos != -1) { arr2.splice(pos, 2); } r[r.length] = arr2; } r.jiang = r0; if (r0.length == 0) { r.jiang = 0; r[r.length] = arr1; } return r; } //分类牌,取出一对 d.ting.classify_Pair = function (arr, jiang) { var r = []; jiang = jiang || 0; var arr1 = Util.copyArray(arr); Util.ordArray(arr1); var jiangs = [2, 5, 8, 12, 15, 18, 22, 25, 28]; for (var k = 0; k < parseInt(arr.length / 2); k++) { if (arr1.length == 0) { break; } var ban = 0; for (var i = 0; i < arr1.length; i++) { if (arr1[i] == arr1[i + 1] && jiang == 0 || arr1[i] == arr1[i + 1] && jiang == 1 && jiangs.indexOf(arr1[i]) != -1) { r[r.length] = [arr1[i], arr1[i]]; var n = 2; for (var j = 2; j < 4; j++) { if (arr1[i] == arr1[i + j]) { n += 1; } } arr1.splice(i, n); ban = 1; break; } } if (ban == 0) { break; } } return r; } //是否真胡的判断2 d.ting.hu_bool = function (hu) { for (var i = 0; i < hu.type.length; i++) { if (hu.type[i]) { return 1; } } return 0; } //检测是否三连张 d.ting.checkABCPai = function (arr) { //判断 风牌连张 Util.ordArray(arr); if (hu_ting.feng_shun == 1 && arr[0] >= 30 && arr[2] < 40 && arr[0] != arr[1] && arr[1] != arr[2]) return [1]; if (hu_ting.feng_shun == 1 && arr[0] >= 40 && arr[2] < 50 && arr[0] != arr[1] && arr[1] != arr[2]) return [1]; if (arr[0] < 30 && arr[0] == (arr[1] - 1) && arr[1] == (arr[2] - 1)) return [1]; return 0; } //检测是否三重张 d.ting.checkAAAPai = function (arr) { if (arr[0] == arr[1] && arr[1] == arr[2]) return [2]; return 0; } //检测是否四重张 d.ting.checkAAAAPai = function (arr) { if (arr[0] == arr[1] && arr[1] == arr[2] && arr[2] == arr[3]) return [3]; return 0; } //检测是否特殊三连顺、全部是顺 d.ting.check3shunPai = function (arr) { if (hu_ting.feng_shun == 0) {return d.ting.check3shunPai_wuzi(arr);} var arr1 = Util.copyArray(arr); var result = {}; result.arr = []; result.r = 0; var r = 0; var arr2 = []; var l = arr1.length; for (var j = 0; j < l; j++) { for (var i = 0; i < arr1.length; i++) { if (arr1[i] >= 30 && arr1[i] < 40) { arr2[arr2.length] = arr1[i]; arr1.splice(i, 1); break; } } } //处理序数牌、箭牌 var l = parseInt(arr1.length / 3); if (arr1.length >= 3) { for (var k = 0; k < l; k++) { var arr0 = arr1[0]; arr1.splice(0, 1); var ban = 0; var arrange = [arr0]; for (var i = 0; i < arr1.length; i++) { if (arr0 == arr1[i] - 1) { ban = 1; arrange[1] = arr1[i]; arr1.splice(i, 1); break; } } if (ban == 1) { for (var i = 0; i < arr1.length; i++) { if (arr0 == arr1[i] - 2) { ban = 2; arrange[2] = arr1[i]; result.arr[result.arr.length] = Util.copyArray(arrange); arr1.splice(i, 1); if (arr1.length == 0) { r = 1; } break; } } } if (ban == 1) { r = 0; } } } else if (arr1.length >= 1 && arr1.length < 3) { r = 0; } else { r = 1; } result.r = r; if (r) { result.r = []; for (var i = 0; i < l; i++) { result.r[i] = 1; } //处理风牌arr2 if (arr2 && arr2.length > 0) { var r_feng = d.ting.check_fengPai(arr2); if (r_feng.r == 0) { result.r = 0; result.arr = []; } else { result.r = result.r.concat(r_feng.r); result.arr = result.arr.concat(r_feng.arr); } } } return result; } //检测是否特殊三连顺、全部是顺 无字牌 d.ting.check3shunPai_wuzi = function (arr) { var arr1 = Util.copyArray(arr); var result = {}; result.arr = []; var r = 0; var arr2 = []; var l = arr1.length; for (var j = 0; j < l; j++) { for (var i = 0; i < arr1.length; i++) { if (arr1[i] >= 30 && arr1[i] < 50) { arr2[arr2.length] = arr1[i]; arr1.splice(i, 1); break; } } } //处理序数牌 var l = parseInt(arr1.length / 3); if (arr1.length >= 3) { for (var k = 0; k < l; k++) { var arr0 = arr1[0]; arr1.splice(0, 1); var ban = 0; var arrange = [arr0]; for (var i = 0; i < arr1.length; i++) { if (arr0 == arr1[i] - 1) { ban = 1; arrange[1] = arr1[i]; arr1.splice(i, 1); break; } } if (ban == 1) { for (var i = 0; i < arr1.length; i++) { if (arr0 == arr1[i] - 2) { ban = 2; arrange[2] = arr1[i]; result.arr[result.arr.length] = Util.copyArray(arrange); arr1.splice(i, 1); if (arr1.length == 0) { r = 1; } break; } } } if (ban == 1) { r = 0; } } } else { r = 0; } result.r = r; if (r) { result.r = []; for (var i = 0; i < l; i++) { result.r[i] = 1; } //处理字牌 if (arr2 && arr2.length > 0) { var r1 = []; var con = 0; var arrange = []; var l = arr2.length - 2; for (var j = 0; j < l; j++) { if (arr2.length >= 3) { for (var i = 0; i < arr2.length - 2; i++) { if (arr2[i] == arr2[i + 1] && arr2[i] == arr2[i + 2] && arr2[i] == arr2[i + 3]) { arrange[arrange.length] = [arr2[i], arr2[i], arr2[i], arr2[i]]; r1[r1.length] = 3; arr2.splice(i, 4); if (arr2.length == 0) { con = 1; } break; } else if (arr2[i] == arr2[i + 1] && arr2[i] == arr2[i + 2] && arr2[i] != arr2[i + 3]) { arrange[arrange.length] = [arr2[i], arr2[i], arr2[i]]; r1[r1.length] = 2; arr2.splice(i, 3); if (arr2.length == 0) { con = 1; } break; } else { con = 0; break; } } } else if (arr2.length >= 1 && arr2.length < 3) { con = 0; break; } else { break; } } if (con == 1) { result.r = result.r.concat(r1); result.arr = result.arr.concat(arrange); } else { result.r = 0; } } } return result; } //检测风牌是否是顺、刻子 d.ting.check_fengPai = function (arr) { var result = {}; result.arr = []; result.r = []; //3杠 || 2杠1peng || 0杠4peng if (result.r == 0) { var arr1 = Util.copyArray(arr); for (var j = 0; j < 3; j++) { for (var i = 0; i < arr1.length; i++) { if (arr1[i] == arr1[i + 1] && arr1[i] == arr1[i + 2] && arr1[i] == arr1[i + 3]) { result.arr[result.arr.length] = [arr1[i], arr1[i], arr1[i], arr1[i]]; result.r[result.r.length] = 3; arr1.splice(i, 4); break; } else if (arr1[i] == arr1[i + 1] && arr1[i] == arr1[i + 2]) { result.arr[result.arr.length] = [arr1[i], arr1[i], arr1[i], arr1[i]]; result.r[result.r.length] = 2; arr1.splice(i, 3); break; } } } if (arr1.length > 0) { result.arr = []; result.r = 0; } } d.ting.del_zipai = function (arr0) { var r = []; var arr1 = Util.copyArray(arr0); Util.ordArray(arr1); //去掉中发白 41 42 43 var arr_Contrast = [41, 42, 43]; r[0] = Util.copyArray(arr1); for (var k = 0; k < 4; k++) { for (var i = 0; i < r0.length; i++) { var n = 0; for (var j = 0; j < 3; j++) { var pos = r0.indexOf(arr_Contrast[j]); if (pos != -1) { n += 1; } } } if (n < 3) { break; } else if (n == 3) { for (var i = 0; i < r0.length; i++) { for (var j = 0; j < 3; j++) { var pos = r0.indexOf(arr_Contrast[j]); if (pos != -1) { r[0].splice(pos, 1); } } } } } } //1杠 if (result.r == 0) { result.r = []; var arr1 = Util.copyArray(arr); for (var i = 0; i < arr1.length; i++) { if (arr1[i] == arr1[i + 1] && arr1[i] == arr1[i + 2] && arr1[i] == arr1[i + 3]) { result.arr[result.arr.length] = [arr1[i], arr1[i], arr1[i], arr1[i]]; result.r[result.r.length] = 3; arr1.splice(i, 4); break; } } var r = d.ting.check3shunPai_fengPai(arr1); if (r.r == 0) { result.arr = []; result.r = 0; } else { result.arr = result.arr.concat(r.arr); result.r = result.r.concat(r.r); } } //0杠3peng if (result.r == 0) { result.r = []; var arr1 = Util.copyArray(arr); var n = 0; for (var j = 0; j < 4; j++) { for (var i = 0; i < arr1.length - 2; i++) { if (arr1[i] == arr1[i + 1] && arr1[i] == arr1[i + 2]) { result.arr[result.arr.length] = [arr1[i], arr1[i], arr1[i]]; result.r[result.r.length] = 2; arr1.splice(i, 3); n += 1; break; } } if (n == 3) { break; } } var r = d.ting.check3shunPai_fengPai(arr1); if (r.r == 0) { result.arr = []; result.r = 0; } else { result.arr = result.arr.concat(r.arr); result.r = result.r.concat(r.r); } } //0杠2peng if (result.r == 0) { result.r = []; var arr1 = Util.copyArray(arr); var n = 0; for (var j = 0; j < 4; j++) { for (var i = 0; i < arr1.length - 2; i++) { if (arr1[i] == arr1[i + 1] && arr1[i] == arr1[i + 2]) { result.arr[result.arr.length] = [arr1[i], arr1[i], arr1[i]]; result.r[result.r.length] = 2; arr1.splice(i, 3); n += 1; break; } } if (n > 2)//2peng+(1peng当3shun)不存在 { result.arr = []; result.r = 0; break; } } if (n == 2) { var r = d.ting.check3shunPai_fengPai(arr1); if (r.r == 0) { result.arr = []; result.r = 0; } else { result.arr = result.arr.concat(r.arr); result.r = result.r.concat(r.r); } } else { result.arr = []; result.r = 0; } } //0杠1peng if (result.r == 0) { result.r = []; var arr1 = Util.copyArray(arr); var n = 0; var arr2 = []; for (var j = 0; j < 4; j++) { for (var i = 0; i < arr1.length - 2; i++) { if (arr1[i] == arr1[i + 1] && arr1[i] == arr1[i + 2]) { arr2[arr2.length] = arr1[i]; arr1.splice(i, 3); break; } } } for (var i = 0; i < arr2.length; i++) { var arr3 = Util.copyArray(arr); var pos = arr3.indexOf(arr2[i]); result.arr[result.arr.length] = [arr2[i], arr2[i], arr2[i]]; result.r = []; result.r[result.r.length] = 2; if (pos != -1) { arr3.splice(pos, 3); } var r = d.ting.check3shunPai_fengPai(arr3); if (r.r == 0) { result.arr = []; result.r = 0; } else { result.arr = result.arr.concat(r.arr); result.r = result.r.concat(r.r); break; } } } //0杠0peng if (result.r == 0) { result.r = []; var arr1 = Util.copyArray(arr); var r = d.ting.check3shunPai_fengPai(arr1); if (r.r == 0) { result.arr = []; result.r = 0; } else { result.arr = result.arr.concat(r.arr); result.r = result.r.concat(r.r); } } return result; } //检测风牌是否是顺 d.ting.check3shunPai_fengPai = function (arr) { var result = {}; result.arr = []; result.r = []; var arr1 = Util.copyArray(arr); //分类 //4同 4同只会有1个 var arr4 = []; var l = parseInt(arr1.length / 4); for (var j = 0; j < l; j++) { for (var i = 0; i < arr1.length - 3; i++) { if (arr1[i] == arr1[i + 1] && arr1[i] == arr1[i + 2] && arr1[i] == arr1[i + 3]) { arr4[arr4.length] = [arr1[i], arr1[i], arr1[i], arr1[i]]; arr1.splice(i, 4); break; } } } //3同 3同最多会有4个 var arr3 = []; var l = parseInt(arr1.length / 3); for (var j = 0; j < l; j++) { for (var i = 0; i < arr1.length - 2; i++) { if (arr1[i] == arr1[i + 1] && arr1[i] == arr1[i + 2]) { arr3[arr3.length] = [arr1[i], arr1[i], arr1[i]]; arr1.splice(i, 3); break; } } } //2同 3同最多会有4个 var arr2 = []; var l = parseInt(arr1.length / 2); for (var j = 0; j < l; j++) { for (var i = 0; i < arr1.length - 1; i++) { if (arr1[i] == arr1[i + 1]) { arr2[arr2.length] = [arr1[i], arr1[i]]; arr1.splice(i, 2); break; } } } var arr0 = []; for (var i = 0; i < arr4.length; i++) { arr0 = arr0.concat(arr4[i]); } for (var i = 0; i < arr3.length; i++) { arr0 = arr0.concat(arr3[i]); } for (var i = 0; i < arr2.length; i++) { arr0 = arr0.concat(arr2[i]); } arr0 = arr0.concat(arr1); var result = d.ting.get_3shunPai_fengpai(arr0); return result; } d.ting.get_3shunPai_fengpai = function (arr) { var result = {}; result.arr = []; result.r = []; if (arr.length % 3 != 0) { result.r = 0; return result; } var l = parseInt(arr.length / 3); var arr0 = Util.copyArray(arr); for (var m = 0; m < l; m++) { var r_arr = []; for (var k = 0; k < 3; k++) { var l0 = arr0.length; for (var j = 0; j < l0; j++) { var ban = 0; for (var i = 0; i < r_arr.length; i++) { if (arr0[j] == r_arr[i]) { ban = 1; break; } } if (ban == 0) { r_arr[k] = arr0[j]; arr0.splice(j, 1); break; } } } if (r_arr.length == 3) { result.arr[result.arr.length] = r_arr; result.r[result.r.length] = 1; } else { result.arr = []; result.r = 0; break; } } return result; }