使用Java写一个完整的扑克牌游戏
时间: 2023-07-20 15:44:26 浏览: 95
好的,我可以为您提供一种实现方法。以下是一个基于Java的扑克牌游戏的完整代码:
```java
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;
public class PokerGame {
public static void main(String[] args) {
// 创建一副扑克牌
List<Card> deck = createDeck();
// 洗牌
shuffleDeck(deck);
// 创建两个玩家
List<Card> player1 = new ArrayList<>();
List<Card> player2 = new ArrayList<>();
// 发牌
dealCards(deck, player1, player2);
// 显示玩家手牌
System.out.println("玩家1的手牌:");
displayCards(player1);
System.out.println("\n玩家2的手牌:");
displayCards(player2);
// 比较大小
int result = compareCards(player1, player2);
if (result == 1) {
System.out.println("\n玩家1获胜!");
} else if (result == -1) {
System.out.println("\n玩家2获胜!");
} else {
System.out.println("\n双方平局!");
}
}
// 创建一副扑克牌
public static List<Card> createDeck() {
List<Card> deck = new ArrayList<>();
for (Suit suit : Suit.values()) {
for (Rank rank : Rank.values()) {
Card card = new Card(suit, rank);
deck.add(card);
}
}
return deck;
}
// 洗牌
public static void shuffleDeck(List<Card> deck) {
Collections.shuffle(deck);
}
// 发牌
public static void dealCards(List<Card> deck, List<Card> player1, List<Card> player2) {
for (int i = 0; i < deck.size(); i++) {
Card card = deck.get(i);
if (i % 2 == 0) {
player1.add(card);
} else {
player2.add(card);
}
}
}
// 显示玩家手牌
public static void displayCards(List<Card> hand) {
for (Card card : hand) {
System.out.print(card + " ");
}
}
// 比较大小
public static int compareCards(List<Card> hand1, List<Card> hand2) {
int value1 = calculateHandValue(hand1);
int value2 = calculateHandValue(hand2);
if (value1 > value2) {
return 1;
} else if (value1 < value2) {
return -1;
} else {
return 0;
}
}
// 计算手牌的大小
public static int calculateHandValue(List<Card> hand) {
int value = 0;
for (Card card : hand) {
value += card.getRank().getValue();
}
return value;
}
}
enum Suit {
CLUBS, DIAMONDS, HEARTS, SPADES;
}
enum Rank {
TWO(2), THREE(3), FOUR(4), FIVE(5), SIX(6), SEVEN(7), EIGHT(8), NINE(9), TEN(10), JACK(11), QUEEN(12), KING(13), ACE(14);
private final int value;
Rank(int value) {
this.value = value;
}
public int getValue() {
return value;
}
}
class Card {
private final Suit suit;
private final Rank rank;
public Card(Suit suit, Rank rank) {
this.suit = suit;
this.rank = rank;
}
public Suit getSuit() {
return suit;
}
public Rank getRank() {
return rank;
}
public String toString() {
return rank + " of " + suit;
}
}
```
这个程序可以实现一个简单的两个玩家的扑克牌游戏。在游戏开始时,程序会创建一副扑克牌,然后洗牌并将牌发给两个玩家。接下来,程序会计算每个玩家手中的牌的大小,并比较它们的大小。最后,程序会展示胜者或平局。
阅读全文