删除 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>
2023 lines
58 KiB
JavaScript
2023 lines
58 KiB
JavaScript
var module_CardInfo = function(_number,_type,_level,_tag){
|
|
this.idList = [];
|
|
this.count = 0;
|
|
this.number = _number;
|
|
this.type = _type;
|
|
this.level = _level;
|
|
this.tag = _tag;
|
|
}
|
|
module_CardInfo.prototype.addIdToList = function(_id){
|
|
this.idList.push(_id);
|
|
this.count = this.idList.length;
|
|
}
|
|
module_CardInfo.prototype.delIdFromList=function(_id){
|
|
var index = this.idList.indexOf(_id);
|
|
if(index>-1){
|
|
this.idList.splice(index,1);
|
|
this.count = this.idList.length;
|
|
return true;
|
|
}else{
|
|
return false;
|
|
}
|
|
}
|
|
module_CardInfo.prototype.getFromIdList=function(){
|
|
|
|
if(this.idList.length>0){
|
|
var id = this.idList.splice(index,1);
|
|
this.count = this.idList.length;
|
|
return id;
|
|
}else{
|
|
return null;
|
|
}
|
|
}
|
|
module_CardInfo.prototype.getTag = function(){
|
|
return this.tag;
|
|
}
|
|
module_CardInfo.prototype.setTag = function(_tag){
|
|
this.tag = _tag;
|
|
}
|
|
//class module_CardInfo{
|
|
//constructor (_number,_type,_level,_tag){
|
|
//this.idList = [];
|
|
//this.count = 0;
|
|
//this.number = _number;
|
|
//this.type = _type;
|
|
//this.level = _level;
|
|
//this.tag = _tag;
|
|
//}
|
|
//addIdToList (_id){
|
|
//this.idList.push(_id);
|
|
//this.count = this.idList.length;
|
|
//}
|
|
//delIdFromList (_id){
|
|
//var index = this.idList.indexOf(_id);
|
|
//if(index>-1){
|
|
//this.idList.splice(index,1);
|
|
//this.count = this.idList.length;
|
|
//return true;
|
|
//}else{
|
|
//return false;
|
|
//}
|
|
//}
|
|
//getFromIdList (){
|
|
|
|
//if(this.idList.length>0){
|
|
//var id = this.idList.splice(index,1);
|
|
//this.count = this.idList.length;
|
|
//return id;
|
|
//}else{
|
|
//return null;
|
|
//}
|
|
//}
|
|
//getTag (){
|
|
//return this.tag;
|
|
//}
|
|
//setTag (_tag){
|
|
//this.tag = _tag;
|
|
//}
|
|
//}
|
|
|
|
var module_algorithm = module_algorithm || {};
|
|
//初始化牌
|
|
module_algorithm.allCards = [];
|
|
//发牌临时数据
|
|
//module_algorithm.dealTemp = [];
|
|
//module_algorithm.initDealTemp = function(){
|
|
|
|
//}
|
|
module_algorithm.prototypeList = [];
|
|
|
|
module_algorithm.initCards = function(){
|
|
this.allCards = [];
|
|
var dealTemp = [];
|
|
var _dealCards = function(){
|
|
|
|
}
|
|
for (var i = 1; i <= module_const.pairs; i++){
|
|
//四种花色
|
|
for (var j = 1; j <= 4; j++){
|
|
for (var k = 1; k <= 13; k++){
|
|
//牌id
|
|
var id = (i - 1) * 54 + (j - 1) * 13 + k - 1;
|
|
//分值
|
|
var score = 0;
|
|
//发牌状态
|
|
var dealowner = 0;
|
|
//特殊处理
|
|
switch (k)
|
|
{
|
|
case 5:
|
|
score = 5;
|
|
break;
|
|
case 10:
|
|
score = 10;
|
|
break;
|
|
case 13:
|
|
score = 10;
|
|
break;
|
|
}
|
|
var new_card = module_card.new(id,score);
|
|
this.dealCards(new_card);
|
|
this.allCards.push(new_card);
|
|
|
|
}
|
|
}
|
|
var new_card = module_card.new((i - 1) * 54 + 53 - 1,0);
|
|
//小王
|
|
this.dealCards(new_card);
|
|
this.allCards.push(new_card);
|
|
//大王
|
|
new_card = module_card.new((i - 1) * 54 + 54 - 1,0);
|
|
this.dealCards(new_card);
|
|
this.allCards.push(new_card);
|
|
}
|
|
}
|
|
//id转化为数值
|
|
module_algorithm.convertIdToNumber = function(_cardId){
|
|
if (_cardId % 54 == 52){
|
|
//小王
|
|
return 53;
|
|
}
|
|
if (_cardId % 54 == 53){
|
|
//大王
|
|
return 54;
|
|
}
|
|
return module_rule.card_order.order[(_cardId % 54) % 13];
|
|
}
|
|
//id转为花色
|
|
module_algorithm.convertIdToFlower = function(_cardId){
|
|
if (_cardId % 54 == 52){
|
|
//小王
|
|
return 5;
|
|
}
|
|
if (_cardId % 54 == 53){
|
|
//大王
|
|
return 5;
|
|
}
|
|
|
|
return parseInt((_cardId % 54) / 13) + 1;
|
|
}
|
|
//id转为编码
|
|
module_algorithm.convertIdToCode = function(_cardId){
|
|
if (_cardId % 54 == 52){
|
|
//小王
|
|
return 5305;
|
|
}
|
|
if (_cardId % 54 == 53){
|
|
//大王
|
|
return 5405;
|
|
}
|
|
var flower = this.convertIdToFlower(_cardId);
|
|
var number = this.convertIdToNumber(_cardId);
|
|
var code = number * 100 + flower;
|
|
return code;
|
|
}
|
|
//发牌
|
|
module_algorithm.dealCards = function(o_card){
|
|
|
|
}
|
|
//打乱排序
|
|
module_algorithm.mixUpCardList = function(_cardList){
|
|
var cd_list = [].concat(_cardList);
|
|
while(cd_list.length==0){
|
|
|
|
}
|
|
}
|
|
//牌列表排序(从大到小排序)
|
|
module_algorithm.orderCardsById = function(_cardList){
|
|
var cardListTemp = [].concat(_cardList);
|
|
if (cardListTemp){
|
|
for (var i = 0; i < cardListTemp.length; i++) {
|
|
for (var j = i + 1; j < cardListTemp.length; j++) {
|
|
var i_code = this.convertIdToCode(cardListTemp[i]);
|
|
var j_code = this.convertIdToCode(cardListTemp[j]);
|
|
if (i_code < j_code) {
|
|
var tmp = cardListTemp[j];
|
|
cardListTemp[j] = cardListTemp[i];
|
|
cardListTemp[i] = tmp;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return cardListTemp;
|
|
|
|
}
|
|
|
|
//得出510K解析牌型
|
|
module_algorithm.get510KCardObjectList = function(_cardList){
|
|
try{
|
|
if(!_cardList){
|
|
return [];
|
|
}
|
|
if(_cardList.length == 0){
|
|
return [];
|
|
}
|
|
_cardList = module_algorithm.orderCardsById(_cardList);
|
|
var cardObjListTemp = module_card.convertIdListToObjectList(_cardList);
|
|
module_algorithm.prototypeList = ['link510K'];
|
|
//for(var key in module_rule.card_prototype){
|
|
//module_algorithm.prototypeList.push(key);
|
|
//}
|
|
var num = -1;
|
|
var cardInfoList = [];
|
|
var result = [];
|
|
var restRardInfoList = [];
|
|
var restRardInfoListTemp = [];
|
|
var resultList = [];
|
|
var m=0;
|
|
//for(var m=0;m<module_algorithm.prototypeList.length;m++){
|
|
result = [];
|
|
cardInfoList = [];
|
|
var typeList = [];
|
|
restRardInfoList = [];
|
|
restRardInfoListTemp = [];
|
|
for(var j=0;j<module_rule.card_type[module_algorithm.prototypeList[m]].length;j++){
|
|
if(typeList.indexOf(module_rule.card_type[module_algorithm.prototypeList[m]][j][0])==-1
|
|
&& module_rule.card_type[module_algorithm.prototypeList[m]][j][0] != 0){
|
|
typeList.push(module_rule.card_type[module_algorithm.prototypeList[m]][j][0]);
|
|
}else{
|
|
|
|
}
|
|
}
|
|
var cardObjList =[];
|
|
for(var j=0;j<typeList.length;j++){
|
|
cardObjList =[];
|
|
cardInfoList = [];
|
|
restRardInfoList = [];
|
|
restRardInfoListTemp = [];
|
|
result = [];
|
|
for(var k=0;k<cardObjListTemp.length;k++){
|
|
if(typeList[j] == cardObjListTemp[k][module_algorithm.prototypeList[m]][0]){
|
|
cardObjList.push(module_util.clone(cardObjListTemp[k]));
|
|
}else{
|
|
restRardInfoListTemp.push(module_util.clone(cardObjListTemp[k]));
|
|
}
|
|
}
|
|
cardObjList = module_algorithm.orderObjectListByKeyArray(cardObjList,module_algorithm.prototypeList[m],1);
|
|
//获取同一属性牌的组合
|
|
for(var i=0;i<cardObjList.length;i++){
|
|
var c_num = module_algorithm.convertIdToNumber(cardObjList[i].id);
|
|
if(num != c_num){
|
|
num = c_num;
|
|
var cardInfoTemp = new module_CardInfo(num,cardObjList[i][module_algorithm.prototypeList[m]][0],
|
|
cardObjList[i][module_algorithm.prototypeList[0]][1],module_const.TAG.sde);
|
|
cardInfoTemp.addIdToList(cardObjList[i].id);
|
|
cardInfoList.push(cardInfoTemp);
|
|
}else{
|
|
cardInfoList[cardInfoList.length-1].addIdToList(cardObjList[i].id);
|
|
}
|
|
cardObjList[i] = null;
|
|
}
|
|
//设置牌的起始结束连牌单牌位
|
|
var tagTemp = module_const.TAG.sde;
|
|
if(cardInfoList.length >= 2){
|
|
if(cardInfoList[cardInfoList.length - 1].level + 1 == cardInfoList[cardInfoList.length - 2].level){
|
|
|
|
cardInfoList[cardInfoList.length - 1].setTag(module_const.TAG.beg);
|
|
|
|
}else{
|
|
|
|
}
|
|
}
|
|
for(var i = cardInfoList.length - 2;i >= 0;i--){
|
|
if(cardInfoList[i + 1].level + 1 == cardInfoList[i].level){
|
|
if(i == 0){//为最后一位
|
|
cardInfoList[i].setTag(module_const.TAG.end);
|
|
}else{
|
|
cardInfoList[i].setTag(module_const.TAG.mid);
|
|
}
|
|
if(cardInfoList[i + 1].getTag() == module_const.TAG.sde){
|
|
|
|
cardInfoList[i + 1].setTag(module_const.TAG.beg);
|
|
}
|
|
}else{
|
|
|
|
if(cardInfoList[i+1].getTag() == module_const.TAG.mid || cardInfoList[i+1].getTag() == module_const.TAG.beg){
|
|
|
|
cardInfoList[i + 1].setTag(module_const.TAG.end);
|
|
}
|
|
|
|
}
|
|
}
|
|
result.push(cardInfoList);
|
|
|
|
result.push(restRardInfoListTemp);
|
|
resultList.push(result);
|
|
}
|
|
return resultList;
|
|
//}
|
|
}catch(e){
|
|
var _msg = {};
|
|
_msg._cardList = _cardList;
|
|
_msg.func = "module_algorithm.get510KCardObjectList";
|
|
_msg.spyzuobiao = spyzuobiao;
|
|
|
|
_msg.chshoupai = chshoupai;
|
|
_msg.zshu = zshu;
|
|
_msg.bijiao = bijiao;
|
|
_msg = JSON.stringify(_msg);
|
|
module_util.submitError(_msg,e.stack);
|
|
}
|
|
}
|
|
//获得牌列表信息
|
|
module_algorithm.getCardListInfo = function(_cardList){
|
|
try{
|
|
if(!_cardList){
|
|
return [];
|
|
}
|
|
if(_cardList.length == 0){
|
|
return [];
|
|
}
|
|
_cardList = module_algorithm.orderCardsById(_cardList);
|
|
var cardObjListTemp = module_card.convertIdListToObjectList(_cardList);
|
|
module_algorithm.prototypeList = ['link'];
|
|
//for(var key in module_rule.card_prototype){
|
|
//module_algorithm.prototypeList.push(key);
|
|
//}
|
|
var num = -1;
|
|
var cardInfoList = [];
|
|
var result = [];
|
|
var restRardInfoList = [];
|
|
var restRardInfoListTemp = [];
|
|
var resultList = [];
|
|
var m=0;
|
|
//for(var m=0;m<module_algorithm.prototypeList.length;m++){
|
|
result = [];
|
|
cardInfoList = [];
|
|
var typeList = [];
|
|
restRardInfoList = [];
|
|
restRardInfoListTemp = [];
|
|
for(var j=0;j<module_rule.card_type[module_algorithm.prototypeList[m]].length;j++){
|
|
if(typeList.indexOf(module_rule.card_type[module_algorithm.prototypeList[m]][j][0])==-1
|
|
&& module_rule.card_type[module_algorithm.prototypeList[m]][j][0] != 0){
|
|
typeList.push(module_rule.card_type[module_algorithm.prototypeList[m]][j][0]);
|
|
}else{
|
|
|
|
}
|
|
}
|
|
var cardObjList =[];
|
|
for(var j=0;j<typeList.length;j++){
|
|
cardObjList =[];
|
|
cardInfoList = [];
|
|
restRardInfoList = [];
|
|
restRardInfoListTemp = [];
|
|
result = [];
|
|
for(var k=0;k<cardObjListTemp.length;k++){
|
|
if(typeList[j] == cardObjListTemp[k][module_algorithm.prototypeList[m]][0]){
|
|
cardObjList.push(module_util.clone(cardObjListTemp[k]));
|
|
}else{
|
|
restRardInfoListTemp.push(module_util.clone(cardObjListTemp[k]));
|
|
}
|
|
}
|
|
cardObjList = module_algorithm.orderObjectListByKeyArray(cardObjList,module_algorithm.prototypeList[m],1);
|
|
//获取同一属性牌的组合
|
|
for(var i=0;i<cardObjList.length;i++){
|
|
var c_num = module_algorithm.convertIdToNumber(cardObjList[i].id);
|
|
if(num != c_num){
|
|
num = c_num;
|
|
var cardInfoTemp = new module_CardInfo(num,cardObjList[i][module_algorithm.prototypeList[m]][0],
|
|
cardObjList[i][module_algorithm.prototypeList[0]][1],module_const.TAG.sde);
|
|
cardInfoTemp.addIdToList(cardObjList[i].id);
|
|
cardInfoList.push(cardInfoTemp);
|
|
}else{
|
|
cardInfoList[cardInfoList.length-1].addIdToList(cardObjList[i].id);
|
|
}
|
|
cardObjList[i] = null;
|
|
}
|
|
//设置牌的起始结束连牌单牌位
|
|
var tagTemp = module_const.TAG.sde;
|
|
if(cardInfoList.length >= 2){
|
|
if(cardInfoList[cardInfoList.length - 1].level + 1 == cardInfoList[cardInfoList.length - 2].level){
|
|
|
|
cardInfoList[cardInfoList.length - 1].setTag(module_const.TAG.beg);
|
|
|
|
}else{
|
|
|
|
}
|
|
}
|
|
for(var i = cardInfoList.length - 2;i >= 0;i--){
|
|
if(cardInfoList[i + 1].level + 1 == cardInfoList[i].level){
|
|
if(i == 0){//为最后一位
|
|
cardInfoList[i].setTag(module_const.TAG.end);
|
|
}else{
|
|
cardInfoList[i].setTag(module_const.TAG.mid);
|
|
}
|
|
if(cardInfoList[i + 1].getTag() == module_const.TAG.sde){
|
|
|
|
cardInfoList[i + 1].setTag(module_const.TAG.beg);
|
|
}
|
|
}else{
|
|
|
|
if(cardInfoList[i+1].getTag() == module_const.TAG.mid || cardInfoList[i+1].getTag() == module_const.TAG.beg){
|
|
|
|
cardInfoList[i + 1].setTag(module_const.TAG.end);
|
|
}
|
|
|
|
}
|
|
}
|
|
result.push(cardInfoList);
|
|
|
|
result.push(restRardInfoListTemp);
|
|
resultList.push(result);
|
|
}
|
|
return resultList;
|
|
//}
|
|
}catch(e){
|
|
var _msg = {};
|
|
_msg._cardList = _cardList;
|
|
_msg.func = "module_algorithm.getCardListInfo";
|
|
_msg.spyzuobiao = spyzuobiao;
|
|
_msg.chshoupai = chshoupai;
|
|
_msg.zshu = zshu;
|
|
_msg.bijiao = bijiao;
|
|
_msg = JSON.stringify(_msg);
|
|
module_util.submitError(_msg,e.stack);
|
|
}
|
|
|
|
}
|
|
var module_CardType = function(_number,_type,_level){
|
|
//constructor (_number,_type,_level){
|
|
this.idList = [];
|
|
this.count = 0;
|
|
this.type = _type;
|
|
this.level = _level;
|
|
//}
|
|
}
|
|
|
|
module_CardType.prototype.addIdToList = function(_id){
|
|
this.idList.push(_id);
|
|
this.count = this.idList.length;
|
|
}
|
|
module_CardType.prototype.delIdFromList = function(_id){
|
|
var index = this.idList.indexOf(_id);
|
|
if(index>-1){
|
|
this.idList.splice(index,1);
|
|
this.count = this.idList.length;
|
|
return true;
|
|
}else{
|
|
return false;
|
|
}
|
|
}
|
|
|
|
//class module_CardType{
|
|
//constructor (_number,_type,_level){
|
|
//this.idList = [];
|
|
//this.count = 0;
|
|
//this.type = _type;
|
|
//this.level = _level;
|
|
//}
|
|
//addIdToList (_id){
|
|
//this.idList.push(_id);
|
|
//this.count = this.idList.length;
|
|
//}
|
|
//delIdFromList (_id){
|
|
//var index = this.idList.indexOf(_id);
|
|
//if(index>-1){
|
|
//this.idList.splice(index,1);
|
|
//this.count = this.idList.length;
|
|
//return true;
|
|
//}else{
|
|
//return false;
|
|
//}
|
|
//}
|
|
//}
|
|
var module_Analyses = function(_type,_level,_linkCount){
|
|
//constructor (_type,_level,_linkCount = 1){
|
|
this.idList = [];
|
|
this.count = 0;
|
|
this.type = _type;
|
|
this.level = _level;
|
|
this.linkCount = _linkCount;
|
|
//}
|
|
}
|
|
|
|
module_Analyses.prototype.addIdToList = function(_id){
|
|
this.idList.push(_id);
|
|
this.count = this.idList.length;
|
|
}
|
|
module_Analyses.prototype.delIdFromList = function(_id){
|
|
var index = this.idList.indexOf(_id);
|
|
if(index>-1){
|
|
this.idList.splice(index,1);
|
|
this.count = this.idList.length;
|
|
return true;
|
|
}else{
|
|
return false;
|
|
}
|
|
}
|
|
module_Analyses.prototype.addIdListToList = function(_idList){
|
|
for(var i=0;i<_idList.length;i++){
|
|
this.idList.push(_idList[i]);
|
|
}
|
|
this.count = this.idList.length;
|
|
}
|
|
|
|
//class module_Analyses{
|
|
//constructor (_type,_level,_linkCount = 1){
|
|
//this.idList = [];
|
|
//this.count = 0;
|
|
//this.type = _type;
|
|
//this.level = _level;
|
|
//this.linkCount = _linkCount;
|
|
//}
|
|
//addIdToList (_id){
|
|
//this.idList.push(_id);
|
|
//this.count = this.idList.length;
|
|
//}
|
|
//delIdFromList (_id){
|
|
//var index = this.idList.indexOf(_id);
|
|
//if(index>-1){
|
|
//this.idList.splice(index,1);
|
|
//this.count = this.idList.length;
|
|
//return true;
|
|
//}else{
|
|
//return false;
|
|
//}
|
|
//}
|
|
//addIdListToList (_idList){
|
|
//for(var i=0;i<_idList.length;i++){
|
|
//this.idList.push(_idList[i]);
|
|
//}
|
|
//this.count = this.idList.length;
|
|
//}
|
|
//}
|
|
//排列表是否为合法牌型如果符合返回牌型,不符合返回null (只判断单种牌型)
|
|
module_algorithm.legalCardsType = function(_cardInfoList,_bTemp/*是否手中已经无牌*/){
|
|
try{
|
|
var _cardInfo = _cardInfoList[0];
|
|
var _restCards = _cardInfoList[1];
|
|
var _restCardsSum = _cardInfoList[1].length;
|
|
var _infoLength = _cardInfo.length;
|
|
var result = [];
|
|
var alyTemp = null;
|
|
var addSum = 0; //cardInfo可以额外带的牌数量
|
|
switch(_infoLength){
|
|
case 0:
|
|
return null;
|
|
break;
|
|
case 1:
|
|
switch(_cardInfo[0].count){
|
|
case 1:
|
|
alyTemp = new module_Analyses(CARDTYPE.cone,_cardInfo[0].level,1);
|
|
//alyTemp.addIdListToList(_cardInfo[0].idList);
|
|
addSum = 0;
|
|
//return alyTemp;
|
|
break;
|
|
case 2:
|
|
alyTemp = new module_Analyses(CARDTYPE.ctwo,_cardInfo[0].level,1);
|
|
//alyTemp.addIdListToList(_cardInfo[0].idList);
|
|
//return alyTemp;
|
|
break;
|
|
case 3:
|
|
alyTemp = new module_Analyses(CARDTYPE.cthree,_cardInfo[0].level,1);
|
|
//alyTemp.addIdListToList(_cardInfo[0].idList);
|
|
addSum = 2;
|
|
//return alyTemp;
|
|
break;
|
|
case 4:
|
|
if(_restCardsSum==0){
|
|
alyTemp = new module_Analyses(CARDTYPE.cboom4,_cardInfo[0].level,1);
|
|
addSum = 0;
|
|
}else{
|
|
alyTemp = new module_Analyses(CARDTYPE.cthree,_cardInfo[0].level,1);
|
|
//alyTemp.addIdListToList(_cardInfo[0].idList);
|
|
addSum = 1;
|
|
}
|
|
//return alyTemp;
|
|
break;
|
|
case 5:
|
|
alyTemp = new module_Analyses(CARDTYPE.cboom5,_cardInfo[0].level,1);
|
|
//alyTemp.addIdListToList(_cardInfo[0].idList);
|
|
addSum = 0;
|
|
//return alyTemp;
|
|
break;
|
|
case 6:
|
|
alyTemp = new module_Analyses(CARDTYPE.cboom6,_cardInfo[0].level,1);
|
|
//alyTemp.addIdListToList(_cardInfo[0].idList);
|
|
addSum = 0;
|
|
//return alyTemp;
|
|
break;
|
|
case 7:
|
|
alyTemp = new module_Analyses(CARDTYPE.cboom7,_cardInfo[0].level,1);
|
|
//alyTemp.addIdListToList(_cardInfo[0].idList);
|
|
addSum = 0;
|
|
//return alyTemp;
|
|
break;
|
|
case 8:
|
|
alyTemp = new module_Analyses(CARDTYPE.cboom8,_cardInfo[0].level,1);
|
|
//alyTemp.addIdListToList(_cardInfo[0].idList);
|
|
addSum = 0;
|
|
//return alyTemp;
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
//特殊牌型(510K)
|
|
if(_infoLength == 3){
|
|
var spK105 = [0,0,0];//K510的个数
|
|
if(_cardInfo[0].number == 13){
|
|
spK105[0] = _cardInfo[0].count;
|
|
}
|
|
if(_cardInfo[1].number == 10){
|
|
spK105[1] = _cardInfo[1].count;
|
|
}
|
|
if(_cardInfo[2].number == 5){
|
|
spK105[2] = _cardInfo[2].count;
|
|
}
|
|
//单个510K
|
|
if(spK105[0] == 1 && spK105[1] == 1 && spK105[2] == 1){
|
|
alyTemp = new module_Analyses(CARDTYPE.cboom510K1,_cardInfo[0].level,1);
|
|
addSum = 0;
|
|
for(var k=0;k<_cardInfo.length;k++){
|
|
alyTemp.addIdListToList(_cardInfo[k].idList);
|
|
}
|
|
return alyTemp;
|
|
}
|
|
//多个510K
|
|
var min510K = spK105[0];
|
|
for(var k=0;k<3;k++){
|
|
spK105[k] < min510K ? min510K = spK105[k] : min510K;
|
|
}
|
|
switch(min510K){
|
|
case 3:
|
|
alyTemp = new module_Analyses(CARDTYPE.cboom510K3,_cardInfo[0].level,1);
|
|
addSum = 0;
|
|
for(var k=0;k<_cardInfo.length;k++){
|
|
alyTemp.addIdListToList(_cardInfo[k].idList);
|
|
}
|
|
return alyTemp;
|
|
break;
|
|
case 4:
|
|
alyTemp = new module_Analyses(CARDTYPE.cboom510K4,_cardInfo[0].level,1);
|
|
addSum = 0;
|
|
for(var k=0;k<_cardInfo.length;k++){
|
|
alyTemp.addIdListToList(_cardInfo[k].idList);
|
|
}
|
|
return alyTemp;
|
|
break;
|
|
case 5:
|
|
alyTemp = new module_Analyses(CARDTYPE.cboom510K5,_cardInfo[0].level,1);
|
|
addSum = 0;
|
|
for(var k=0;k<_cardInfo.length;k++){
|
|
alyTemp.addIdListToList(_cardInfo[k].idList);
|
|
}
|
|
return alyTemp;
|
|
break;
|
|
}
|
|
|
|
}
|
|
var linkIndex = -1;
|
|
var linkCount = 0;
|
|
var sdeTemp = false;
|
|
var linkIndexTemp = -1;
|
|
var linkCountTemp = 0;
|
|
for(var i=0;i<_cardInfo.length;i++){
|
|
if(i!=_cardInfo.length-1){
|
|
if(_cardInfo[i].level - _cardInfo[i+1].level != 1){//连续
|
|
sdeTemp = true;
|
|
}
|
|
}
|
|
linkIndexTemp = -1;
|
|
linkCountTemp = 0;
|
|
for(j=i+1;j<_cardInfo.length;j++){
|
|
|
|
if(_cardInfo[i].count>=3){//
|
|
linkIndexTemp == -1 ? linkIndexTemp = i : linkIndexTemp;
|
|
linkCountTemp == 0 ? linkCountTemp = 1 : linkCountTemp;
|
|
if(_cardInfo[i].level - _cardInfo[j].level == j-i && _cardInfo[j].count >= 3){//连续
|
|
linkCountTemp++;
|
|
if(linkCount < linkCountTemp){
|
|
linkIndex = linkIndexTemp;
|
|
linkCount = linkCountTemp;
|
|
}
|
|
}else{
|
|
//linkCountTemp++;
|
|
if(linkCount < linkCountTemp){
|
|
linkIndex = linkIndexTemp;
|
|
linkCount = linkCountTemp;
|
|
}
|
|
break;
|
|
//continue;
|
|
}
|
|
}else{
|
|
//linkIndexTemp = -1;
|
|
//linkCountTemp = 0;
|
|
break;
|
|
}
|
|
}
|
|
if(i==_cardInfo.length-1){
|
|
if(_cardInfo[i].count>=3){//
|
|
linkIndexTemp = i;
|
|
linkCountTemp = 0;
|
|
if(_cardInfo[i].count >= 3){//连续
|
|
linkCountTemp++;
|
|
if(linkCount < linkCountTemp){
|
|
linkIndex = linkIndexTemp;
|
|
linkCount = linkCountTemp;
|
|
}
|
|
}else{
|
|
|
|
}
|
|
}else{
|
|
//linkIndexTemp = -1;
|
|
//linkCountTemp = 0;
|
|
}
|
|
}
|
|
}
|
|
//console.log("sdeTemp: "+sdeTemp);
|
|
//console.log("linkIndex:"+linkIndex);
|
|
//console.log("linkCount:"+linkCount);
|
|
if(sdeTemp){//有单牌位
|
|
if(linkIndex == -1){
|
|
return null;
|
|
}else{
|
|
var sdeSum = 0;//单牌数量
|
|
for(var i=0;i<_cardInfo.length;i++){
|
|
if(i>=linkIndex && i<=linkCount+linkIndex-1){
|
|
sdeSum += (_cardInfo[i].count - 3);
|
|
}else{
|
|
sdeSum += _cardInfo[i].count;
|
|
}
|
|
}
|
|
addSum = linkCount*2 - sdeSum;
|
|
switch(linkCount){
|
|
case 1:
|
|
alyTemp = new module_Analyses(CARDTYPE.cthree,_cardInfo[linkIndex + linkCount - 1].level,linkCount);
|
|
//for(var k=0;k<_cardInfo.length;k++){
|
|
//alyTemp.addIdListToList(_cardInfo[k].idList);
|
|
//}
|
|
break;
|
|
case 2:
|
|
alyTemp = new module_Analyses(CARDTYPE.ctrblink2,_cardInfo[linkIndex + linkCount - 1].level,linkCount);
|
|
//alyTemp.addIdListToList(_cardInfo[0].idList);
|
|
break;
|
|
case 3:
|
|
alyTemp = new module_Analyses(CARDTYPE.ctrblink3,_cardInfo[linkIndex + linkCount - 1].level,linkCount);
|
|
//alyTemp.addIdListToList(_cardInfo[0].idList);
|
|
break;
|
|
case 4:
|
|
alyTemp = new module_Analyses(CARDTYPE.ctrblink4,_cardInfo[linkIndex + linkCount - 1].level,linkCount);
|
|
//alyTemp.addIdListToList(_cardInfo[0].idList);
|
|
break;
|
|
case 5:
|
|
alyTemp = new module_Analyses(CARDTYPE.ctrblink5,_cardInfo[linkIndex + linkCount - 1].level,linkCount);
|
|
//alyTemp.addIdListToList(_cardInfo[0].idList);
|
|
break;
|
|
case 6:
|
|
alyTemp = new module_Analyses(CARDTYPE.ctrblink6,_cardInfo[linkIndex + linkCount - 1].level,linkCount);
|
|
//alyTemp.addIdListToList(_cardInfo[0].idList);
|
|
break;
|
|
case 7:
|
|
alyTemp = new module_Analyses(CARDTYPE.ctrblink7,_cardInfo[linkIndex + linkCount - 1].level,linkCount);
|
|
//alyTemp.addIdListToList(_cardInfo[0].idList);
|
|
break;
|
|
case 8:
|
|
alyTemp = new module_Analyses(CARDTYPE.ctrblink8,_cardInfo[linkIndex + linkCount - 1].level,linkCount);
|
|
//alyTemp.addIdListToList(_cardInfo[0].idList);
|
|
break;
|
|
case 9:
|
|
alyTemp = new module_Analyses(CARDTYPE.ctrblink9,_cardInfo[linkIndex + linkCount - 1].level,linkCount);
|
|
//alyTemp.addIdListToList(_cardInfo[0].idList);
|
|
break;
|
|
case 10:
|
|
alyTemp = new module_Analyses(CARDTYPE.ctrblink10,_cardInfo[linkIndex + linkCount - 1].level,linkCount);
|
|
//alyTemp.addIdListToList(_cardInfo[0].idList);
|
|
break;
|
|
case 11:
|
|
alyTemp = new module_Analyses(CARDTYPE.ctrblink11,_cardInfo[linkIndex + linkCount - 1].level,linkCount);
|
|
//alyTemp.addIdListToList(_cardInfo[0].idList);
|
|
break;
|
|
case 12:
|
|
alyTemp = new module_Analyses(CARDTYPE.ctrblink12,_cardInfo[linkIndex + linkCount - 1].level,linkCount);
|
|
//alyTemp.addIdListToList(_cardInfo[0].idList);
|
|
break;
|
|
default:
|
|
return null;
|
|
break;
|
|
}
|
|
}
|
|
}else{
|
|
if(linkIndex == -1){
|
|
if(_cardInfo[0].type == 2){//为大小王
|
|
var jokersum = 0;
|
|
for(var i=0;i<_cardInfo.length;i++){
|
|
jokersum += _cardInfo[i].count;
|
|
}
|
|
if(jokersum == 3){
|
|
alyTemp = new module_Analyses(CARDTYPE.cboomjoker3,_cardInfo[_cardInfo.length - 1].level,1);
|
|
addSum = 0;
|
|
for(var k=0;k<_cardInfo.length;k++){
|
|
alyTemp.addIdListToList(_cardInfo[k].idList);
|
|
}
|
|
return alyTemp;
|
|
}
|
|
if(jokersum == 4){
|
|
alyTemp = new module_Analyses(CARDTYPE.cboomjoker4,_cardInfo[_cardInfo.length - 1].level,1);
|
|
addSum = 0;
|
|
for(var k=0;k<_cardInfo.length;k++){
|
|
alyTemp.addIdListToList(_cardInfo[k].idList);
|
|
}
|
|
return alyTemp;
|
|
}
|
|
return null;
|
|
}
|
|
var linkType = _cardInfo[0].count;
|
|
for(var i=0;i<_cardInfo.length;i++){
|
|
if(linkType != _cardInfo[i].count){
|
|
//return null;(33345)这种牌型
|
|
return null;
|
|
}
|
|
}
|
|
switch(linkType){
|
|
case 1://单顺
|
|
switch(_cardInfo.length){
|
|
case 5:
|
|
alyTemp = new module_Analyses(CARDTYPE.csgllink5,_cardInfo[_cardInfo.length - 1].level,_cardInfo.length);
|
|
//alyTemp.addIdListToList(_cardInfo[0].idList);
|
|
addSum = 0;
|
|
break;
|
|
case 6:
|
|
alyTemp = new module_Analyses(CARDTYPE.csgllink6,_cardInfo[_cardInfo.length - 1].level,_cardInfo.length);
|
|
//alyTemp.addIdListToList(_cardInfo[0].idList);
|
|
addSum = 0;
|
|
break;
|
|
case 7:
|
|
alyTemp = new module_Analyses(CARDTYPE.csgllink7,_cardInfo[_cardInfo.length - 1].level,_cardInfo.length);
|
|
//alyTemp.addIdListToList(_cardInfo[0].idList);
|
|
addSum = 0;
|
|
break;
|
|
case 8:
|
|
alyTemp = new module_Analyses(CARDTYPE.csgllink8,_cardInfo[_cardInfo.length - 1].level,_cardInfo.length);
|
|
//alyTemp.addIdListToList(_cardInfo[0].idList);
|
|
addSum = 0;
|
|
break;
|
|
case 9:
|
|
alyTemp = new module_Analyses(CARDTYPE.csgllink9,_cardInfo[_cardInfo.length - 1].level,_cardInfo.length);
|
|
//alyTemp.addIdListToList(_cardInfo[0].idList);
|
|
addSum = 0;
|
|
break;
|
|
case 10:
|
|
alyTemp = new module_Analyses(CARDTYPE.csgllink10,_cardInfo[_cardInfo.length - 1].level,_cardInfo.length);
|
|
//alyTemp.addIdListToList(_cardInfo[0].idList);
|
|
addSum = 0;
|
|
break;
|
|
case 11:
|
|
alyTemp = new module_Analyses(CARDTYPE.csgllink11,_cardInfo[_cardInfo.length - 1].level,_cardInfo.length);
|
|
//alyTemp.addIdListToList(_cardInfo[0].idList);
|
|
addSum = 0;
|
|
break;
|
|
case 12:
|
|
alyTemp = new module_Analyses(CARDTYPE.csgllink12,_cardInfo[_cardInfo.length - 1].level,_cardInfo.length);
|
|
//alyTemp.addIdListToList(_cardInfo[0].idList);
|
|
addSum = 0;
|
|
break;
|
|
default:
|
|
return null;
|
|
break;
|
|
}
|
|
break;
|
|
case 2://双顺
|
|
switch(_cardInfo.length){
|
|
case 2:
|
|
alyTemp = new module_Analyses(CARDTYPE.cdbllink2,_cardInfo[_cardInfo.length - 1].level,_cardInfo.length);
|
|
//alyTemp.addIdListToList(_cardInfo[0].idList);
|
|
addSum = 0;
|
|
break;
|
|
case 3:
|
|
alyTemp = new module_Analyses(CARDTYPE.cdbllink3,_cardInfo[_cardInfo.length - 1].level,_cardInfo.length);
|
|
//alyTemp.addIdListToList(_cardInfo[0].idList);
|
|
addSum = 0;
|
|
break;
|
|
case 4:
|
|
alyTemp = new module_Analyses(CARDTYPE.cdbllink4,_cardInfo[_cardInfo.length - 1].level,_cardInfo.length);
|
|
//alyTemp.addIdListToList(_cardInfo[0].idList);
|
|
addSum = 0;
|
|
break;
|
|
case 5:
|
|
alyTemp = new module_Analyses(CARDTYPE.cdbllink5,_cardInfo[_cardInfo.length - 1].level,_cardInfo.length);
|
|
//alyTemp.addIdListToList(_cardInfo[0].idList);
|
|
addSum = 0;
|
|
break;
|
|
case 6:
|
|
alyTemp = new module_Analyses(CARDTYPE.cdbllink6,_cardInfo[_cardInfo.length - 1].level,_cardInfo.length);
|
|
//alyTemp.addIdListToList(_cardInfo[0].idList);
|
|
addSum = 0;
|
|
break;
|
|
case 7:
|
|
alyTemp = new module_Analyses(CARDTYPE.cdbllink7,_cardInfo[_cardInfo.length - 1].level,_cardInfo.length);
|
|
//alyTemp.addIdListToList(_cardInfo[0].idList);
|
|
addSum = 0;
|
|
break;
|
|
case 8:
|
|
alyTemp = new module_Analyses(CARDTYPE.cdbllink8,_cardInfo[_cardInfo.length - 1].level,_cardInfo.length);
|
|
//alyTemp.addIdListToList(_cardInfo[0].idList);
|
|
addSum = 0;
|
|
break;
|
|
case 9:
|
|
alyTemp = new module_Analyses(CARDTYPE.cdbllink9,_cardInfo[_cardInfo.length - 1].level,_cardInfo.length);
|
|
//alyTemp.addIdListToList(_cardInfo[0].idList);
|
|
addSum = 0;
|
|
break;
|
|
case 10:
|
|
alyTemp = new module_Analyses(CARDTYPE.cdbllink10,_cardInfo[_cardInfo.length - 1].level,_cardInfo.length);
|
|
//alyTemp.addIdListToList(_cardInfo[0].idList);
|
|
addSum = 0;
|
|
break;
|
|
case 11:
|
|
alyTemp = new module_Analyses(CARDTYPE.cdbllink11,_cardInfo[_cardInfo.length - 1].level,_cardInfo.length);
|
|
//alyTemp.addIdListToList(_cardInfo[0].idList);
|
|
addSum = 0;
|
|
break;
|
|
case 12:
|
|
alyTemp = new module_Analyses(CARDTYPE.cdbllink12,_cardInfo[_cardInfo.length - 1].level,_cardInfo.length);
|
|
//alyTemp.addIdListToList(_cardInfo[0].idList);
|
|
addSum = 0;
|
|
break;
|
|
default:
|
|
return null;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
}else{
|
|
var sdeSum = 0;//单牌数量
|
|
for(var i=0;i<_cardInfo.length;i++){
|
|
if(i>=linkIndex && i<=linkCount+linkIndex-1){
|
|
sdeSum += (_cardInfo[i].count - 3);
|
|
}else{
|
|
sdeSum += _cardInfo[i].count;
|
|
}
|
|
}
|
|
addSum = linkCount*2 - sdeSum;
|
|
switch(linkCount){
|
|
case 1:
|
|
alyTemp = new module_Analyses(CARDTYPE.cthree,_cardInfo[linkIndex + linkCount - 1].level,linkCount);
|
|
//for(var k=0;k<_cardInfo.length;k++){
|
|
//alyTemp.addIdListToList(_cardInfo[k].idList);
|
|
//}
|
|
break;
|
|
case 2:
|
|
alyTemp = new module_Analyses(CARDTYPE.ctrblink2,_cardInfo[linkIndex + linkCount - 1].level,linkCount);
|
|
//alyTemp.addIdListToList(_cardInfo[0].idList);
|
|
break;
|
|
case 3:
|
|
alyTemp = new module_Analyses(CARDTYPE.ctrblink3,_cardInfo[linkIndex + linkCount - 1].level,linkCount);
|
|
//alyTemp.addIdListToList(_cardInfo[0].idList);
|
|
break;
|
|
case 4:
|
|
alyTemp = new module_Analyses(CARDTYPE.ctrblink4,_cardInfo[linkIndex + linkCount - 1].level,linkCount);
|
|
//alyTemp.addIdListToList(_cardInfo[0].idList);
|
|
break;
|
|
case 5:
|
|
alyTemp = new module_Analyses(CARDTYPE.ctrblink5,_cardInfo[linkIndex + linkCount - 1].level,linkCount);
|
|
//alyTemp.addIdListToList(_cardInfo[0].idList);
|
|
break;
|
|
case 6:
|
|
alyTemp = new module_Analyses(CARDTYPE.ctrblink6,_cardInfo[linkIndex + linkCount - 1].level,linkCount);
|
|
//alyTemp.addIdListToList(_cardInfo[0].idList);
|
|
break;
|
|
case 7:
|
|
alyTemp = new module_Analyses(CARDTYPE.ctrblink7,_cardInfo[linkIndex + linkCount - 1].level,linkCount);
|
|
//alyTemp.addIdListToList(_cardInfo[0].idList);
|
|
break;
|
|
case 8:
|
|
alyTemp = new module_Analyses(CARDTYPE.ctrblink8,_cardInfo[linkIndex + linkCount - 1].level,linkCount);
|
|
//alyTemp.addIdListToList(_cardInfo[0].idList);
|
|
break;
|
|
case 9:
|
|
alyTemp = new module_Analyses(CARDTYPE.ctrblink9,_cardInfo[linkIndex + linkCount - 1].level,linkCount);
|
|
//alyTemp.addIdListToList(_cardInfo[0].idList);
|
|
break;
|
|
case 10:
|
|
alyTemp = new module_Analyses(CARDTYPE.ctrblink10,_cardInfo[linkIndex + linkCount - 1].level,linkCount);
|
|
//alyTemp.addIdListToList(_cardInfo[0].idList);
|
|
break;
|
|
case 11:
|
|
alyTemp = new module_Analyses(CARDTYPE.ctrblink11,_cardInfo[linkIndex + linkCount - 1].level,linkCount);
|
|
//alyTemp.addIdListToList(_cardInfo[0].idList);
|
|
break;
|
|
case 12:
|
|
alyTemp = new module_Analyses(CARDTYPE.ctrblink12,_cardInfo[linkIndex + linkCount - 1].level,linkCount);
|
|
//alyTemp.addIdListToList(_cardInfo[0].idList);
|
|
break;
|
|
default:
|
|
return null;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
for(var k=0;k<_cardInfo.length;k++){
|
|
alyTemp.addIdListToList(_cardInfo[k].idList);
|
|
}
|
|
if(_bTemp){//为最后一手牌
|
|
if(addSum >= _restCardsSum){
|
|
for(var i=0;i<_restCardsSum;i++){
|
|
alyTemp.addIdToList(_restCards[i].id);
|
|
}
|
|
return alyTemp;
|
|
}else{
|
|
return null;
|
|
}
|
|
}else{
|
|
if(addSum == _restCardsSum){
|
|
for(var i=0;i<_restCardsSum;i++){
|
|
alyTemp.addIdToList(_restCards[i].id);
|
|
}
|
|
return alyTemp;
|
|
}else{
|
|
return null;
|
|
}
|
|
}
|
|
|
|
return null;
|
|
}catch(e){
|
|
var _msg = {};
|
|
//_msg.data = _cardList;
|
|
_msg.func = "module_algorithm.legalCardsType";
|
|
_msg.spyzuobiao = spyzuobiao;
|
|
|
|
_msg.chshoupai = chshoupai;
|
|
_msg.zshu = zshu;
|
|
_msg.bijiao = bijiao;
|
|
_msg = JSON.stringify(_msg);
|
|
module_util.submitError(_msg,e.stack);
|
|
}
|
|
}
|
|
//查找手牌中大于当前连牌牌型的所有连牌
|
|
module_algorithm.findLink = function(_handsCard,_iCount,_iType,_iLevel){
|
|
try{
|
|
var _handsCardInfo = _handsCard[0];
|
|
var linkCount = 0;
|
|
var result = [];
|
|
for(var i=_handsCardInfo.length-1;i>=0;i--){
|
|
linkCount = 0;
|
|
linkIndex = -1;
|
|
for(var j=i-1;j>=0;j--){
|
|
if(_handsCardInfo[j].level - _handsCardInfo[j+1].level == 1
|
|
&& _handsCardInfo[i].count >= _iType &&_handsCardInfo[j].count >= _iType
|
|
&& _handsCardInfo[i].level > _iLevel){
|
|
linkCount == 0 ? linkCount = 1 : linkCount;
|
|
linkCount++;
|
|
if(linkCount == _iCount){
|
|
var resultTemp = [];
|
|
var delList = [];
|
|
var idInput = [];
|
|
var levelInput = [];
|
|
for(var k = 0;k < linkCount;k++){
|
|
for(var m=0;m < _iType;m++){
|
|
resultTemp.push(_handsCardInfo[i-k].idList[m]);
|
|
idInput.push(_handsCardInfo[i-k].idList[m]);
|
|
}
|
|
levelInput.push(_handsCardInfo[i-k].level);
|
|
}
|
|
if(_iType == 3){
|
|
var findAddResult = module_algorithm.findAddition(_handsCard,_iCount*2,levelInput,idInput);
|
|
//console.log("findAddResult------>>>>>>");
|
|
//console.log(findAddResult);
|
|
for(var k=0;k<findAddResult.length;k++){
|
|
resultTemp.push(findAddResult[k]);
|
|
}
|
|
}
|
|
result.push(resultTemp);
|
|
break;
|
|
}
|
|
|
|
}else{
|
|
break;
|
|
}
|
|
}
|
|
|
|
}
|
|
return result;
|
|
}catch(e){
|
|
var _msg = {};
|
|
_msg._handsCard = _handsCard;
|
|
_msg._iCount = _iCount;
|
|
_msg._iType = _iType;
|
|
_msg._iLevel = _iLevel;
|
|
_msg.func = "module_algorithm.findLink";
|
|
_msg.spyzuobiao = spyzuobiao;
|
|
|
|
_msg.chshoupai = chshoupai;
|
|
_msg.zshu = zshu;
|
|
_msg.bijiao = bijiao;
|
|
_msg = JSON.stringify(_msg);
|
|
module_util.submitError(_msg,e.stack);
|
|
}
|
|
}
|
|
//查找手牌中大于当前单牌牌型的所有单牌(小于四个)
|
|
module_algorithm.findSde = function(_handsCard,_iCount,_iLevel){
|
|
try{
|
|
var result = [];
|
|
var idInput = [];
|
|
var levelInput = [];
|
|
var _handsCardInfo = _handsCard[0];
|
|
for(var i=_handsCardInfo.length-1;i>=0;i--){
|
|
if(_handsCardInfo[i].level > _iLevel && _handsCardInfo[i].count >= _iCount){
|
|
var resultTemp = [];
|
|
idInput = [];
|
|
levelInput = [];
|
|
for(var m=0;m < _iCount;m++){
|
|
resultTemp.push(_handsCardInfo[i].idList[m]);
|
|
idInput.push(_handsCardInfo[i].idList[m]);
|
|
levelInput.push(_handsCardInfo[i].level);
|
|
}
|
|
if(_iCount == 3){
|
|
var findAddResult = module_algorithm.findAddition(_handsCard,2,levelInput,idInput);
|
|
//console.log("findAddResult------>>>>>>");
|
|
//console.log(findAddResult);
|
|
for(var k=0;k<findAddResult.length;k++){
|
|
resultTemp.push(findAddResult[k]);
|
|
}
|
|
}
|
|
result.push(resultTemp);
|
|
}
|
|
|
|
}
|
|
return result;
|
|
}catch(e){
|
|
var _msg = {};
|
|
_msg._handsCard = _handsCard;
|
|
_msg._iCount = _iCount;
|
|
_msg._iLevel = _iLevel;
|
|
_msg.func = "module_algorithm.findSde";
|
|
_msg.spyzuobiao = spyzuobiao;
|
|
_msg.chshoupai = chshoupai;
|
|
_msg.zshu = zshu;
|
|
_msg.bijiao = bijiao;
|
|
_msg = JSON.stringify(_msg);
|
|
module_util.submitError(_msg,e.stack);
|
|
}
|
|
}
|
|
//查找手牌中带牌
|
|
module_algorithm.findAddition = function(_handsCard,_iCount,_iLevelList,_iIdList){
|
|
try{
|
|
var addCount = 0;
|
|
var result = [];
|
|
var _handsCardInfo = _handsCard[0];
|
|
var _restCards = _handsCard[1];
|
|
//var _handsCard = module_util.clone(_handsCardInfo);
|
|
var _handCount = 0;
|
|
//优先查找小于三张的单牌
|
|
for(var i=_handsCardInfo.length-1;i >=0 ;i--){
|
|
_handCount += _handsCardInfo[i].count;
|
|
if(_handsCardInfo[i].count < 3 && _iLevelList.indexOf(_handsCardInfo[i].level) == -1 && _handsCardInfo[i].tag == module_const.TAG.sde){
|
|
for(var j=0;j<_handsCardInfo[i].idList.length;j++){
|
|
result.push(_handsCardInfo[i].idList[j]);
|
|
//module_util.removeItemFromArray(_handsCardInfo[i].idList,_handsCardInfo[i].idList[j]);
|
|
//if(_handsCard[i].idList.length==0){
|
|
//_handsCard.splice(i,1);
|
|
//}
|
|
addCount++;
|
|
if(addCount == _iCount){
|
|
return result;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
for(var i=_restCards.length-1;i>=0;i--){
|
|
//for(var j=_handsCardInfo[i].idList.length-1;j>=0;j--){
|
|
if(_iIdList.indexOf(_restCards[i].id) == -1){
|
|
result.push(_restCards[i].id);
|
|
addCount++;
|
|
if(addCount == _iCount){
|
|
return result;
|
|
}
|
|
}
|
|
//}
|
|
}
|
|
for(var i=_handsCardInfo.length-1;i>=0;i--){
|
|
for(var j=_handsCardInfo[i].idList.length-1;j>=0;j--){
|
|
if(_iIdList.indexOf(_handsCardInfo[i].idList[j]) == -1 && result.indexOf(_handsCardInfo[i].idList[j])==-1){
|
|
result.push(_handsCardInfo[i].idList[j]);
|
|
addCount++;
|
|
if(addCount == _iCount){
|
|
return result;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if(_handCount - _iIdList.length + _restCards.length< _iCount){//已经无牌可带
|
|
return result;
|
|
}
|
|
return null;
|
|
}catch(e){
|
|
var _msg = {};
|
|
_msg._handsCard = _handsCard;
|
|
_msg._iCount = _iCount;
|
|
_msg._iLevelList = _iLevelList;
|
|
_msg._iIdList = _iIdList;
|
|
_msg.func = "module_algorithm.findAddition";
|
|
_msg.spyzuobiao = spyzuobiao;
|
|
_msg.chshoupai = chshoupai;
|
|
_msg.zshu = zshu;
|
|
|
|
_msg.bijiao = bijiao;
|
|
_msg = JSON.stringify(_msg);
|
|
module_util.submitError(_msg,e.stack);
|
|
}
|
|
}
|
|
//查找符合条件的所有炸弹
|
|
module_algorithm.findAllBoom = function(_handsCardInfo,_iClass,_iLevel,_bTemp/*是否是庄家*/){
|
|
try{
|
|
var result = [];
|
|
var resultTemp = [];
|
|
var cardTypeList = [];
|
|
switch(_iClass){
|
|
case CARDTYPE.cboom510K1:
|
|
resultTemp = module_algorithm.findBoom(_handsCardInfo,CARDTYPE.cboom510K1,_iLevel);
|
|
if(resultTemp.length>0){
|
|
for(var i=0;i<resultTemp.length;i++){
|
|
//for(var j=0;j<resultTemp[i].length;j++){
|
|
result.push(resultTemp[i]);
|
|
//}
|
|
}
|
|
}
|
|
if(_bTemp){
|
|
cardTypeList = [CARDTYPE.cboom4,CARDTYPE.cboom5,CARDTYPE.cboomjoker3,
|
|
CARDTYPE.cboom6,CARDTYPE.cboom7,CARDTYPE.cboom8,CARDTYPE.cboomjoker4];
|
|
}else{
|
|
cardTypeList = [CARDTYPE.cboom4,CARDTYPE.cboom5,CARDTYPE.cboomjoker3,CARDTYPE.cboom510K3,
|
|
CARDTYPE.cboom6,CARDTYPE.cboom7,CARDTYPE.cboom8,CARDTYPE.cboomjoker4,CARDTYPE.cboom510K4,CARDTYPE.cboom510K5];
|
|
}
|
|
|
|
break;
|
|
case CARDTYPE.cboom4:
|
|
resultTemp = module_algorithm.findBoom(_handsCardInfo,CARDTYPE.cboom4,_iLevel);
|
|
if(resultTemp.length>0){
|
|
for(var i=0;i<resultTemp.length;i++){
|
|
result.push(resultTemp[i]);
|
|
}
|
|
}
|
|
if(_bTemp){
|
|
cardTypeList = [CARDTYPE.cboom5,CARDTYPE.cboomjoker3,
|
|
CARDTYPE.cboom6,CARDTYPE.cboom7,CARDTYPE.cboom8,CARDTYPE.cboomjoker4];
|
|
}else{
|
|
cardTypeList = [CARDTYPE.cboom5,CARDTYPE.cboomjoker3,CARDTYPE.cboom510K3,
|
|
CARDTYPE.cboom6,CARDTYPE.cboom7,CARDTYPE.cboom8,CARDTYPE.cboomjoker4,CARDTYPE.cboom510K4,CARDTYPE.cboom510K5];
|
|
}
|
|
break;
|
|
case CARDTYPE.cboom5:
|
|
resultTemp = module_algorithm.findBoom(_handsCardInfo,CARDTYPE.cboom5,_iLevel);
|
|
if(resultTemp.length>0){
|
|
for(var i=0;i<resultTemp.length;i++){
|
|
result.push(resultTemp[i]);
|
|
}
|
|
}
|
|
if(_bTemp){
|
|
cardTypeList = [CARDTYPE.cboomjoker3,
|
|
CARDTYPE.cboom6,CARDTYPE.cboom7,CARDTYPE.cboom8,CARDTYPE.cboomjoker4];
|
|
}else{
|
|
cardTypeList = [CARDTYPE.cboomjoker3,CARDTYPE.cboom510K3,
|
|
CARDTYPE.cboom6,CARDTYPE.cboom7,CARDTYPE.cboom8,CARDTYPE.cboomjoker4,CARDTYPE.cboom510K4,CARDTYPE.cboom510K5];
|
|
}
|
|
break;
|
|
case CARDTYPE.cboomjoker3:
|
|
resultTemp = module_algorithm.findBoom(_handsCardInfo,CARDTYPE.cboomjoker3,_iLevel);
|
|
if(resultTemp.length>0){
|
|
for(var i=0;i<resultTemp.length;i++){
|
|
result.push(resultTemp[i]);
|
|
}
|
|
}
|
|
if(_bTemp){
|
|
cardTypeList = [CARDTYPE.cboom6,CARDTYPE.cboom7,CARDTYPE.cboom8,CARDTYPE.cboomjoker4];
|
|
}else{
|
|
cardTypeList = [CARDTYPE.cboom510K3,
|
|
CARDTYPE.cboom6,CARDTYPE.cboom7,CARDTYPE.cboom8,CARDTYPE.cboomjoker4,CARDTYPE.cboom510K4,CARDTYPE.cboom510K5];
|
|
}
|
|
break;
|
|
case CARDTYPE.cboom510K3:
|
|
if(!_bTemp){
|
|
resultTemp = module_algorithm.findBoom(_handsCardInfo,CARDTYPE.cboom510K3,_iLevel);
|
|
if(resultTemp.length>0){
|
|
for(var i=0;i<resultTemp.length;i++){
|
|
result.push(resultTemp[i]);
|
|
}
|
|
}
|
|
}
|
|
if(_bTemp){
|
|
cardTypeList = [CARDTYPE.cboom6,CARDTYPE.cboom7,CARDTYPE.cboom8,CARDTYPE.cboomjoker4];
|
|
}else{
|
|
cardTypeList = [CARDTYPE.cboom6,CARDTYPE.cboom7,CARDTYPE.cboom8,CARDTYPE.cboomjoker4,CARDTYPE.cboom510K4,CARDTYPE.cboom510K5];
|
|
}
|
|
break;
|
|
case CARDTYPE.cboom6:
|
|
resultTemp = module_algorithm.findBoom(_handsCardInfo,CARDTYPE.cboom6,_iLevel);
|
|
if(resultTemp.length>0){
|
|
for(var i=0;i<resultTemp.length;i++){
|
|
result.push(resultTemp[i]);
|
|
}
|
|
}
|
|
if(_bTemp){
|
|
cardTypeList = [CARDTYPE.cboom7,CARDTYPE.cboom8,CARDTYPE.cboomjoker4];
|
|
}else{
|
|
cardTypeList = [CARDTYPE.cboom7,CARDTYPE.cboom8,CARDTYPE.cboomjoker4,CARDTYPE.cboom510K4,CARDTYPE.cboom510K5];
|
|
}
|
|
break;
|
|
case CARDTYPE.cboom7:
|
|
resultTemp = module_algorithm.findBoom(_handsCardInfo,CARDTYPE.cboom7,_iLevel);
|
|
if(resultTemp.length>0){
|
|
for(var i=0;i<resultTemp.length;i++){
|
|
result.push(resultTemp[i]);
|
|
}
|
|
}
|
|
if(_bTemp){
|
|
cardTypeList = [CARDTYPE.cboom8,CARDTYPE.cboomjoker4];
|
|
}else{
|
|
cardTypeList = [CARDTYPE.cboom8,CARDTYPE.cboomjoker4,CARDTYPE.cboom510K4,CARDTYPE.cboom510K5];
|
|
}
|
|
break;
|
|
case CARDTYPE.cboom8:
|
|
resultTemp = module_algorithm.findBoom(_handsCardInfo,CARDTYPE.cboom8,_iLevel);
|
|
if(resultTemp.length>0){
|
|
for(var i=0;i<resultTemp.length;i++){
|
|
result.push(resultTemp[i]);
|
|
}
|
|
}
|
|
if(_bTemp){
|
|
cardTypeList = [CARDTYPE.cboomjoker4];
|
|
}else{
|
|
cardTypeList = [CARDTYPE.cboomjoker4,CARDTYPE.cboom510K4,CARDTYPE.cboom510K5];
|
|
}
|
|
break;
|
|
case CARDTYPE.cboomjoker4:
|
|
resultTemp = module_algorithm.findBoom(_handsCardInfo,CARDTYPE.cboomjoker4,_iLevel);
|
|
if(resultTemp.length>0){
|
|
for(var i=0;i<resultTemp.length;i++){
|
|
result.push(resultTemp[i]);
|
|
}
|
|
}
|
|
if(_bTemp){
|
|
cardTypeList = [];
|
|
}else{
|
|
cardTypeList = [CARDTYPE.cboom510K4,CARDTYPE.cboom510K5];
|
|
}
|
|
break;
|
|
|
|
case CARDTYPE.cboom510K4:
|
|
if(!_bTemp){
|
|
resultTemp = module_algorithm.findBoom(_handsCardInfo,CARDTYPE.cboom510K4,_iLevel);
|
|
if(resultTemp.length>0){
|
|
for(var i=0;i<resultTemp.length;i++){
|
|
result.push(resultTemp[i]);
|
|
}
|
|
}
|
|
}
|
|
if(_bTemp){
|
|
cardTypeList = [];
|
|
}else{
|
|
cardTypeList = [CARDTYPE.cboom510K5];
|
|
}
|
|
break;
|
|
case CARDTYPE.cboom510K5:
|
|
if(!_bTemp){
|
|
resultTemp = module_algorithm.findBoom(_handsCardInfo,CARDTYPE.cboom510K5,_iLevel);
|
|
if(resultTemp.length>0){
|
|
for(var i=0;i<resultTemp.length;i++){
|
|
result.push(resultTemp[i]);
|
|
}
|
|
}
|
|
}
|
|
cardTypeList = [];
|
|
break;
|
|
|
|
|
|
|
|
}
|
|
for(var i=0;i<cardTypeList.length;i++ ){
|
|
resultTemp = module_algorithm.findBoom(_handsCardInfo,cardTypeList[i],0);
|
|
if(resultTemp.length>0){
|
|
for(var j=0;j<resultTemp.length;j++){
|
|
//for(var j=0;j<resultTemp[i].length;j++){
|
|
//result.push(resultTemp[i][j]);
|
|
//}
|
|
result.push(resultTemp[j]);
|
|
}
|
|
}
|
|
}
|
|
return result;
|
|
}catch(e){
|
|
var _msg = {};
|
|
//_msg._handsCardList = _handsCardList;
|
|
//_msg._pushCardList = _pushCardList;
|
|
//_msg._bTemp = _bTemp;
|
|
_msg.func = "module_algorithm.findAllBoom";
|
|
_msg.spyzuobiao = spyzuobiao;
|
|
_msg.chshoupai = chshoupai;
|
|
_msg.zshu = zshu;
|
|
_msg.bijiao = bijiao;
|
|
_msg = JSON.stringify(_msg);
|
|
module_util.submitError(_msg,e.stack);
|
|
}
|
|
}
|
|
//查找炸弹
|
|
module_algorithm.findBoom = function(_handsCardInfo,_iClass,_iLevel){
|
|
try{
|
|
var result = [];
|
|
var bTemp = false;
|
|
switch(_iClass){
|
|
case CARDTYPE.cboom4:
|
|
for(var i=_handsCardInfo.length - 1;i >= 0;i--){
|
|
if(_handsCardInfo[i].count >= 4 && _handsCardInfo[i].level > _iLevel){
|
|
var resultTemp = [];
|
|
for(var j=_handsCardInfo[i].idList.length-1;j>=0;j--){
|
|
resultTemp.push(_handsCardInfo[i].idList[j]);
|
|
if(resultTemp.length == 4){break;}
|
|
}
|
|
result.push(resultTemp);
|
|
}
|
|
}
|
|
break;
|
|
case CARDTYPE.cboom5:
|
|
for(var i=_handsCardInfo.length - 1;i >= 0;i--){
|
|
if(_handsCardInfo[i].count >= 5 && _handsCardInfo[i].level > _iLevel){
|
|
var resultTemp = [];
|
|
for(var j=_handsCardInfo[i].idList.length-1;j>=0;j--){
|
|
resultTemp.push(_handsCardInfo[i].idList[j]);
|
|
if(resultTemp.length == 5){break;}
|
|
}
|
|
result.push(resultTemp);
|
|
}
|
|
}
|
|
break;
|
|
case CARDTYPE.cboom6:
|
|
for(var i=_handsCardInfo.length - 1;i >= 0;i--){
|
|
if(_handsCardInfo[i].count >= 6 && _handsCardInfo[i].level > _iLevel){
|
|
var resultTemp = [];
|
|
for(var j=_handsCardInfo[i].idList.length-1;j>=0;j--){
|
|
resultTemp.push(_handsCardInfo[i].idList[j]);
|
|
if(resultTemp.length == 6){break;}
|
|
}
|
|
result.push(resultTemp);
|
|
}
|
|
}
|
|
break;
|
|
case CARDTYPE.cboom7:
|
|
for(var i=_handsCardInfo.length - 1;i >= 0;i--){
|
|
if(_handsCardInfo[i].count >= 7 && _handsCardInfo[i].level > _iLevel){
|
|
var resultTemp = [];
|
|
for(var j=_handsCardInfo[i].idList.length-1;j>=0;j--){
|
|
resultTemp.push(_handsCardInfo[i].idList[j]);
|
|
if(resultTemp.length == 7){break;}
|
|
}
|
|
result.push(resultTemp);
|
|
}
|
|
}
|
|
break;
|
|
case CARDTYPE.cboom8:
|
|
for(var i=_handsCardInfo.length - 1;i >= 0;i--){
|
|
if(_handsCardInfo[i].count >= 8 && _handsCardInfo[i].level > _iLevel){
|
|
var resultTemp = [];
|
|
for(var j=_handsCardInfo[i].idList.length-1;j>=0;j--){
|
|
resultTemp.push(_handsCardInfo[i].idList[j]);
|
|
if(resultTemp.length == 8){break;}
|
|
}
|
|
result.push(resultTemp);
|
|
}
|
|
}
|
|
break;
|
|
case CARDTYPE.cboom510K1:
|
|
if(_iLevel>-1){
|
|
var spK105_1 = [[-1,-1],[-1,-1],[-1,-1]];
|
|
for(var i = 0;i<_handsCardInfo.length;i++){
|
|
if(_handsCardInfo[i].number == 13){
|
|
spK105_1[0][0] = _handsCardInfo[i].count;
|
|
spK105_1[0][1] = i;
|
|
}
|
|
if(_handsCardInfo[i].number == 10){
|
|
spK105_1[1][0] = _handsCardInfo[i].count;
|
|
spK105_1[1][1] = i;
|
|
}
|
|
if(_handsCardInfo[i].number == 5){
|
|
spK105_1[2][0] = _handsCardInfo[i].count;
|
|
spK105_1[2][1] = i;
|
|
}
|
|
}
|
|
var min510K_1 = spK105_1[0][0];
|
|
for(var i=0;i<3;i++){
|
|
spK105_1[i][0] < min510K_1 ? min510K = spK105_1[i][0] : min510K_1;
|
|
if(spK105_1[i][0] == -1){bTemp = true;}
|
|
}
|
|
if(bTemp){break;}
|
|
if(min510K_1>0){
|
|
var resultTemp = [];
|
|
for(var i=0;i<spK105_1.length;i++){
|
|
resultTemp.push(_handsCardInfo[spK105_1[i][1]].idList[0]);
|
|
}
|
|
result.push(resultTemp);
|
|
}
|
|
}
|
|
break;
|
|
case CARDTYPE.cboom510K3:
|
|
if(_iLevel>-1){
|
|
var spK105_3 = [[-1,-1],[-1,-1],[-1,-1]];
|
|
for(var i = 0;i<_handsCardInfo.length;i++){
|
|
if(_handsCardInfo[i].number == 13){
|
|
spK105_3[0][0] = _handsCardInfo[i].count;
|
|
spK105_3[0][1] = i;
|
|
}
|
|
if(_handsCardInfo[i].number == 10){
|
|
spK105_3[1][0] = _handsCardInfo[i].count;
|
|
spK105_3[1][1] = i;
|
|
}
|
|
if(_handsCardInfo[i].number == 5){
|
|
spK105_3[2][0] = _handsCardInfo[i].count;
|
|
spK105_3[2][1] = i;
|
|
}
|
|
}
|
|
var min510K_3 = spK105_3[0][0];
|
|
for(var i=0;i<3;i++){
|
|
spK105_3[i][0] < min510K_3 ? min510K_3 = spK105_3[i][0] : min510K_3;
|
|
if(spK105_3[i][0] == -1){bTemp = true;}
|
|
}
|
|
if(bTemp){break;}
|
|
if(min510K_3>=3){
|
|
var resultTemp = [];
|
|
for(var i=0;i<spK105_3.length;i++){
|
|
for(var j=0;j<3;j++){
|
|
resultTemp.push(_handsCardInfo[spK105_3[i][1]].idList[j]);
|
|
}
|
|
|
|
}
|
|
result.push(resultTemp);
|
|
}
|
|
}
|
|
break;
|
|
case CARDTYPE.cboom510K4:
|
|
if(_iLevel>-1){
|
|
var spK105_4 = [[-1,-1],[-1,-1],[-1,-1]];
|
|
for(var i = 0;i<_handsCardInfo.length;i++){
|
|
if(_handsCardInfo[i].number == 13){
|
|
spK105_4[0][0] = _handsCardInfo[i].count;
|
|
spK105_4[0][1] = i;
|
|
}
|
|
if(_handsCardInfo[i].number == 10){
|
|
spK105_4[1][0] = _handsCardInfo[i].count;
|
|
spK105_4[1][1] = i;
|
|
}
|
|
if(_handsCardInfo[i].number == 5){
|
|
spK105_4[2][0] = _handsCardInfo[i].count;
|
|
spK105_4[2][1] = i;
|
|
}
|
|
}
|
|
var min510K_4 = spK105_4[0][0];
|
|
for(var i=0;i<3;i++){
|
|
spK105_4[i][0] < min510K_4 ? min510K_4 = spK105_4[i][0] : min510K_4;
|
|
if(spK105_4[i][0] == -1){bTemp = true;}
|
|
}
|
|
if(bTemp){break;}
|
|
if(min510K_4>=4){
|
|
var resultTemp = [];
|
|
for(var i=0;i<spK105_4.length;i++){
|
|
for(var j=0;j<3;j++){
|
|
resultTemp.push(_handsCardInfo[spK105_4[i][1]].idList[j]);
|
|
}
|
|
|
|
}
|
|
result.push(resultTemp);
|
|
}
|
|
}
|
|
break;
|
|
case CARDTYPE.cboom510K5:
|
|
if(_iLevel>-1){
|
|
var spK105_5 = [[-1,-1],[-1,-1],[-1,-1]];
|
|
for(var i = 0;i<_handsCardInfo.length;i++){
|
|
if(_handsCardInfo[i].number == 13){
|
|
spK105_5[0][0] = _handsCardInfo[i].count;
|
|
spK105_5[0][1] = i;
|
|
}
|
|
if(_handsCardInfo[i].number == 10){
|
|
spK105_5[1][0] = _handsCardInfo[i].count;
|
|
spK105_5[1][1] = i;
|
|
}
|
|
if(_handsCardInfo[i].number == 5){
|
|
spK105_5[2][0] = _handsCardInfo[i].count;
|
|
spK105_5[2][1] = i;
|
|
}
|
|
}
|
|
var min510K_5 = spK105_5[0][0];
|
|
for(var i=0;i<3;i++){
|
|
spK105_5[i][0] < min510K_5 ? min510K_5 = spK105_5[i][0] : min510K_5;
|
|
if(spK105_5[i][0] == -1){bTemp = true;}
|
|
}
|
|
if(bTemp){break;}
|
|
if(min510K_5>=5){
|
|
var resultTemp = [];
|
|
for(var i=0;i<spK105_5.length;i++){
|
|
for(var j=0;j<3;j++){
|
|
resultTemp.push(_handsCardInfo[spK105_5[i][1]].idList[j]);
|
|
}
|
|
|
|
}
|
|
result.push(resultTemp);
|
|
}
|
|
}
|
|
break;
|
|
case CARDTYPE.cboomjoker3:
|
|
if(_iLevel>-1){
|
|
var spJoker_3 = [[0,0],[0,0]];
|
|
for(var i=_handsCardInfo.length - 1;i >= 0;i--){
|
|
if(_handsCardInfo[i].number == 54){
|
|
spJoker_3[0][0] = _handsCardInfo[i].count;
|
|
spJoker_3[0][1] = i;
|
|
}
|
|
if(_handsCardInfo[i].number == 53){
|
|
spJoker_3[1][0] = _handsCardInfo[i].count;
|
|
spJoker_3[1][1] = i;
|
|
}
|
|
}
|
|
var sumJoker_3 = spJoker_3[0][0] + spJoker_3[1][0];
|
|
if(sumJoker_3 >=3){
|
|
var resultTemp = [];
|
|
var sumTemp = 0;
|
|
for(var i=0;i<2;i++){
|
|
for(var j=0;j<spJoker_3[i][0];j++){
|
|
resultTemp.push(_handsCardInfo[spJoker_3[i][1]].idList[j]);
|
|
sumTemp++;
|
|
if(sumTemp==3){
|
|
result.push(resultTemp);
|
|
return result;
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|
|
break;
|
|
case CARDTYPE.cboomjoker4:
|
|
if(_iLevel>-1){
|
|
var spJoker_4 = [[0,0],[0,0]];
|
|
for(var i=_handsCardInfo.length - 1;i >= 0;i--){
|
|
if(_handsCardInfo[i].number == 54){
|
|
spJoker_4[0][0] = _handsCardInfo[i].count;
|
|
spJoker_4[0][1] = i;
|
|
}
|
|
if(_handsCardInfo[i].number == 53){
|
|
spJoker_4[1][0] = _handsCardInfo[i].count;
|
|
spJoker_4[1][1] = i;
|
|
}
|
|
}
|
|
var sumJoker_4 = spJoker_4[0][0] + spJoker_4[1][0];
|
|
if(sumJoker_4 == 4){
|
|
var resultTemp = [];
|
|
var sumTemp = 0;
|
|
for(var i=0;i<2;i++){
|
|
for(var j=0;j<spJoker_4[i][0];j++){
|
|
resultTemp.push(_handsCardInfo[spJoker_4[i][1]].idList[j]);
|
|
sumTemp++;
|
|
if(sumTemp==4){
|
|
result.push(resultTemp);
|
|
return result;
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|
|
break;
|
|
|
|
}
|
|
return result;
|
|
}catch(e){
|
|
var _msg = {};
|
|
//_msg._handsCardList = _handsCardList;
|
|
//_msg._pushCardList = _pushCardList;
|
|
//_msg._bTemp = _bTemp;
|
|
_msg.func = "module_algorithm.findBoom";
|
|
_msg.spyzuobiao = spyzuobiao;
|
|
_msg.chshoupai = chshoupai;
|
|
_msg.zshu = zshu;
|
|
_msg.bijiao = bijiao;
|
|
_msg = JSON.stringify(_msg);
|
|
module_util.submitError(_msg,e.stack);
|
|
}
|
|
}
|
|
//得出所有大于当前牌的牌型
|
|
module_algorithm.findBig = function(_handsCardList,_pushCardList,_bTemp){
|
|
try{
|
|
if(!_handsCardList || !_pushCardList){
|
|
var _msg = {};
|
|
_msg._handsCardList = _handsCardList;
|
|
_msg._pushCardList = _pushCardList;
|
|
_msg._bTemp = _bTemp;
|
|
_msg.func = "module_algorithm.findBig.check";
|
|
_msg.spyzuobiao = spyzuobiao;
|
|
_msg.chshoupai = chshoupai;
|
|
_msg.zshu = zshu;
|
|
_msg.bijiao = bijiao;
|
|
_msg = JSON.stringify(_msg);
|
|
module_util.submitError(_msg,'');
|
|
return [];
|
|
}
|
|
_handsCardList = module_algorithm.orderCardsById(_handsCardList);
|
|
_pushCardList = module_algorithm.orderCardsById(_pushCardList);
|
|
var _handCardInfo = module_algorithm.getCardListInfo(_handsCardList);//得到手牌的牌型信息
|
|
var _pushCardInfo = module_algorithm.getCardListInfo(_pushCardList);//得到出牌的牌型信息
|
|
var _legalCardInfo = null;//出牌合法牌型信息 注:当前只处理出牌牌型只唯一
|
|
var _findResult = [];//查找结果
|
|
for(var i=0;i<_pushCardInfo.length;i++){
|
|
_legalCardInfo = module_algorithm.legalCardsType(_pushCardInfo[i],true);
|
|
if(_legalCardInfo){
|
|
break;
|
|
}
|
|
}
|
|
if(!_legalCardInfo){
|
|
var _msg = {};
|
|
_msg._handsCardList = _handsCardList;
|
|
_msg._pushCardList = _pushCardList;
|
|
_msg._bTemp = _bTemp;
|
|
_msg.shoubao = qjshoubao;
|
|
_msg.func = "module_algorithm.findBig._legalCardInfo";
|
|
_msg.spyzuobiao = spyzuobiao;
|
|
_msg.chshoupai = chshoupai;
|
|
_msg.zshu = zshu;
|
|
_msg.bijiao = bijiao;
|
|
_msg = JSON.stringify(_msg);
|
|
module_util.submitError(_msg,"");
|
|
return [];
|
|
}//出牌牌型不合法
|
|
switch(_legalCardInfo.type){
|
|
case CARDTYPE.cone://单牌module_algorithm.findSde
|
|
case CARDTYPE.ctwo://双牌
|
|
//case CARDTYPE.cthree://三牌
|
|
for(var i=0;i<_handCardInfo.length;i++){
|
|
var _findTemp = module_algorithm.findSde(_handCardInfo[i],_pushCardList.length,_legalCardInfo.level);
|
|
for(var j=0;j<_findTemp.length;j++){
|
|
_findResult.push(_findTemp[j]);
|
|
}
|
|
}
|
|
for(var i=0;i<_handCardInfo.length;i++){
|
|
var _findTemp = module_algorithm.findAllBoom(_handCardInfo[i][0],CARDTYPE.cboom510K1,0,_bTemp);
|
|
for(var j=0;j<_findTemp.length;j++){
|
|
_findResult.push(_findTemp[j]);
|
|
}
|
|
}
|
|
break;
|
|
case CARDTYPE.cthree://三牌
|
|
for(var i=0;i<_handCardInfo.length;i++){
|
|
var _findTemp = module_algorithm.findSde(_handCardInfo[i],3,_legalCardInfo.level);
|
|
for(var j=0;j<_findTemp.length;j++){
|
|
_findResult.push(_findTemp[j]);
|
|
}
|
|
}
|
|
for(var i=0;i<_handCardInfo.length;i++){
|
|
var _findTemp = module_algorithm.findAllBoom(_handCardInfo[i][0],CARDTYPE.cboom510K1,0,_bTemp);
|
|
for(var j=0;j<_findTemp.length;j++){
|
|
_findResult.push(_findTemp[j]);
|
|
}
|
|
}
|
|
break;
|
|
|
|
case CARDTYPE.csgllink5://单顺(5)
|
|
case CARDTYPE.csgllink6://单顺(6)
|
|
case CARDTYPE.csgllink7://单顺(7)
|
|
case CARDTYPE.csgllink8://单顺(8)
|
|
case CARDTYPE.csgllink9://单顺(9)
|
|
case CARDTYPE.csgllink10://单顺(10)
|
|
case CARDTYPE.csgllink11://单顺(11)
|
|
case CARDTYPE.csgllink12://单顺(12)
|
|
for(var i=0;i<_handCardInfo.length;i++){
|
|
var _findTemp = module_algorithm.findLink(_handCardInfo[i],_pushCardList.length,1,_legalCardInfo.level);
|
|
for(var j=0;j<_findTemp.length;j++){
|
|
_findResult.push(_findTemp[j]);
|
|
}
|
|
}
|
|
for(var i=0;i<_handCardInfo.length;i++){
|
|
var _findTemp = module_algorithm.findAllBoom(_handCardInfo[i][0],CARDTYPE.cboom510K1,0,_bTemp);
|
|
for(var j=0;j<_findTemp.length;j++){
|
|
_findResult.push(_findTemp[j]);
|
|
}
|
|
}
|
|
break;
|
|
case CARDTYPE.cdbllink2: //双顺(2)
|
|
case CARDTYPE.cdbllink3: //双顺(3)
|
|
case CARDTYPE.cdbllink4: //双顺(4)
|
|
case CARDTYPE.cdbllink5: //双顺(5)
|
|
case CARDTYPE.cdbllink6: //双顺(6)
|
|
case CARDTYPE.cdbllink7: //双顺(7)
|
|
case CARDTYPE.cdbllink8: //双顺(8)
|
|
case CARDTYPE.cdbllink9: //双顺(9)
|
|
case CARDTYPE.cdbllink10://双顺(10)
|
|
case CARDTYPE.cdbllink11://双顺(11)
|
|
case CARDTYPE.cdbllink12://双顺(12)
|
|
for(var i=0;i<_handCardInfo.length;i++){
|
|
var _findTemp = module_algorithm.findLink(_handCardInfo[i],_legalCardInfo.linkCount,2,_legalCardInfo.level);
|
|
for(var j=0;j<_findTemp.length;j++){
|
|
_findResult.push(_findTemp[j]);
|
|
}
|
|
}
|
|
for(var i=0;i<_handCardInfo.length;i++){
|
|
var _findTemp = module_algorithm.findAllBoom(_handCardInfo[i][0],CARDTYPE.cboom510K1,0,_bTemp);
|
|
for(var j=0;j<_findTemp.length;j++){
|
|
_findResult.push(_findTemp[j]);
|
|
}
|
|
}
|
|
break;
|
|
case CARDTYPE.ctrblink2://三顺(2)
|
|
case CARDTYPE.ctrblink3://三顺(3)
|
|
case CARDTYPE.ctrblink4://三顺(4)
|
|
case CARDTYPE.ctrblink5://三顺(5)
|
|
case CARDTYPE.ctrblink6://三顺(6)
|
|
case CARDTYPE.ctrblink7://三顺(7)
|
|
case CARDTYPE.ctrblink8://三顺(8)
|
|
case CARDTYPE.ctrblink9://三顺(9)
|
|
case CARDTYPE.ctrblink10://三顺(10)
|
|
case CARDTYPE.ctrblink11://三顺(11)
|
|
case CARDTYPE.ctrblink12://三顺(12)
|
|
for(var i=0;i<_handCardInfo.length;i++){
|
|
var _findTemp = module_algorithm.findLink(_handCardInfo[i],_legalCardInfo.linkCount,3,_legalCardInfo.level);
|
|
for(var j=0;j<_findTemp.length;j++){
|
|
_findResult.push(_findTemp[j]);
|
|
}
|
|
}
|
|
for(var i=0;i<_handCardInfo.length;i++){
|
|
var _findTemp = module_algorithm.findAllBoom(_handCardInfo[i][0],CARDTYPE.cboom510K1,0,_bTemp);
|
|
for(var j=0;j<_findTemp.length;j++){
|
|
_findResult.push(_findTemp[j]);
|
|
}
|
|
}
|
|
break;
|
|
case CARDTYPE.cboom4://炸弹(4)
|
|
case CARDTYPE.cboom5://炸弹(5)
|
|
case CARDTYPE.cboom6://炸弹(6)
|
|
case CARDTYPE.cboom7://炸弹(7)
|
|
case CARDTYPE.cboom8://炸弹(8)
|
|
// case CARDTYPE.cboom510K1://单510K牌型
|
|
// case CARDTYPE.cboom510K3://三510K牌型
|
|
// case CARDTYPE.cboom510K4://四510K牌型
|
|
// case CARDTYPE.cboom510K5://五510K牌型
|
|
// case CARDTYPE.cboomjoker3://三张王
|
|
// case CARDTYPE.cboomjoker4://四张王
|
|
for(var i=0;i<_handCardInfo.length;i++){
|
|
var _findTemp = module_algorithm.findAllBoom(_handCardInfo[i][0],_legalCardInfo.type,_legalCardInfo.level,_bTemp);
|
|
for(var j=0;j<_findTemp.length;j++){
|
|
_findResult.push(_findTemp[j]);
|
|
}
|
|
}
|
|
break;
|
|
case CARDTYPE.cboom510K1://单510K牌型
|
|
case CARDTYPE.cboom510K3://三510K牌型
|
|
case CARDTYPE.cboom510K4://四510K牌型
|
|
case CARDTYPE.cboom510K5://五510K牌型
|
|
case CARDTYPE.cboomjoker3://三张王
|
|
case CARDTYPE.cboomjoker4://四张王
|
|
for(var i=0;i<_handCardInfo.length;i++){
|
|
var _findTemp = module_algorithm.findAllBoom(_handCardInfo[i][0],_legalCardInfo.type,-1,_bTemp);
|
|
for(var j=0;j<_findTemp.length;j++){
|
|
_findResult.push(_findTemp[j]);
|
|
}
|
|
}
|
|
break;
|
|
|
|
}
|
|
//if(_findResult.length == 0){
|
|
//var _msg = {};
|
|
//_msg._handsCardList = _handsCardList;
|
|
//_msg._pushCardList = _pushCardList;
|
|
//_msg._bTemp = _bTemp;
|
|
//_msg.func = "module_algorithm.findBig.return";
|
|
//_msg = JSON.stringify(_msg);
|
|
//module_util.submitError(_msg,"");
|
|
//}
|
|
return _findResult;
|
|
}catch(e){
|
|
var _msg = {};
|
|
_msg._handsCardList = _handsCardList;
|
|
_msg._pushCardList = _pushCardList;
|
|
_msg._bTemp = _bTemp;
|
|
_msg.func = "module_algorithm.findBig";
|
|
_msg.spyzuobiao = spyzuobiao;
|
|
_msg.chshoupai = chshoupai;
|
|
_msg.zshu = zshu;
|
|
_msg.bijiao = bijiao;
|
|
_msg = JSON.stringify(_msg);
|
|
module_util.submitError(_msg,e.stack);
|
|
}
|
|
}
|
|
//取消选牌
|
|
module_algorithm.cancelChooseCard = function(_handsCardInfo,_iCount){
|
|
|
|
}
|
|
//通过对象数组键值排序
|
|
module_algorithm.orderObjectListByKey = function(_ObjectList,_key){
|
|
|
|
}
|
|
//根据牌型获取牌列表中符合该牌型的结果
|
|
module_algorithm.getCardsTypeListByType = function(_cardList,_cardType){
|
|
|
|
}
|
|
//根据牌型获取能压过该牌型的结果
|
|
module_algorithm.getBigByType = function(_cardList,_cardType){
|
|
|
|
}
|
|
//通过对象数组键值(数组)排序
|
|
module_algorithm.orderObjectListByKeyArray = function(_ObjectList,_key,_index,_reverse){
|
|
if(!_ObjectList){
|
|
return [];
|
|
}
|
|
if(module_util.isArray(_ObjectList)){
|
|
if(_ObjectList.length==0){
|
|
return [];
|
|
}
|
|
}
|
|
for(var i=0;i<_ObjectList.length-1;i++){
|
|
for(var j=i+1;j<_ObjectList.length;j++){
|
|
if(_reverse){//倒序从小到大
|
|
if(_ObjectList[i][_key][_index] > _ObjectList[j][_key][_index]){
|
|
var temp = _ObjectList[i];
|
|
_ObjectList[i] = _ObjectList[j];
|
|
_ObjectList[j] = temp;
|
|
}
|
|
}else{
|
|
if(_ObjectList[i][_key][_index] < _ObjectList[j][_key][_index]){
|
|
var temp = _ObjectList[i];
|
|
_ObjectList[i] = _ObjectList[j];
|
|
_ObjectList[j] = temp;
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|
|
return _ObjectList;
|
|
}
|
|
|
|
|
|
//比较两牌型(前者能否大于后者)返回值 true->能 false->不能
|
|
module_algorithm.compareCards = function(_cardsList_1,_cardsList_2){
|
|
|
|
}
|
|
//将id转为数值
|
|
//module_algorithm.convertIdToNumber = function(_id){
|
|
//var rt = _id % 54;
|
|
//if (rt == 52){ //小王
|
|
//return 53;
|
|
//}
|
|
//if (rt == 53){ //大王
|
|
//return 54;
|
|
//}
|
|
//return rt % 13 + 1;
|
|
//}
|
|
//将id转为分
|
|
module_algorithm.convertIdToScore = function(_id){
|
|
var rt = 0;
|
|
var num = this.convertIdToNumber(_id);
|
|
switch(num){
|
|
case 5:
|
|
rt = 5;
|
|
break;
|
|
case 10:
|
|
rt = 10;
|
|
break;
|
|
case 13:
|
|
rt = 10;
|
|
break;
|
|
default:
|
|
rt = 0;
|
|
break;
|
|
}
|
|
return rt;
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|