/*
* 判断斗地主的出牌逻辑问题
* return 关键字
*/
public static function DouDZDiscard(disCard:Array):String{
//传入方法中的list已经调用方法排过序
//每张牌的牌型为#_##下划线前为扑克牌花色,下划线后为扑克牌牌值,例如1_3为红桃3、2_14为黑桃A、3_16为方片2、5_17为小王、5_18为大王
//先将拍集合以“_”拆解,放入新集合中
var cardArrPlus:Array = new Array();
for(var i:int = 0;i<disCard.length;i++){
cardArrPlus.push(int(disCard[i].split("_")[1]));
}
//声明四个集合,后面有用
var singleIndex:Array = new Array();
var doubleIndex:Array = new Array();
var threeIndex:Array = new Array();
var fourIndex:Array = new Array();
//通过循环判断所出的牌组中,某个值的拍出现的次数,对应放入集合中
var count:int = 0;
for(var j:int = 0;j<cardArrPlus.length;j++){
count = 0;
for(var k:int = 0;k<cardArrPlus.length;k++){
if(cardArrPlus[j] == cardArrPlus[k]){
count++;
}else{
break;
}
}
if(count == 1){
singleIndex.push(cardArrPlus[j]);
}else if(count == 2){
doubleIndex.push(cardArrPlus[j]);
}else if(count == 3){
threeIndex.push(cardArrPlus[j]);
}else if(count == 4){
fourIndex.push(cardArrPlus[j]);
}
for(var l:int = 0;l<count;l++){
cardArrPlus.shift();
}
j = -1;
}
//通过四个集合判断所出的牌型,并返回关键字
if(singleIndex.length == 1 && doubleIndex.length == 0 && threeIndex.length == 0 && fourIndex.length == 0){//单牌
return "Single_Card";
}else if(singleIndex.length == 0 && doubleIndex.length == 1 && threeIndex.length == 0 && fourIndex.length == 0){//对子
return "Double_Card";
}else if(singleIndex.length == 0 && doubleIndex.length == 0 && threeIndex.length == 1 && fourIndex.length == 0){//三张
return "Three_Card";
}else if(singleIndex.length == 0 && doubleIndex.length == 0 && threeIndex.length == 0 && fourIndex.length == 1){//炸弹
return "Bomb_Card";
}else if(singleIndex.length == 2 && doubleIndex.length == 0 && threeIndex.length == 0 && fourIndex.length == 0
&& singleIndex[0] == 18 && singleIndex[1] == 17){//王炸
return "KingBomb_Card";
}else if(singleIndex.length == 1 && doubleIndex.length == 0 && threeIndex.length == 1 && fourIndex.length == 0){//三带一
return "ThreeOne_Card";
}else if(singleIndex.length == 0 && doubleIndex.length == 1 && threeIndex.length == 1 && fourIndex.length == 0){//三代二
return "ThreeTwo_Card";
}else if(singleIndex.length == 0 && doubleIndex.length == 1 && threeIndex.length == 0 && fourIndex.length == 1
|| singleIndex.length == 2 && doubleIndex.length == 0 && threeIndex.length == 0 && fourIndex.length == 1){//四带俩单
return "Four_TwoSingle_Card";
}else if(singleIndex.length == 0 && doubleIndex.length == 2 && threeIndex.length == 0 && fourIndex.length == 1){//四带两对
return "Four_TwoDouble_Card";
}else if(doubleIndex.length == 0 && threeIndex.length == 0 && fourIndex.length == 0 && singleIndex.length > 4
&& singleIndex[0]-singleIndex[singleIndex.length-1] == singleIndex.length-1){//单顺
return "Long_Card";
}else if(singleIndex.length == 0 && threeIndex.length == 0 && fourIndex.length == 0 && doubleIndex.length > 2
&& doubleIndex[0]-doubleIndex[doubleIndex.length-1] == doubleIndex.length-1){//连对
return "Double_Long_Card";
}else if(singleIndex.length == 0 && doubleIndex.length == 0 && fourIndex.length == 0
&& threeIndex[0]-threeIndex[threeIndex.length-1] == threeIndex.length-1){//飞机(三张连)
return "Feiji_Card";
}else if(fourIndex.length == 0 && threeIndex[0]-threeIndex[threeIndex.length-1] == threeIndex.length-1
&& singleIndex.length+doubleIndex.length*2 == threeIndex.length*3){//飞机带单
return "Feiji_TwoSingle_Card";
}else if(fourIndex.length == 0 && singleIndex.length == 0 && threeIndex[0]-threeIndex[threeIndex.length-1] == threeIndex.length-1
&& doubleIndex.length == threeIndex.length){//飞机带对
return "Feiji_TwoDouble_Card";
}
return "ERROR_CARD";
}