删除 YouleNexus 内嵌 .git,统一由根仓库唯一管理。提交: - projects/ 旧 H5 模板 Game_Surface_3 与各子游戏源码 - cocoscreator_projects/YouleNexus 工程 + cocos-creator-mcp 扩展源码 - CLAUDE.md、.mcp.json 等配置 library/temp/node_modules/dist 等缓存由 .gitignore 排除。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2508 lines
62 KiB
JavaScript
2508 lines
62 KiB
JavaScript
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;
|
||
}
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|