欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

斗地主游戏中的算法设计和牌型大小比较方法

最编程 2024-01-26 12:22:18
...
/**
* 对牌进行排序,从小到大,使用冒泡排序,此种方法不是很好
*
* @param cards
* 牌
*/
public static boolean bubbleSortCards(List<Card> cards) {
if (cards == null) {
return false;
}

int size = cards.size();
// 冒泡排序,从左到右,从小到大
for (int i = 0; i < size; i++) {
for (int j = 0; j < size – i – 1; j++) {
int gradeOne = cards.get(j).grade;
int gradeTwo = cards.get(j + 1).grade;

boolean isExchange = false;
if (gradeOne > gradeTwo) {
isExchange = true;
} else if (gradeOne == gradeTwo) {
// 2张牌的grade相同
CardBigType type1 = cards.get(j).bigType;
CardBigType type2 = cards.get(j + 1).bigType;

// 从做到右,方块、梅花、红桃、黑桃
if (type1.equals(CardBigType.HEI_TAO)) {
isExchange = true;
} else if (type1.equals(CardBigType.HONG_TAO)) {
if (type2.equals(CardBigType.MEI_HUA)
|| type2.equals(CardBigType.FANG_KUAI)) {
isExchange = true;
}
} else if (type1.equals(CardBigType.MEI_HUA)) {
if (type2.equals(CardBigType.FANG_KUAI)) {
isExchange = true;
}
}
}

if (isExchange) {
Card cardOne = cards.get(j);
Card cardTwo = cards.get(j + 1);
// 交换
cards.set(j + 1, cardOne);
cards.set(j, cardTwo);
}
}
}
return true;
}

推荐阅读