斗地主出牌逻辑代码java
时间: 2023-07-09 19:35:45 浏览: 126
以下是斗地主出牌逻辑的 Java 实现:
```java
public static boolean isValidPlay(List<Card> cardsOnTable, List<Card> cardsToPlay) {
// 如果桌面上没有牌,那么任何牌都可以出
if (cardsOnTable.isEmpty()) {
return true;
}
// 检查出牌数量是否一致
if (cardsOnTable.size() != cardsToPlay.size()) {
return false;
}
// 检查牌型是否一致
CardType cardTypeOnTable = getCardType(cardsOnTable);
CardType cardTypeToPlay = getCardType(cardsToPlay);
if (cardTypeOnTable != cardTypeToPlay) {
return false;
}
// 检查牌的大小是否合法
if (cardTypeOnTable == CardType.SINGLE || cardTypeOnTable == CardType.PAIR || cardTypeOnTable == CardType.TRIO ||
cardTypeOnTable == CardType.TRIO_SINGLE || cardTypeOnTable == CardType.TRIO_PAIR || cardTypeOnTable == CardType.FOUR) {
if (getCardValue(cardsToPlay.get(0)) <= getCardValue(cardsOnTable.get(0))) {
return false;
}
} else if (cardTypeOnTable == CardType.STRAIGHT) {
if (cardsToPlay.size() != cardsOnTable.size() || getCardValue(cardsToPlay.get(0)) <= getCardValue(cardsOnTable.get(0))) {
return false;
}
} else if (cardTypeOnTable == CardType.PAIR_STRAIGHT) {
if (cardsToPlay.size() != cardsOnTable.size() || getCardValue(cardsToPlay.get(0)) <= getCardValue(cardsOnTable.get(0))) {
return false;
}
} else if (cardTypeOnTable == CardType.TRIO_SINGLE) {
if (getCardValue(cardsToPlay.get(2)) <= getCardValue(cardsOnTable.get(2))) {
return false;
}
} else if (cardTypeOnTable == CardType.TRIO_PAIR) {
if (getCardValue(cardsToPlay.get(2)) <= getCardValue(cardsOnTable.get(2))) {
return false;
}
}
return true;
}
```
这段代码实现了一个 `isValidPlay` 方法,用于检查出牌是否合法。其中,`cardsOnTable` 是桌面上的牌,`cardsToPlay` 是玩家要出的牌,`getCardType` 和 `getCardValue` 方法分别用于获取牌的类型和大小。通过这个方法,我们可以判断玩家出的牌是否符合规则,如果合法则返回 `true`,否则返回 `false`。
阅读全文