Java里21点扑克牌游戏代码
时间: 2023-07-01 18:09:17 浏览: 88
以下是一个简单的 Java 21点扑克牌游戏代码,仅供参考:
```java
import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;
public class TwentyOne {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
ArrayList<String> deck = new ArrayList<>();
ArrayList<String> playerCards = new ArrayList<>();
ArrayList<String> dealerCards = new ArrayList<>();
int playerScore = 0;
int dealerScore = 0;
String[] suits = {"Hearts", "Diamonds", "Clubs", "Spades"};
String[] ranks = {"Ace", "2", "3", "4", "5", "6", "7", "8", "9", "10", "Jack", "Queen", "King"};
// Create deck
for (int i = 0; i < suits.length; i++) {
for (int j = 0; j < ranks.length; j++) {
deck.add(ranks[j] + " of " + suits[i]);
}
}
// Shuffle deck
Collections.shuffle(deck);
// Deal initial cards
playerCards.add(deck.get(0));
dealerCards.add(deck.get(1));
playerCards.add(deck.get(2));
dealerCards.add(deck.get(3));
// Calculate initial scores
playerScore = calculateScore(playerCards);
dealerScore = calculateScore(dealerCards);
System.out.println("Player's cards: " + playerCards);
System.out.println("Dealer's cards: " + dealerCards.get(0) + ", [hidden]");
// Player's turn
while (playerScore < 21) {
System.out.println("Do you want to hit or stand? (h/s)");
String choice = input.nextLine();
if (choice.equals("h")) {
playerCards.add(deck.get(0));
System.out.println("Player's cards: " + playerCards);
playerScore = calculateScore(playerCards);
} else {
break;
}
}
// Dealer's turn
while (dealerScore < 17) {
dealerCards.add(deck.get(0));
dealerScore = calculateScore(dealerCards);
}
// Print final hands and scores
System.out.println("Player's cards: " + playerCards);
System.out.println("Dealer's cards: " + dealerCards);
System.out.println("Player's score: " + playerScore);
System.out.println("Dealer's score: " + dealerScore);
// Determine winner
if (playerScore > 21) {
System.out.println("Player busts! Dealer wins.");
} else if (dealerScore > 21) {
System.out.println("Dealer busts! Player wins.");
} else if (playerScore > dealerScore) {
System.out.println("Player wins!");
} else if (dealerScore > playerScore) {
System.out.println("Dealer wins!");
} else {
System.out.println("It's a tie!");
}
}
public static int calculateScore(ArrayList<String> hand) {
int score = 0;
int numAces = 0;
for (String card : hand) {
String rank = card.split(" ")[0];
if (rank.equals("Ace")) {
numAces++;
score += 11;
} else if (rank.equals("King") || rank.equals("Queen") || rank.equals("Jack")) {
score += 10;
} else {
score += Integer.parseInt(rank);
}
}
while (score > 21 && numAces > 0) {
score -= 10;
numAces--;
}
return score;
}
}
```
这个程序首先创建了一副扑克牌,然后将其洗牌。接着,程序发出了两张牌给玩家和庄家。在玩家的回合中,他可以选择要牌或停牌。一旦玩家停牌或超过21点,庄家就会开始他的回合。庄家一直要牌,直到他的得分达到17或更高(如果他超过21点,他就破产了)。最后,程序会打印出玩家和庄家的手牌和得分,并确定赢家。