java編寫簡單的撲克牌
下面是一個完整的Java撲克牌程序,包含創建撲克牌、洗牌、發牌和簡單的比較功能:
java
import java.util.*;
// 撲克牌類
class Card {
private String suit; // 花色
private String rank; // 點數
public Card(String suit, String rank) {
this.suit = suit;
this.rank = rank;
@Override
public String toString {
return suit + rank;
// 獲取點數的數值(用于比較大小)
public int getValue {
switch(rank) {
case "A": return 14;
case "K": return 13;
case "Q": return 12;
case "J": return 11;
default: return Integer.parseInt(rank);
// Getters
public String getSuit { return suit; }
public String getRank { return rank; }
// 撲克牌組類
class Deck {
private List cards;
public Deck {
initializeDeck;
// 初始化一副標準撲克牌(52張)
private void initializeDeck {
cards = new ArrayList;
String[] suits = {"?", "?", "?", "?"};
String[] ranks = {"2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A"};
for (String suit : suits) {
for (String rank : ranks) {
cards.add(new Card(suit, rank));
// 洗牌
public void shuffle {
Collections.shuffle(cards);
// 發一張牌
public Card dealCard {
if (cards.isEmpty) {
return null;
return cards.remove(0);
// 獲取剩余牌數
public int remainingCards {
return cards.size;
// 顯示牌組
public void displayDeck {
for (int i = 0; i
System.out.print(cards.get(i) + " ");
if ((i + 1) % 13 == 0) {
System.out.println; // 每13張換行
System.out.println;
// 玩家類
class Player {
private String name;
private List hand;
public Player(String name) {
this.name = name;
this.hand = new ArrayList;
// 玩家獲得一張牌
public void receiveCard(Card card) {
hand.add(card);
// 展示手牌
public void showHand {
System.out.print(name + "的手牌: ");
for (Card card : hand) {
System.out.print(card + " ");
System.out.println;
// 獲取手牌中最大的牌
public Card getHighestCard {
if (hand.isEmpty) return null;
Card highest = hand.get(0);
for (Card card : hand) {
if (card.getValue > highest.getValue) {
highest = card;
return highest;
// Getters
public String getName { return name; }
public List getHand { return hand; }
// 主程序
public class SimplePokerGame {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 創建一副新牌并洗牌
Deck deck = new Deck;
System.out.println("初始牌組:");
deck.displayDeck;
System.out.println("\
洗牌后:");
deck.shuffle;
deck.displayDeck;
// 創建玩家
System.out.print("請輸入玩家數量: ");
int playerCount = scanner.nextInt;
scanner.nextLine; // 消耗換行符
List players = new ArrayList;
for (int i = 0; i
System.out.print("請輸入玩家" + (i+1) + "的名字: ");
String name = scanner.nextLine;
players.add(new Player(name));
// 發牌
System.out.print("\
請輸入每位玩家的發牌數量: ");
int cardsPerPlayer = scanner.nextInt;
for (int i = 0; i
for (Player player : players) {
Card card = deck.dealCard;
if (card != null) {
player.receiveCard(card);
// 顯示玩家手牌
System.out.println("\
發牌結果:");
for (Player player : players) {
player.showHand;
// 比較誰的手牌最大
Player winner = determineWinner(players);
if (winner != null) {
Card winningCard = winner.getHighestCard;
System.out.println("\
獲勝者是: " + winner.getName);
System.out.println("最大的牌是: " + winningCard);
// 顯示剩余的牌
System.out.println("\
剩余牌數: " + deck.remainingCards);
scanner.close;
// 確定勝者(手牌中最大的牌最大的人)
private static Player determineWinner(List players) {
if (players.isEmpty) return null;
Player winner = players.get(0);
Card highestCard = winner.getHighestCard;
for (Player player : players) {
Card playerHighest = player.getHighestCard;
if (playerHighest != null &&
(highestCard == null || playerHighest.getValue > highestCard.getValue)) {
winner = player;
highestCard = playerHighest;
return winner;
功能說明
這個Java撲克牌程序包含以下功能:
1. Card類:表示單張撲克牌,包含花色和點數
2. Deck類:表示整副撲克牌,支持:
3. Player類:表示玩家,可以接收牌、展示手牌和找出最大牌
4. 主程序:
運行示例
初始牌組:
?2 ?3 ?4 ?5 ?6 ?7 ?8 ?9 ?10 ?J ?Q ?K ?A
?2 ?3 ?4 ?5 ?6 ?7 ?8 ?9 ?10 ?J ?Q ?K ?A
?2 ?3 ?4 ?5 ?6 ?7 ?8 ?9 ?10 ?J ?Q ?K ?A
?2 ?3 ?4 ?5 ?6 ?7 ?8 ?9 ?10 ?J ?Q ?K ?A
洗牌后:
?8 ?4 ?7 ?Q ?K ?3 ?J ?A ?9 ?3 ?5 ?7 ?5
?8 ?10 ?6 ?10 ?A ?K ?6 ?7 ?J ?4 ?4 ?9 ?8
?6 ?3 ?Q ?3 ?9 ?2 ?5 ?8 ?7 ?9 ?4 ?Q ?10
?2 ?2 ?Q ?6 ?J ?A ?10 ?J ?5 ?2 ?K ?K ?A
請輸入玩家數量: 3
請輸入玩家1的名字: Alice
請輸入玩家2的名字: Bob
請輸入玩家3的名字: Charlie
請輸入每位玩家的發牌數量: 5
發牌結果:
Alice的手牌: ?8 ?7 ?K ?J ?5
悟空扑克牌怎么玩Bob的手牌: ?4 ?Q ?3 ?9 ?7
Charlie的手牌: ?7 ?K ?J ?5 ?8
獲勝者是: Alice
最大的牌是: ?K
剩余牌數: 37
您可以根據需要擴展此程序,添加更多撲克游戲規則或功能。