1050 lines
32 KiB
JavaScript
1050 lines
32 KiB
JavaScript
var cls_zhaopengyou_tishi = cls_zhaopengyou_tishi ||{
|
||
|
||
jiesan_zhaopengyou : function (o_room,duSeat) {
|
||
var o_desk = o_room.o_desk;
|
||
var paiju = o_desk.method.CurrAset();
|
||
paiju.benju = 1;
|
||
var isteshupai = false;
|
||
var shuangwang = false;
|
||
var zhadanpaitianjia = false;
|
||
for (var i = 0; i < 4; i++) {
|
||
if(typeof(duSeat) != "undefined" && i == duSeat){
|
||
continue;
|
||
}
|
||
paiju.kongzhiquan = i;
|
||
//提示牌
|
||
paiju.paixing = [[1,1],[0,0,0,0,1]];
|
||
paiju.tishipai = cls_zhaopengyou_tishi.jinxian_jiesuan_tishi(o_room);
|
||
// if(o_desk.paiju.banben == 0){
|
||
// paiju.tishipai = cls_zhaopengyou_tishi.jinxian_jiesuan_tishizha(o_room);
|
||
// }else{
|
||
|
||
// }
|
||
for (var j = 0; j < paiju.tishipai.length; j++) {
|
||
isteshupai = false;
|
||
shuangwang = false;
|
||
var dq_dapai = cls_zhaopengyou_aset.CardsToCardIds(paiju.tishipai[j]);
|
||
//获取牌型
|
||
var paixing = cls_zhaopengyou_paixing.jinxian_zhaopengyou(paiju.tishipai[j] , o_desk);
|
||
var nengchu = cls_zhaopengyou_paixing.dapai_zhaopengyou(paiju.tishipai[j],paixing[0],paiju.paiid[i].length - paiju.tishipai[j].length,paixing[1][0][4],paixing[1][paixing[1].length-1][4]);
|
||
var put = false;
|
||
if (!nengchu[0]) {
|
||
if (paiju.tishipai[j].length == 3 || paiju.tishipai[j].length == 4 || paiju.tishipai[j].length>=9) {
|
||
if (o_desk.data.banben == 0) {
|
||
var teshupai = ksw_zhaopengyou.jinxian(paiju.tishipai[j]);
|
||
if (teshupai.length) {
|
||
isteshupai = true;
|
||
paixing = teshupai;
|
||
put = true;
|
||
}
|
||
}else{
|
||
var teshupai = ksw_zhaopengyou.chongren(paiju.tishipai[j]);
|
||
if (teshupai.length) {
|
||
isteshupai = true;
|
||
paixing = teshupai;
|
||
put = true;
|
||
}
|
||
}
|
||
}
|
||
} else {
|
||
paixing[0] = nengchu[1];
|
||
put = nengchu[0];
|
||
}
|
||
if (paixing[0][0] >= 4) {//奖
|
||
if (o_desk.data.banben == 0) {
|
||
var jg = ksw_zhaopengyou.jiang_jinxian(paiju.tishipai[j],paixing,paiju);
|
||
paiju.jiang[i] = paiju.jiang[i] + jg;
|
||
// if (paixing[0][0] == paiju.tishipai[j].length && paixing[0][0] >= 4) {
|
||
// if (paixing[1][0][4] == 15) {
|
||
// paiju.jiang[i] = paiju.jiang[i] +1;
|
||
// }
|
||
// }
|
||
// if(jg>0 || (paixing[0][0] == 4 && isteshupai)){
|
||
// console.log('炸弹牌牌型');
|
||
// console.log(dq_dapai);
|
||
// console.log(paixing);
|
||
|
||
paiju.zhadanpai[i].push(dq_dapai);
|
||
zhadanpaitianjia = true;
|
||
// }
|
||
}else{
|
||
var jg = ksw_zhaopengyou.jiang_chongren(paiju.tishipai[j],paixing,paiju.leixing[6]);
|
||
paiju.jiang[i] = paiju.jiang[i] + jg;
|
||
// if (paixing[0][0] == paiju.tishipai[j].length && paixing[0][0] >= 4) {
|
||
// if (paixing[1][0][4] == 15) {
|
||
// paiju.jiang[i] = paiju.jiang[i] +1;
|
||
// }
|
||
// }
|
||
// if(jg>0 || (paixing[0][0] == 4 && isteshupai)){
|
||
// console.log('炸弹牌牌型');
|
||
// console.log(dq_dapai);
|
||
// console.log(paixing);
|
||
zhadanpaitianjia = true;
|
||
paiju.zhadanpai[i].push(dq_dapai);
|
||
// }
|
||
//paiju.jiang[i] = paiju.jiang[i] + ksw_zhaopengyou.jiang_chongren(paiju.tishipai[j],paixing);
|
||
}
|
||
|
||
}else if (paixing[0][0] == 2 && paixing[0][1] == 1 && paixing[1][0][4] >= 53) {//对王
|
||
paiju.jiang[i] = paiju.jiang[i] + 1;
|
||
paiju.zhadanpai[i].push(dq_dapai);
|
||
zhadanpaitianjia = true;
|
||
shuangwang = true;
|
||
}
|
||
if (paixing[0][0]>=4 && paixing[0][0] == paiju.tishipai[j].length) { //如果是炸弹 则炸弹+1
|
||
paiju.zha[i] = paiju.zha[i]+1;
|
||
// console.log('arithmetic.js seat: '+ i);
|
||
if (paixing[0][0]==4) {
|
||
paiju.duozha[i][0] = paiju.duozha[i][0]+1;
|
||
}
|
||
if (paixing[0][0]==5) {
|
||
paiju.duozha[i][1] = paiju.duozha[i][1]+1;
|
||
// console.log('5炸');
|
||
}
|
||
if (paixing[0][0]==6) {
|
||
paiju.duozha[i][2] = paiju.duozha[i][2]+1;
|
||
// console.log('6炸');
|
||
}
|
||
if (paixing[0][0]==7) {
|
||
paiju.duozha[i][3] = paiju.duozha[i][3]+1;
|
||
// console.log('7炸');
|
||
}
|
||
if (paixing[0][0]==8) {
|
||
paiju.duozha[i][4] = paiju.duozha[i][4]+1;
|
||
// console.log('8炸');
|
||
}
|
||
}
|
||
var seat = i;
|
||
if (paiju.leixing[5] == 2) {
|
||
//检测是否碰奖 // 只有双王和四炸才会计算碰奖 要排除510K
|
||
if(shuangwang || (paixing[0][0] == 4 && !isteshupai)){
|
||
for (var k = 0; k < paiju.paixinglishi.length; k++) {
|
||
if (k != seat) {
|
||
for (var l = 0; l < paiju.paixinglishi[k].length; l++) {
|
||
if (cls_zhaopengyou_paixing.pengjiang_zhaopengyou(paixing, paiju.paixinglishi[k][l])) {
|
||
paiju.jiang[seat] = paiju.jiang[seat] + 1;
|
||
paiju.jiang[k] = paiju.jiang[k] + 1;
|
||
// console.log('碰奖');
|
||
// console.log(i +' '+ seat);
|
||
// console.log(paixing);
|
||
//paiju.zhadanpai[seat].push(pack.data.dq_dapai.reverse());
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
//保存历史牌型
|
||
if (paiju.paixinglishi[seat]) {
|
||
paiju.paixinglishi[seat].push(paixing);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
|
||
}
|
||
paiju.jijiang = cls_bt_suanjiang.new(paiju.duozha);
|
||
paiju.pysx = 1;
|
||
//控制权
|
||
// paiju.kongzhiquan = -2;
|
||
// if (o_desk.data.banben ==0) {
|
||
// //算奖
|
||
// paiju.jijiang = cls_bt_suanjiang.new(paiju.duozha);
|
||
// for (var i = 0; i < paiju.jiang.length; i++) {
|
||
// paiju.jiang[i] = paiju.jiang[i] + paiju.jijiang[i];
|
||
// }
|
||
// //冲关
|
||
// if(paiju.leixing[2]<5){
|
||
// for (var i = 0; i < 4; i++) {
|
||
// if (paiju.jiang[i]>=paiju.leixing[2]+2) {
|
||
// paiju.jiang[i] = paiju.jiang[i] * 2;
|
||
// paiju.chongguan[i] = 1;
|
||
// }
|
||
// }
|
||
// }
|
||
// //霸王
|
||
// if(paiju.leixing[1]==1){
|
||
// var bawang = [0,0];
|
||
// for (var i = 0; i < 4; i++) {
|
||
// if (paiju.jiang[i]>0) {
|
||
// bawang[0] = bawang[0]+1;
|
||
// bawang[1] = i;
|
||
// }
|
||
// }
|
||
// if (bawang[0]==1) {
|
||
// paiju.jiang[bawang[1]] = paiju.jiang[bawang[1]]*2;
|
||
// paiju.chongguan[bawang[1]+4] = 1;
|
||
// }
|
||
// }
|
||
// }
|
||
// //奖 算分
|
||
// paiju.xiaojufen[0] = paiju.jiang[0]*3-paiju.jiang[1]-paiju.jiang[2]-paiju.jiang[3];
|
||
// paiju.xiaojufen[1] = paiju.jiang[1]*3-paiju.jiang[0]-paiju.jiang[2]-paiju.jiang[3];
|
||
// paiju.xiaojufen[2] = paiju.jiang[2]*3-paiju.jiang[0]-paiju.jiang[1]-paiju.jiang[3];
|
||
// paiju.xiaojufen[3] = paiju.jiang[3]*3-paiju.jiang[1]-paiju.jiang[2]-paiju.jiang[0];
|
||
|
||
},
|
||
jinxian_jiesuan_tishizha: function(o_room){
|
||
var paiju = o_room.o_desk.method.CurrAset();
|
||
var tishipai = [];
|
||
|
||
var handpai = cls_zhaopengyou_aset.GetCardsInhand(paiju,paiju.kongzhiquan);
|
||
|
||
var paiidcpy = handpai.concat();
|
||
|
||
|
||
var wsktishi = this.ksw_tishipai(paiidcpy);
|
||
// console.log('wsk');
|
||
// console.log(wsktishi);
|
||
|
||
if(wsktishi.length > 0 && wsktishi[0] >= 3){
|
||
// console.log('出现三个510K及以上');
|
||
// console.log(wsktishi);
|
||
wsktishi[1] = cls_zhaopengyou_card.SortCardList(wsktishi[1],[1,0]);
|
||
//排序放入
|
||
tishipai.push(wsktishi[1]);
|
||
paiidcpy = cls_zhaopengyou_tishi.quchupai(paiidcpy,wsktishi[1]);
|
||
// console.log('去除510');
|
||
// console.log(paiidcpy);
|
||
}
|
||
//提示炸弹时去除之前已经选出的牌
|
||
|
||
//结算提示不管理牌
|
||
|
||
for (var i = 8; i >= 4; i--) {
|
||
var tishizha = cls_zhaopengyou_card.GetCardListByCardTypeA(cls_zhaopengyou_card.SortCardList(paiidcpy,[0,0]),
|
||
// 牌的类型 [所有可能,小到大,不拆牌,取所有情况] 起始牌
|
||
[i,1], [0,1,0,0]);
|
||
// if(tishizha.length > 0){
|
||
// tishipai.push(tishizha[0]);
|
||
// paiidcpy = cls_zhaopengyou_tishi.quchupai(paiidcpy,tishizha[0]);
|
||
// // console.log('去除'+i);
|
||
// // console.log(paiidcpy);
|
||
// }
|
||
for(var j=0;j<tishizha.length;j++){
|
||
tishipai.push(tishizha[j]);
|
||
paiidcpy = cls_zhaopengyou_tishi.quchupai(paiidcpy,tishizha[j]);
|
||
}
|
||
// for (var l = 0; l < tishizha.length; l++) {
|
||
// tishipai.push(tishizha[l]);
|
||
// }
|
||
// if (i == 5 && wangtishi.length == 3) {
|
||
// tishipai.push(wangtishi);
|
||
// }
|
||
// if (i == 5 && wsktishi[0] == 3) {
|
||
// tishipai.push(wsktishi[1]);
|
||
// }
|
||
// b=0;
|
||
}
|
||
var wangtishi = this.wang_tishipai(paiidcpy);
|
||
|
||
if (wangtishi.length >= 3) {
|
||
tishipai.push(wangtishi);
|
||
}else{
|
||
var xiaowang =[];
|
||
var dawang = [];
|
||
for(var m=0;m<wangtishi.length;m++){
|
||
if(wangtishi[m][4]==53){
|
||
xiaowang.push(wangtishi[m]);
|
||
}
|
||
if(wangtishi[m][4]==54){
|
||
dawang.push(wangtishi[m]);;
|
||
}
|
||
}
|
||
if(dawang.length ==2){
|
||
tishipai.push(dawang);
|
||
}
|
||
if(xiaowang.length ==2){
|
||
tishipai.push(xiaowang);
|
||
}
|
||
}
|
||
|
||
return tishipai;
|
||
},
|
||
//从arr1中去除arr2出现的牌 arr1 为card arr2 为card
|
||
quchupai : function(arr1,arr2){
|
||
for(var i=0;i<arr2.length;i++){
|
||
for(var j=0;j<arr1.length;j++){
|
||
if(arr2[i][0] == arr1[j][0]){
|
||
arr1.splice(j,1);
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
return arr1;
|
||
},
|
||
jinxian_jiesuan_tishi : function(o_room){
|
||
var paiju = o_room.o_desk.method.CurrAset();
|
||
paiju.paixing = [[2,1],[[14,2,2,2,15,0,1,1,0,0,1,null,null,null],[40,4,2,4,15,0,1,1,0,0,1,null,null,null]]];//对2 ,因为对王也会算奖,所以最小牌牌型设置为对2
|
||
var zuida = 54;
|
||
var zuixiao = 15;
|
||
var o_desk = o_room.o_desk;
|
||
var tishipai = [];
|
||
// 先从大到小取炸弹 ,然后双王特殊处理
|
||
if (o_desk.data.banben == 0) {
|
||
tishipai = this.jinxian_jiesuan_tishizha(o_room , 4,paiju.paixing[1][0][4]);
|
||
}else{
|
||
tishipai = this.chongren_jiesuan_tishizha(o_room , 4,paiju.paixing[1][0][4]);
|
||
}
|
||
|
||
// console.log('未出牌炸弹');
|
||
// console.log(tishipai);
|
||
return tishipai;
|
||
},
|
||
jinxian_tishi : function(o_room){
|
||
var paiju = o_room.o_desk.method.CurrAset();
|
||
var zuixiaopai = paiju.paixing[1][0][4]+1;
|
||
var zuidapai = null;
|
||
var o_desk = o_room.o_desk;
|
||
var tishipai = [];
|
||
|
||
if ((paiju.paixing[0][0] == 1 && paiju.paixing[0][1]>=5) || (paiju.paixing[0][0] == 2 && paiju.paixing[0][1]>=2) || (paiju.paixing[0][0] == 3 && paiju.paixing[0][1]>=2)) {
|
||
zuidapai = 14;
|
||
}
|
||
|
||
// 先将理牌的牌拿出 再提示 然后在结果里排序
|
||
var handpai = cls_zhaopengyou_aset.GetCardsInhand(paiju,paiju.kongzhiquan);
|
||
|
||
var lp = paiju.lipai[paiju.kongzhiquan];
|
||
var paiidcpy = handpai.concat();
|
||
var pxList = [];
|
||
var paiList = [];
|
||
//如果自己打的不是炸
|
||
if (paiju.paixing[0][0] < 4 ) {
|
||
|
||
// 手牌中去掉理牌后剩下的牌
|
||
for(var i=0;i<lp.length;i++){
|
||
//将牌id列表转换成牌对象列表
|
||
var dq_dapai = cls_zhaopengyou_aset.CardIdsToCards(paiju, lp[i]);
|
||
//排序
|
||
dq_dapai = cls_zhaopengyou_card.SortCardList(dq_dapai)
|
||
//获取牌型
|
||
var px = cls_zhaopengyou_paixing.jinxian_zhaopengyou(dq_dapai, o_desk);
|
||
// 特殊牌
|
||
if (dq_dapai.length == 3 || dq_dapai.length == 4 || dq_dapai.length >= 9) {
|
||
if (o_desk.data.banben == 0) {
|
||
var teshupai = ksw_zhaopengyou.jinxian(dq_dapai);
|
||
if (teshupai.length) {
|
||
px = teshupai;
|
||
put = true;
|
||
}
|
||
} else {
|
||
var teshupai = ksw_zhaopengyou.chongren(dq_dapai);
|
||
if (teshupai.length) {
|
||
px = teshupai;
|
||
put = true;
|
||
}
|
||
}
|
||
}
|
||
// 比较牌型 如果理牌小于当前比牌 不需要加入到提示中
|
||
//比较大小
|
||
if(!px || !px[1] || !px[1][0] || !paiju.paixing || !paiju.paixing[1] || !paiju.paixing[1][0]){
|
||
continue;
|
||
}
|
||
var p = cls_zhaopengyou_paixing.bipai_zhaopengyou(px, paiju.paixing, px[1][0][4], paiju.paixing[1][0][4], dq_dapai.length, paiju.zuidapai.length, paiju.paiid[paiju.kongzhiquan].length - dq_dapai.length);
|
||
|
||
if(p){
|
||
pxList.push(px);
|
||
paiList.push(dq_dapai);
|
||
}
|
||
for(var k=0;k<lp[i].length;k++){
|
||
for(var j=0;j<paiidcpy.length;j++){
|
||
if(lp[i][k] == paiidcpy[j][0]){
|
||
paiidcpy.splice(j,1);
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
//提示牌 牌
|
||
tishipai = cls_zhaopengyou_card.GetCardListByCardTypeA(cls_zhaopengyou_card.SortCardList(paiidcpy,[0,0]),
|
||
// 牌的类型 [所有可能,小到大,拆牌,取所有情况] 起始牌
|
||
paiju.paixing[0], [0,0,1,0], zuixiaopai ,zuidapai);
|
||
if (o_desk.data.banben == 0) {
|
||
var tishizha = this.jinxian_tishizha(o_room, 0);
|
||
}else{
|
||
var tishizha = this.chongren_tishizha(o_room , 0);
|
||
}
|
||
|
||
for (var l = 0; l < tishizha.length; l++) {
|
||
tishipai.push(tishizha[l]);
|
||
}
|
||
}else{
|
||
if (o_desk.data.banben == 0) {
|
||
// 手牌中去掉理牌后剩下的牌
|
||
for(var i=0;i<lp.length;i++){
|
||
//将牌id列表转换成牌对象列表
|
||
var dq_dapai = cls_zhaopengyou_aset.CardIdsToCards(paiju, lp[i]);
|
||
//排序
|
||
dq_dapai = cls_zhaopengyou_card.SortCardList(dq_dapai)
|
||
//获取牌型
|
||
var px = cls_zhaopengyou_paixing.jinxian_zhaopengyou(dq_dapai, o_desk);
|
||
// 特殊牌
|
||
if (dq_dapai.length == 3 || dq_dapai.length == 4 || dq_dapai.length >= 9) {
|
||
if (o_desk.data.banben == 0) {
|
||
var teshupai = ksw_zhaopengyou.jinxian(dq_dapai);
|
||
if (teshupai.length) {
|
||
px = teshupai;
|
||
put = true;
|
||
}
|
||
} else {
|
||
var teshupai = ksw_zhaopengyou.chongren(dq_dapai);
|
||
if (teshupai.length) {
|
||
px = teshupai;
|
||
put = true;
|
||
}
|
||
}
|
||
}
|
||
// 比较牌型 如果理牌小于当前比牌 不需要加入到提示中
|
||
//比较大小
|
||
if(!px || !px[1] || !px[1][0] || !paiju.paixing || !paiju.paixing[1] || !paiju.paixing[1][0]){
|
||
continue;
|
||
}
|
||
var p = cls_zhaopengyou_paixing.bipai_zhaopengyou(px, paiju.paixing, px[1][0][4], paiju.paixing[1][0][4], dq_dapai.length, paiju.zuidapai.length, paiju.paiid[paiju.kongzhiquan].length - dq_dapai.length);
|
||
|
||
if(p){
|
||
pxList.push(px);
|
||
paiList.push(dq_dapai);
|
||
}
|
||
for(var k=0;k<lp[i].length;k++){
|
||
for(var j=0;j<paiidcpy.length;j++){
|
||
if(lp[i][k] == paiidcpy[j][0]){
|
||
paiidcpy.splice(j,1);
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
tishipai = this.jinxian_tishizha(o_room, paiju.paixing[0][0],paiju.paixing[1][0][4]);
|
||
}else{
|
||
tishipai = this.chongren_tishizha(o_room , paiju.paixing[0][0],paiju.paixing[1][0][4]);
|
||
}
|
||
}
|
||
|
||
// 将理牌中的牌加入到提示牌中
|
||
for(var i=0;i<pxList.length;i++){
|
||
var paixing = pxList[i];
|
||
var found = false;
|
||
// console.log('paixing');
|
||
// console.log(paixing);
|
||
for(var j=0;j<tishipai.length;j++){
|
||
//将牌id列表转换成牌对象列表
|
||
var dq_dapai = tishipai[j];
|
||
//获取牌型
|
||
var px = cls_zhaopengyou_paixing.jinxian_zhaopengyou(dq_dapai, o_desk);
|
||
// 特殊牌
|
||
if (dq_dapai.length == 3 || dq_dapai.length == 4 || dq_dapai.length >= 9) {
|
||
if (o_desk.data.banben == 0) {
|
||
var teshupai = ksw_zhaopengyou.jinxian(dq_dapai);
|
||
if (teshupai.length) {
|
||
px = teshupai;
|
||
put = true;
|
||
}
|
||
} else {
|
||
var teshupai = ksw_zhaopengyou.chongren(dq_dapai);
|
||
if (teshupai.length) {
|
||
px = teshupai;
|
||
put = true;
|
||
}
|
||
}
|
||
}
|
||
|
||
//比较大小
|
||
var p = cls_zhaopengyou_paixing.bipai_zhaopengyou(px, paixing, px[1][0][4], paixing[1][0][4], dq_dapai.length, paiju.zuidapai.length, paiju.paiid[paiju.kongzhiquan].length - dq_dapai.length);
|
||
|
||
if(p){
|
||
found = true;
|
||
tishipai.splice(j,0,paiList[i]);
|
||
break;
|
||
}
|
||
|
||
|
||
}
|
||
if(!found){
|
||
tishipai.push(paiList[i]);
|
||
}
|
||
}
|
||
|
||
return tishipai;
|
||
},
|
||
|
||
chongren_jiesuan_tishizha: function(o_room ,a ,b){
|
||
var paiju = o_room.o_desk.method.CurrAset();
|
||
var tishipai = [];
|
||
var wangtishi = this.wang_tishi(o_room);
|
||
var wsktishi = this.chongren_ksw_tishi(o_room);
|
||
if (a < 4 && wsktishi.length) {
|
||
if (wsktishi[0]<3) {
|
||
for (var i = 0; i < wsktishi[1].length; i++) {
|
||
tishipai.push(wsktishi[1][i]);
|
||
}
|
||
}
|
||
}
|
||
if (a==4&&b==1&& wsktishi.length) {
|
||
if (wsktishi[0]<3&&wsktishi[0]>0) {
|
||
tishipai.push(wsktishi[1][wsktishi[1].length-1]);
|
||
|
||
}
|
||
}
|
||
b++;
|
||
if (a<4) {
|
||
a = 4;
|
||
}
|
||
var lp = paiju.lipai[paiju.kongzhiquan];
|
||
// 先将理牌的牌拿出 再提示 然后在结果里排序
|
||
var handpai = cls_zhaopengyou_aset.GetCardsInhand(paiju,paiju.kongzhiquan);
|
||
|
||
var paiidcpy = handpai.concat();
|
||
// 手牌中去掉理牌后剩下的牌
|
||
for(var i=0;i<lp.length;i++){
|
||
|
||
for(var k=0;k<lp[i].length;k++){
|
||
for(var j=0;j<paiidcpy.length;j++){
|
||
if(lp[i][k] == paiidcpy[j][0]){
|
||
paiidcpy.splice(j,1);
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
for (var i = a; i <= 8; i++) {
|
||
var tishizha = cls_zhaopengyou_card.GetCardListByCardTypeA(cls_zhaopengyou_card.SortCardList(paiidcpy,[0,0]),
|
||
// 牌的类型 [所有可能,小到大,不拆牌,取所有情况] 起始牌
|
||
[i,1], [0,0,0,0], b,null);
|
||
|
||
for (var l = 0; l < tishizha.length; l++) {
|
||
tishipai.push(tishizha[l]);
|
||
}
|
||
|
||
if (i == 5 && wsktishi[0] == 3) {
|
||
tishipai.push(wsktishi[1]);
|
||
}
|
||
if (i == 6 && wangtishi.length == 3) {
|
||
tishipai.push(wangtishi);
|
||
}
|
||
b=0;
|
||
}
|
||
if (wsktishi[0] >= 4) {
|
||
tishipai.push(wsktishi[1]);
|
||
}
|
||
if (wangtishi.length == 4) {
|
||
tishipai.push(wangtishi);
|
||
}
|
||
return tishipai;
|
||
},
|
||
|
||
jinxian_tishizha: function(o_room ,a , b){
|
||
var paiju = o_room.o_desk.method.CurrAset();
|
||
var o_desk = o_room.o_desk;
|
||
var tishipai = [];
|
||
var wangtishi = this.wang_tishi(o_room);
|
||
var wsktishi = this.jinxian_ksw_tishi(o_room);
|
||
if (a < 4 && wsktishi.length) {
|
||
if (wsktishi[0]<3) {
|
||
for (var i = 0; i < wsktishi[1].length; i++) {
|
||
tishipai.push(wsktishi[1][i]);
|
||
}
|
||
}
|
||
}
|
||
if (a==4&&b==1&& wsktishi.length) {
|
||
if (wsktishi[0]<3&&wsktishi[0]>0) {
|
||
tishipai.push(wsktishi[1][wsktishi[1].length-1]);
|
||
}
|
||
}
|
||
b++;
|
||
if (a<4) {
|
||
a = 4;
|
||
}
|
||
var lp = paiju.lipai[paiju.kongzhiquan];
|
||
// 先将理牌的牌拿出 再提示 然后在结果里排序
|
||
var handpai = cls_zhaopengyou_aset.GetCardsInhand(paiju,paiju.kongzhiquan);
|
||
|
||
var paiidcpy = handpai.concat();
|
||
// 手牌中去掉理牌后剩下的牌
|
||
for(var i=0;i<lp.length;i++){
|
||
|
||
for(var k=0;k<lp[i].length;k++){
|
||
for(var j=0;j<paiidcpy.length;j++){
|
||
if(lp[i][k] == paiidcpy[j][0]){
|
||
paiidcpy.splice(j,1);
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
for (var i = a; i <= 8; i++) {
|
||
var tishizha = cls_zhaopengyou_card.GetCardListByCardTypeA(cls_zhaopengyou_card.SortCardList(paiidcpy,[0,0]),
|
||
// 牌的类型 [所有可能,小到大,不拆牌,取所有情况] 起始牌
|
||
[i,1], [0,0,0,0], b,null);
|
||
|
||
for (var l = 0; l < tishizha.length; l++) {
|
||
tishipai.push(tishizha[l]);
|
||
}
|
||
if (i == 5 && wangtishi.length == 3) {
|
||
tishipai.push(wangtishi);
|
||
}
|
||
if (i == 5 && wsktishi[0] == 3) {
|
||
tishipai.push(wsktishi[1]);
|
||
}
|
||
if (i == 8 && wangtishi.length == 4) {
|
||
tishipai.push(wangtishi);
|
||
}
|
||
b=0;
|
||
}
|
||
//特殊炸弹情况
|
||
if(a >= 9){
|
||
if (wsktishi[0] >= 4) {
|
||
tishipai.push(wsktishi[1]);
|
||
}
|
||
}
|
||
// if (wangtishi.length == 4) {
|
||
// tishipai.push(wangtishi);
|
||
// }
|
||
// if (wsktishi[0] >= 4) {
|
||
// tishipai.push(wsktishi[1]);
|
||
// }
|
||
return tishipai;
|
||
},
|
||
chongren_tishizha: function(o_room ,a ,b){
|
||
var paiju = o_room.o_desk.method.CurrAset();
|
||
var o_desk = o_room.o_desk;
|
||
var tishipai = [];
|
||
var wangtishi = this.wang_tishi(o_room);
|
||
var wsktishi = this.chongren_ksw_tishi(o_room);
|
||
if (a < 4 && wsktishi.length) {
|
||
if (wsktishi[0]<3) {
|
||
for (var i = 0; i < wsktishi[1].length; i++) {
|
||
tishipai.push(wsktishi[1][i]);
|
||
}
|
||
}
|
||
}
|
||
if (a==4&&b==1&& wsktishi.length) {
|
||
if (wsktishi[0]<3&&wsktishi[0]>0) {
|
||
tishipai.push(wsktishi[1][wsktishi[1].length-1]);
|
||
|
||
}
|
||
}
|
||
b++;
|
||
if (a<4) {
|
||
a = 4;
|
||
}
|
||
var lp = paiju.lipai[paiju.kongzhiquan];
|
||
// 先将理牌的牌拿出 再提示 然后在结果里排序
|
||
var handpai = cls_zhaopengyou_aset.GetCardsInhand(paiju,paiju.kongzhiquan);
|
||
|
||
var paiidcpy = handpai.concat();
|
||
// 手牌中去掉理牌后剩下的牌
|
||
for(var i=0;i<lp.length;i++){
|
||
|
||
for(var k=0;k<lp[i].length;k++){
|
||
for(var j=0;j<paiidcpy.length;j++){
|
||
if(lp[i][k] == paiidcpy[j][0]){
|
||
paiidcpy.splice(j,1);
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
for (var i = a; i <= 8; i++) {
|
||
var tishizha = cls_zhaopengyou_card.GetCardListByCardTypeA(cls_zhaopengyou_card.SortCardList(paiidcpy,[0,0]),
|
||
// 牌的类型 [所有可能,小到大,不拆牌,取所有情况] 起始牌
|
||
[i,1], [0,0,0,0], b,null);
|
||
|
||
for (var l = 0; l < tishizha.length; l++) {
|
||
tishipai.push(tishizha[l]);
|
||
}
|
||
|
||
if (i == 5 && wsktishi[0] == 3) {
|
||
tishipai.push(wsktishi[1]);
|
||
}
|
||
if (i == 6 && wangtishi.length == 3) {
|
||
tishipai.push(wangtishi);
|
||
}
|
||
b=0;
|
||
}
|
||
if (wsktishi[0] >= 4) {
|
||
tishipai.push(wsktishi[1]);
|
||
}
|
||
if (wangtishi.length == 4) {
|
||
tishipai.push(wangtishi);
|
||
}
|
||
return tishipai;
|
||
},
|
||
wang_tishi :function(o_room){
|
||
var paiju = o_room.o_desk.method.CurrAset();
|
||
|
||
var lp = paiju.lipai[paiju.kongzhiquan];
|
||
// 先将理牌的牌拿出 再提示 然后在结果里排序
|
||
var handpai = cls_zhaopengyou_aset.GetCardsInhand(paiju,paiju.kongzhiquan);
|
||
|
||
var paiidcpy = handpai.concat();
|
||
// 手牌中去掉理牌后剩下的牌
|
||
for(var i=0;i<lp.length;i++){
|
||
|
||
for(var k=0;k<lp[i].length;k++){
|
||
for(var j=0;j<paiidcpy.length;j++){
|
||
if(lp[i][k] == paiidcpy[j][0]){
|
||
paiidcpy.splice(j,1);
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
return this.wang_tishipai(paiidcpy);
|
||
},
|
||
wang_tishipai(pai){
|
||
var wang = [];
|
||
for (var i = 0; i < pai.length; i++) {
|
||
if (pai[i][4] == 53 || pai[i][4] == 54) {
|
||
wang.push(pai[i]);
|
||
}
|
||
}
|
||
return wang;
|
||
},
|
||
ksw_tishipai:function(pai){
|
||
var wu = [];
|
||
var shi = [];
|
||
var kai = [];
|
||
var tishipai = [];
|
||
//var pai = paiidcpy;
|
||
for (var i = 0; i < pai.length; i++) {
|
||
switch (pai[i][4]){
|
||
case 5:
|
||
wu.push(pai[i]);
|
||
tishipai.push(pai[i]);
|
||
break;
|
||
case 10:
|
||
shi.push(pai[i]);
|
||
tishipai.push(pai[i]);
|
||
break;
|
||
case 13:
|
||
kai.push(pai[i]);
|
||
tishipai.push(pai[i]);
|
||
break;
|
||
}
|
||
}
|
||
if (wu.length <= shi.length && wu.length <= kai.length && wu.length >=3) {//有3副以上五十K
|
||
return [wu.length,tishipai];
|
||
}else if (shi.length <= wu.length && shi.length <= kai.length && shi.length >=3) {//有3副以上五十K
|
||
return [shi.length,tishipai];
|
||
}else if (kai.length <= wu.length && kai.length <= shi.length && kai.length >=3) {//有3副以上五十K
|
||
return [kai.length,tishipai];
|
||
}else{//没有3副以上五十K
|
||
tishipai = [];
|
||
var zhengwsk = [];
|
||
var fuwsk = [];
|
||
for (var i = 0; i < wu.length; i++) {
|
||
for (var j = 0; j < shi.length; j++) {
|
||
if (wu[i][1] == shi[j][1]) {
|
||
for (var l = 0; l < kai.length; l++) {
|
||
if (wu[i][1] == kai[l][1]) {
|
||
zhengwsk.push(wu[i]);
|
||
zhengwsk.push(shi[j]);
|
||
zhengwsk.push(kai[l]);
|
||
wu.splice(i,1);
|
||
shi.splice(j,1);
|
||
kai.splice(l,1);
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
if (zhengwsk.length) {
|
||
break;
|
||
}
|
||
}
|
||
if (zhengwsk.length) {
|
||
break;
|
||
}
|
||
}
|
||
if (wu.length>0&&shi.length>0&&kai.length>0) {
|
||
fuwsk.push(wu[0]);
|
||
fuwsk.push(shi[0]);
|
||
fuwsk.push(kai[0]);
|
||
}
|
||
if (zhengwsk.length&&fuwsk.length) {
|
||
return [2,[fuwsk,zhengwsk]];
|
||
}
|
||
if (zhengwsk.length) {
|
||
return [1,[zhengwsk]];
|
||
}
|
||
if (fuwsk.length) {
|
||
return [0,[fuwsk]];
|
||
}
|
||
}
|
||
return [];
|
||
},
|
||
jinxian_ksw_tishi: function(o_room){
|
||
var paiju = o_room.o_desk.method.CurrAset();
|
||
|
||
|
||
var lp = paiju.lipai[paiju.kongzhiquan];
|
||
// 先将理牌的牌拿出 再提示 然后在结果里排序
|
||
var handpai = cls_zhaopengyou_aset.GetCardsInhand(paiju,paiju.kongzhiquan);
|
||
|
||
var paiidcpy = handpai.concat();
|
||
// 手牌中去掉理牌后剩下的牌
|
||
for(var i=0;i<lp.length;i++){
|
||
|
||
for(var k=0;k<lp[i].length;k++){
|
||
for(var j=0;j<paiidcpy.length;j++){
|
||
if(lp[i][k] == paiidcpy[j][0]){
|
||
paiidcpy.splice(j,1);
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
return this.ksw_tishipai(paiidcpy);
|
||
|
||
},
|
||
chongren_ksw_tishi: function(o_room){
|
||
var paiju = o_room.o_desk.method.CurrAset();
|
||
var o_desk = o_room.o_desk;
|
||
var wu = [];
|
||
var shi = [];
|
||
var kai = [];
|
||
var tishipai = [];
|
||
var lp = paiju.lipai[paiju.kongzhiquan];
|
||
// 先将理牌的牌拿出 再提示 然后在结果里排序
|
||
var handpai = cls_zhaopengyou_aset.GetCardsInhand(paiju,paiju.kongzhiquan);
|
||
|
||
var paiidcpy = handpai.concat();
|
||
// 手牌中去掉理牌后剩下的牌
|
||
for(var i=0;i<lp.length;i++){
|
||
|
||
for(var k=0;k<lp[i].length;k++){
|
||
for(var j=0;j<paiidcpy.length;j++){
|
||
if(lp[i][k] == paiidcpy[j][0]){
|
||
paiidcpy.splice(j,1);
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
var pai = paiidcpy;
|
||
for (var i = 0; i < pai.length; i++) {
|
||
switch (pai[i][4]){
|
||
case 5:
|
||
wu.push(pai[i]);
|
||
break;
|
||
case 10:
|
||
shi.push(pai[i]);
|
||
break;
|
||
case 13:
|
||
kai.push(pai[i]);
|
||
break;
|
||
}
|
||
}
|
||
|
||
if (wu.length <= shi.length && wu.length <= kai.length && wu.length >=3) {//有3副以上五十K
|
||
for(var i = 0;i<wu.length;i++){
|
||
tishipai.push(wu[i]);
|
||
tishipai.push(shi[i]);
|
||
tishipai.push(kai[i]);
|
||
}
|
||
return [3,tishipai];
|
||
}else if (shi.length <= wu.length && shi.length <= kai.length && shi.length >=3) {//有3副以上五十K
|
||
for(var i = 0;i<shi.length;i++){
|
||
tishipai.push(wu[i]);
|
||
tishipai.push(shi[i]);
|
||
tishipai.push(kai[i]);
|
||
}
|
||
return [3,tishipai];
|
||
}else if (kai.length <= wu.length && kai.length <= shi.length && kai.length >=3) {//有3副以上五十K
|
||
for(var i = 0;i<kai.length;i++){
|
||
tishipai.push(wu[i]);
|
||
tishipai.push(shi[i]);
|
||
tishipai.push(kai[i]);
|
||
}
|
||
return [3,tishipai];
|
||
}else{
|
||
tishipai = [];
|
||
var zhengwsk = [];
|
||
var fuwsk = [];
|
||
for (var i = 0; i < wu.length; i++) {
|
||
for (var j = 0; j < shi.length; j++) {
|
||
if (wu[i][1] == shi[j][1]) {
|
||
for (var l = 0; l < kai.length; l++) {
|
||
if (wu[i][1] == kai[l][1]) {
|
||
zhengwsk.push(wu[i]);
|
||
zhengwsk.push(shi[j]);
|
||
zhengwsk.push(kai[l]);
|
||
wu.splice(i,1);
|
||
shi.splice(j,1);
|
||
kai.splice(l,1);
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
if (zhengwsk.length) {
|
||
break;
|
||
}
|
||
}
|
||
if (zhengwsk.length) {
|
||
break;
|
||
}
|
||
}
|
||
if (wu.length>0&&shi.length>0&&kai.length>0) {
|
||
fuwsk.push(wu[0]);
|
||
fuwsk.push(shi[0]);
|
||
fuwsk.push(kai[0]);
|
||
}
|
||
if (zhengwsk.length&&fuwsk.length) {
|
||
return [2,[fuwsk,zhengwsk]];
|
||
}
|
||
if (zhengwsk.length) {
|
||
return [1,[zhengwsk]];
|
||
}
|
||
if (fuwsk.length) {
|
||
return [0,[fuwsk]];
|
||
}
|
||
}
|
||
return [];
|
||
},
|
||
xingxing_zhaopengyou : function(o_room){
|
||
var paiju = o_room.o_desk.method.CurrAset();
|
||
var o_desk = o_room.o_desk;
|
||
var jiafen = 0;
|
||
var xingxingfen = [];//实际扣除的星星数
|
||
var jiesan = [];
|
||
|
||
for (var j = 0; j < o_desk.data.people; j++) {
|
||
xingxingfen[j] = 0;
|
||
if (paiju.xiaojufen[j]<0) {//输分
|
||
if (o_room.seatlist[j].bean + paiju.xiaojufen[j] * o_desk.data.beishu >0) {//星星数大于扣分
|
||
xingxingfen[j] = paiju.xiaojufen[j] * o_desk.data.beishu;
|
||
}else{//星星数小于扣分
|
||
xingxingfen[j] = 0-o_room.seatlist[j].bean;
|
||
jiesan.push(j);
|
||
}
|
||
}
|
||
}
|
||
|
||
|
||
|
||
for (var i = 0; i < xingxingfen.length; i++) {//一起输出多少星星
|
||
jiafen = jiafen - xingxingfen[i];
|
||
}
|
||
|
||
for (var i = 0; i < o_room.seatlist.length; i++) {
|
||
if (o_room.seatlist[i]) {
|
||
if (o_room.seatlist[i].bean < o_room.roomtype[6][1]) {
|
||
var msg = {};
|
||
msg.app = "youle";
|
||
msg.route = "zhaopengyou";
|
||
msg.rpc = 'xingxingbugou';
|
||
msg.data = {};
|
||
o_room.method.sendpack_toseat(msg, jiesan[i]);
|
||
var tr = function(){
|
||
//踢人
|
||
mod_zpy.app.youle_room.export.kickplayer_inroom(o_room, jiesan[i]);
|
||
}
|
||
o_room.o_desk.timer.tiren = setTimeout(tr,4000);
|
||
|
||
}
|
||
}
|
||
}
|
||
|
||
|
||
|
||
if (paiju.xiaojufen[0] >= paiju.xiaojufen[1] && paiju.xiaojufen[0] >= paiju.xiaojufen[2]) {
|
||
if (paiju.xiaojufen[0] * o_desk.data.beishu >= jiafen) {//赢的星星大于扣的星星数
|
||
xingxingfen[0] = jiafen;
|
||
}else{
|
||
xingxingfen[0] = paiju.xiaojufen[0] * o_desk.data.beishu;
|
||
}
|
||
if (paiju.xiaojufen[1] > paiju.xiaojufen[2]) {//1>2
|
||
if (paiju.xiaojufen[1]>0) {
|
||
xingxingfen[1] = jiafen - paiju.xiaojufen[0] * o_desk.data.beishu;
|
||
}
|
||
}else{
|
||
if (paiju.xiaojufen[2]>0) {
|
||
xingxingfen[2] = jiafen - paiju.xiaojufen[0] * o_desk.data.beishu;
|
||
}
|
||
}
|
||
}else if (paiju.xiaojufen[1] >= paiju.xiaojufen[0] && paiju.xiaojufen[1] >= paiju.xiaojufen[2]) {
|
||
if (paiju.xiaojufen[1] * o_desk.data.beishu > jiafen) {//赢的星星大于扣的星星数
|
||
xingxingfen[1] = jiafen;
|
||
}else{
|
||
xingxingfen[1] = paiju.xiaojufen[1] * o_desk.data.beishu;
|
||
}
|
||
//0>2
|
||
if (paiju.xiaojufen[0] > paiju.xiaojufen[2]) {
|
||
if (paiju.xiaojufen[0]>0) {
|
||
xingxingfen[0] = jiafen - paiju.xiaojufen[1] * o_desk.data.beishu;
|
||
}
|
||
}else{
|
||
if (paiju.xiaojufen[2]>0) {
|
||
xingxingfen[2] = jiafen - paiju.xiaojufen[1] * o_desk.data.beishu;
|
||
}
|
||
}
|
||
}else if (paiju.xiaojufen[2] >= paiju.xiaojufen[0] && paiju.xiaojufen[2] >= paiju.xiaojufen[1]) {
|
||
if (paiju.xiaojufen[2] * o_desk.data.beishu > jiafen) {//赢的星星大于扣的星星数
|
||
xingxingfen[2] = jiafen;
|
||
}else{
|
||
xingxingfen[2] = paiju.xiaojufen[2] * o_desk.data.beishu;
|
||
}
|
||
//0>1
|
||
if (paiju.xiaojufen[0] > paiju.xiaojufen[1]) {
|
||
if (paiju.xiaojufen[0]>0) {
|
||
xingxingfen[0] = jiafen - paiju.xiaojufen[2] * o_desk.data.beishu;
|
||
}
|
||
}else{
|
||
if (paiju.xiaojufen[1]>0) {
|
||
xingxingfen[1] = jiafen - paiju.xiaojufen[2] * o_desk.data.beishu;
|
||
}
|
||
}
|
||
}
|
||
var xxs = [];
|
||
for(var i = 0 ; i<o_desk.data.people;i++){
|
||
xxs[i] = o_room.seatlist[i].bean;
|
||
}
|
||
//o_room: 房间对象,arr_grade: 对应座位的玩家该局输赢分数数组(例如:[2,3,4,null,null]),nowCount:当前局数
|
||
var chashui = mod_zpy.app.youle_room.export.save_grade_aset(o_room, xingxingfen, o_desk.data.ju);
|
||
|
||
for (var i = 0; i < chashui.length; i++) {
|
||
xxs[i] = xxs[i]+chashui[i];
|
||
}
|
||
|
||
for (var i = 0; i < o_room.seatlist.length; i++) {
|
||
if (o_room.seatlist[i]){
|
||
o_room.seatlist[i].gameinfo.isbet = 0;
|
||
o_desk.data.zhunbei[i] = 1;
|
||
o_room.seatlist[i].gameinfo.isprepare = 0;
|
||
|
||
}
|
||
}
|
||
return xxs;
|
||
},
|
||
chushihua_zhaopengyou : function(o_room){
|
||
var o_desk = o_room.o_desk;
|
||
o_desk.data.grade = [];
|
||
o_desk.data.quanbufen = [];//
|
||
o_desk.data.huifang = [];//回放汇总
|
||
o_desk.data.putpai = [];//出牌情况
|
||
o_desk.data.zhanji = [];//战绩分
|
||
o_desk.data.playerid = [];
|
||
o_desk.data.zhunbei = [1,1,1];//准备阶段
|
||
o_desk.data.laizi = 0;
|
||
switch(o_room.roomtype[3]){//模式
|
||
case 1:
|
||
o_desk.data.laizi = 0;
|
||
break;
|
||
case 2:
|
||
o_desk.data.laizi = 1;
|
||
break;
|
||
}
|
||
o_desk.method_flow = null;
|
||
o_desk.timer.fapai = 0;
|
||
o_desk.timer.dapai = 0;
|
||
o_desk.timer.buyao = 0;
|
||
o_desk.timer.flow = 0;
|
||
o_desk.timer.tiren = 0;
|
||
for (var i = 0; i < o_desk.data.people; i++) {
|
||
o_desk.data.grade.push(0);
|
||
}
|
||
}
|
||
} |