游戏新闻

生成一张扑克牌java

2026-01-02 13:30:03

以下是一个完整的Java扑克牌生成程序,可以创建一副标准的52张扑克牌:

java

import java.util.*;

// 扑克牌花色枚举

enum Suit {

HEARTS("♥", "红心"),

DIAMONDS("♦", "方块"),

CLUBS("♣", "梅花"),

SPADES("♠", "黑桃");

private final String symbol;

private final String name;

Suit(String symbol, String name) {

this.symbol = symbol;

this.name = name;

public String getSymbol { return symbol; }

public String getName { return name; }

// 扑克牌级别枚举

enum Rank {

ACE(1, "A"),

TWO(2, "2"),

THREE(3, "3"),

FOUR(4, "4"),

FIVE(5, "5"),

),

SIX(6, "6"),

SEVEN(7, "7"),

),

EIGHT(8, "8"),

NINE(9, "9"),

),

TEN(10, "10"),

JACK(11, "J"),

QUEEN(12, "Q"),

KING(13, "K");

private final int value;

private final String display;

Rank(int value, String display) {

this.value = value;

this.display = display;

public int getValue { return value; }

public String getDisplay { return display; }

// 扑克牌类

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; }

@Override

public String toString {

return suit.getSymbol + rank.getDisplay;

// 获取详细描述

public String getFullName {

return suit.getName + rank.getDisplay;

// 扑克牌组类

class Deck {

private List cards;

public Deck {

initializeDeck;

// 初始化一副标准扑克牌

private void initializeDeck {

cards = new ArrayList;

for (Suit suit : Suit.values) {

for (Rank rank : Rank.values) {

cards.add(new Card(suit, rank));

// 洗牌

public void shuffle {

Collections.shuffle(cards);

// 发牌

public Card dealCard {

if (cards.isEmpty) {

System.out.println("牌已经发完了发完了!");

return null;

return cards.remove(cards.size

  • 1);
  • // 发多张牌

    public List dealCards(int count) {

    生成一张扑克牌java

    List dealtCards = new ArrayList;

    for (int i = 0; i

    dealtCards.add(dealCard);

    return dealtCards;

    // 获取剩余牌数

    public int remainingCards {

    return cards.size;

    // 显示所有牌

    public void displayDeck {

    for (Card card : cards) {

    System.out.print(card + " ");

    System.out.println;

    // 主程序演示

    public class PokerCardDemo {

    public static void main(String[] args) {

    // 创建一副新牌

    Deck deck = new Deck;

    System.out.println("初始牌组:");

    deck.displayDeck;

    System.out.println;

    // 洗牌

    deck.shuffle;

    System.out.println("洗牌后:");

    deck.displayDeck;

    System.out.println;

    // 发几张牌给玩家

    System.out.println("发给玩家的牌:");

    List playerHand = deck.dealCards(5);

    for (Card card : playerHand) {

    System.out.println(card.getFullName);

    System.out.println;

    // 显示剩余牌数

    System.out.println("剩余牌数: " + deck.remainingCards);

    System.out.println;

    // 再发一张牌并显示详细信息

    Card nextCard = deck.dealCard;

    if (nextCard != null) {

    System.out.println("下一张牌: " + nextCard.getFullName);

    程序特点

    1. 完整实现

  • 定义了花色(Suit)和级别(Rank)的枚举
  • 创建了Card类表示单张扑克牌
  • 实现了Deck类管理整副牌
  • 2. 功能丰富

  • 初始化标准52张扑克牌
  • 洗牌功能
  • 发单张或多张牌
  • 显示牌组状态
  • 3. 输出示例

    初始牌组:

    ♥A ♥2 ♥3 ♥4 ♥5 ♥6 ♥7 ♥8 ♥9 ♥10 ♥J ♥Q ♥K ♦A ♦2 ♦3 ...

    洗牌后:

    ♠8 ♣Q ♠J ♥6 ♥K ♦9 ♠5 ♣10 ♣2 ♦K ♥3 ♣A ...

    发给玩家的牌:

    黑桃8

    梅花

    梅花Q

    黑桃J

    红龙app

    红心6

    红心K

    剩余牌数: 47

    下一张牌: 方块9

    这个程序展示了面向对象的设计思想,代码结构清晰,易于扩展和维护。