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

346 lines
8.4 KiB
JavaScript

var cls_zhaopengyou_tishi = cls_zhaopengyou_tishi ||{
jinxian_tishi : function(){
var zuixiaopai = null;
var zuidapai = null;
var tishipai = [];
tishipai = this.jinxian_tishizha(4);
return tishipai;
},
jinxian_tishizha: function(a){
var tishipai = [];
var wangtishi = this.wang_tishi();
var wsktishi = this.jinxian_ksw_tishi();
// 先除去理牌
var lp = zhaopengyou_bianliang.pub.lipai.concat();
var paiidcpy = zhaopengyou_bianliang.pub.paiid.concat();
var pxList = [];
var paiList = [];
// 手牌中去掉理牌后剩下的牌
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);
// 特殊牌
if (dq_dapai.length == 3 || dq_dapai.length == 4 || dq_dapai.length >= 9) {
if (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[0][0]>=4 && px[0][1] == 1){
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]){
paiidcpy.splice(j,1);
break;
}
}
}
}
var pai = cls_zhaopengyou_aset.CardIdsToCards(paiju, paiidcpy);
for (var i = a; i <= 8; i++) {
var tishizha = cls_zhaopengyou_card.GetCardListByCardTypeA(cls_zhaopengyou_card.SortCardList(pai,[0,0]),
// 牌的类型 [所有可能,小到大,不拆牌,取所有情况] 起始牌
[i,1], [0,0,0,0], null,null);
for (var l = 0; l < tishizha.length; l++) {
tishipai.push(tishizha[l]);
}
if (i == 5 && wangtishi.length == 3) {
tishipai.push(wangtishi);
}
}
if (wangtishi.length == 4) {
tishipai.push(wangtishi);
}
// 将理牌加入提示牌中
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++){
var dq_dapai = tishipai[j];
var px = cls_zhaopengyou_paixing.jinxian_zhaopengyou(dq_dapai);
if (dq_dapai.length == 3 || dq_dapai.length == 4 || dq_dapai.length >= 9) {
if (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, zhaopengyou_bianliang.pub.zuidapai.length, zhaopengyou_bianliang.pub.paiid.length - dq_dapai.length);
if(p){
found = true;
tishipai.splice(j,0,paiList[i]);
break;
}
}
if(!found){
tishipai.push(paiList[i]);
}
}
return tishipai;
},
wang_tishi :function(){
var wang = [];
var pai = cls_zhaopengyou_aset.CardIdsToCards(paiju, zhaopengyou_bianliang.pub.paiid);
for (var i = 0; i < pai.length; i++) {
if (pai[i][4] == 53 || pai[i][4] == 54) {
wang.push(pai[i]);
}
}
return wang;
},
jinxian_ksw_tishi: function(){
var wu = [];
var shi = [];
var kai = [];
var tishipai = [];
// TODO: 理牌中的510K没有加入到510K的提示中
var lp = zhaopengyou_bianliang.pub.lipai.concat();
var paiidcpy = zhaopengyou_bianliang.pub.paiid.concat();
var pxList = [];
var paiList = [];
// 手牌中去掉理牌后剩下的牌
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);
// 特殊牌
if (dq_dapai.length == 3 || dq_dapai.length == 4 || dq_dapai.length >= 9) {
if (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[0][0]>=4 && px[0][1] == 1){
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]){
paiidcpy.splice(j,1);
break;
}
}
}
}
var pai = cls_zhaopengyou_aset.CardIdsToCards(paiju, 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 [tishipai];
}else if (shi.length <= wu.length && shi.length <= kai.length && shi.length >=3) {//有3副以上五十K
return [tishipai];
}else if (kai.length <= wu.length && kai.length <= shi.length && kai.length >=3) {//有3副以上五十K
return [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 [fuwsk,zhengwsk];
}
if (zhengwsk.length) {
return [zhengwsk];
}
if (fuwsk.length) {
return [fuwsk];
}
}
return [];
},
chongren_ksw_tishi: function(){
var wu = [];
var shi = [];
var kai = [];
var tishipai = [];
var pai = cls_zhaopengyou_aset.CardIdsToCards(paiju, zhaopengyou_bianliang.pub.paiid);
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 [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 [tishipai];
}else
if (kai.length <= shi.length && kai.length <= wu.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 [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 [fuwsk,zhengwsk];
}
if (zhengwsk.length) {
return [zhengwsk];
}
if (fuwsk.length) {
return [fuwsk];
}
}
return [];
}
}