java编写简单的扑克牌

更新时间: 2025-12-14 11:53:48 浏览:3

下面是一个完整的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);

java编写简单的扑克牌

// 展示手牌

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类:表示整副扑克牌,支持:

  • 初始化标准52张扑克牌
  • 洗牌功能
  • 发牌功能
  • 显示牌组状态
  • 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

    您可以根据需要扩展此程序,添加更多扑克游戏规则或功能。