packageyan.study.game.puke;
importcn.yan.study.utils.YanStrUtils;
importcn.yan.study.utils.cache.ConcurrentHashMapCacheUtils;
importjava.util.*;
public classNiuNiuGame {
/***获取一手牌的牛*/public staticNiuResult getNiuResult(List personCards) {
/***先把大于等于10的拿出去*再找三个加起来等于10的倍数的*再找两个加起来等于10的倍数的*最后算牛几*/NiuResult result = newNiuResult();
List moreThanNine = newArrayList();
List lessThanTen = newArrayList();
Card heitao9 = newCard(Card.POKER_COLOR_LIST.get(0), Card.POKER_VALUE_LIST.get(5));
Card fanpianA = newCard(Card.POKER_COLOR_LIST.get(3), Card.POKER_VALUE_LIST.get(0));
for(Card card : personCards) {
if(card.compareTo(heitao9) > 0&& card.compareTo(fanpianA) < 0) {
moreThanNine.add(card);
} else{
lessThanTen.add(card);
}
}
Integer niuNumber = getNiuNumber(lessThanTen);
result.setNiuNumber(niuNumber);
List sortCards = newArrayList();
Collections.sort(moreThanNine, Collections.reverseOrder());
sortCards.addAll(moreThanNine);
Collections.sort(lessThanTen, Collections.reverseOrder());
List aList = newArrayList(); //记录A的牌for(Card card : lessThanTen) {
if(card.getValue().equals(Card.POKER_VALUE_LIST.get(0))) {
aList.add(card);
}
}
if(aList.size()>0) {
lessThanTen.removeAll(aList);
lessThanTen.addAll(aList);
}
sortCards.addAll(lessThanTen);
result.setCardSortList(sortCards);
returnresult;
}
/***获取牛的数字*/private static intgetNiuNumber(List lessThanTen) {
if(lessThanTen.size() == 0) {
return10;
}
if(lessThanTen.size() == 1) {
returngetOneCardNum(lessThanTen.get(0));
}
if(lessThanTen.size() == 2) {
returngetNiuFrom2(lessThanTen);