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
您可以根据需要扩展此程序,添加更多扑克游戏规则或功能。