java 斗地主 玩家出牌
时间: 2023-10-14 13:14:06 浏览: 143
在实现斗地主游戏时,玩家出牌是一个比较关键的环节。在代码中,需要实现判断玩家出的牌是否符合规则,以及判断哪个玩家出的牌最大等功能。以下是一个简单的示例代码,仅供参考:
```java
import java.util.*;
public class DouDiZhu {
public static void main(String[] args) {
// 创建一副牌,洗牌,发牌,排序
// ...
// 玩家出牌
List<String> cardsPlayed = new ArrayList<>(); // 记录当前出的牌
Scanner scanner = new Scanner(System.in);
while (true) {
System.out.print("请输入出牌玩家编号(1 - 3):");
int playerNumber = scanner.nextInt();
List<String> playerCards = null;
switch (playerNumber) {
case 1:
playerCards = player1;
break;
case 2:
playerCards = player2;
break;
case 3:
playerCards = player3;
break;
default:
System.out.println("无效的玩家编号!");
continue;
}
System.out.print("请输入出牌内容(多张牌用空格分隔):");
scanner.nextLine();
String input = scanner.nextLine();
String[] cards = input.split(" ");
if (cards.length == 0) {
System.out.println("请输入出牌内容!");
continue;
}
if (!isValid(cards, cardsPlayed, playerCards)) {
System.out.println("出牌不符合规则!");
continue;
}
// 从手中的牌中移除出的牌
for (String card : cards) {
playerCards.remove(card);
}
// 记录当前出的牌
cardsPlayed.clear();
cardsPlayed.addAll(Arrays.asList(cards));
System.out.println("出牌成功!");
// 判断是否出完了所有的牌
if (playerCards.isEmpty()) {
System.out.println("玩家 " + playerNumber + " 出完了所有的牌!");
break;
}
}
}
// 判断出牌是否符合规则
private static boolean isValid(String[] cards, List<String> cardsPlayed, List<String> playerCards) {
// 判断是否是同一种牌型
if (!isSameType(cards)) {
return false;
}
// 判断是否符合出牌规则
if (!isLegal(cards, cardsPlayed)) {
return false;
}
// 判断手中是否有足够的牌出
for (String card : cards) {
if (!playerCards.contains(card)) {
return false;
}
}
return true;
}
// 判断是否是同一种牌型
private static boolean isSameType(String[] cards) {
// ...
}
// 判断是否符合出牌规则
private static boolean isLegal(String[] cards, List<String> cardsPlayed) {
// ...
}
}
```
以上代码实现了玩家出牌的功能,并对出牌是否符合规则进行了判断。实际的斗地主游戏中,判断出牌是否符合规则的条件比较复杂,需要考虑多种情况,包括是否是同一种牌型、是否可以大过上家、是否可以炸等。如果您对此感兴趣,可以尝试更详细地实现这些判断条件。
阅读全文
相关推荐















