扑克游戏代码

2025-12-24 13:55:35
  • 21点(Blackjack)
  • 以下是一个基于Python的简单21点扑克游戏实现:

    python

    import random

    class Card:

    def __init__(self, suit, rank):

    self.suit = suit

    self.rank = rank

    def __str__(self):

    return f"{self.rank} of {self.suit}

    def value(self):

    if self.rank in ['Jack', 'Queen', 'King']:

    return 10

    elif self.rank == 'Ace':

    return 11

    else:

    return int(self.rank)

    class Deck:

    def __init__(self):

    self.cards = []

    self.build

    def build(self):

    suits = ['Hearts', 'Diamonds', 'Clubs', 'Spades']

    ranks = ['2', '3', '4', '5', '6', '7', '8', '9', '10', 'Jack', 'Queen', 'King', 'Ace']

    for suit in suits:

    for rank in ranks:

    self.cards.append(Card(suit, rank))

    def shuffle(self):

    random.shuffle(self.cards)

    def deal(self):

    if len(self.cards) > 0:

    return self.cards.pop

    else:

    # 如果牌堆空了,重新构建并洗牌

    self.build

    self.shuffle

    return self.cards.pop

    class Hand:

    def __init__(self):

    self.cards = []

    self.value = 0

    self.aces = 0

    def add_card(self, card):

    self.cards.append(card)

    self.value += card.value

    # 跟踪Aces的数量,因为它们的值可能会改变

    if card.rank == 'Ace':

    self.aces += 1

    # 如果手牌总值超过21且有Ace,将Ace的值从11改为1

    while self.value > 21 and self.aces:

    self.value -= 10

    self.aces -= 1

    def __str__(self):

    return ', '.join(str(card) for card in self.cards)

    def show_some(player_hand, dealer_hand):

    print("\

    Dealer's Hand:")

    print(" ")

    print(f" {dealer_hand.cards[1]}")

    print("\

    Player's Hand:", *player_hand.cards, sep='\

    ')

    print(f"Player's Hand Value: {player_hand.value}")

    def show_all(player_hand, dealer_hand):

    print("\

    Dealer's Hand:", *dealer_hand.cards, sep='\

    ')

    print(f"Dealer's Hand Value Hand Value: {dealer_hand.value}")

    print("\

    Player's Hand:", *player_hand.cards, sep='\

    ')

    print(f"Player's Hand Value: {player_hand.value}")

    def player_busts(player_hand, dealer_hand):

    print("PLAYER BUSTS! DEALER WINS!")

    def player_wins(player_hand, dealer_hand):

    print("PLAYER WINS!")

    def dealer_busts(player_hand, dealer_hand):

    print("DEALER BUSTS! PLAYER WINS!")

    def dealer_wins(player_hand, dealer_hand):

    print("DEALER WINS!")

    INS!")

    def push(player_hand, dealer_hand):

    print("It's a tie! PUSH.")

    def play_blackjack:

    playing = True

    while playing:

    print("\

    + "="*50)

    print(" WELCOME TO BLACKJACK!")

    print("="*50)

    # 创建并洗牌

    deck = Deck

    deck.shuffle

    # 创建玩家和庄家的手牌

    player_hand = Hand

    dealer_hand = Hand

    # 发两张牌

    player_hand.add_card(deck.deal)

    dealer_hand.add_card(deck.deal)

    GGPoker

    player_hand.add_card(deck.deal)

    dealer_hand.add_card(deck.deal)

    # 显示初始手牌(庄家的一张牌隐藏)

    show_some(player_hand, dealer_hand)

    # 玩家回合

    while player_hand.value

    action = input("\

    Would you like to Hit or Stand? (h/s): ").lower

    if action == 'h':

    player_hand.add_card(deck.deal)

    show_some(player_hand, dealer_hand)

    if player_hand.value > 21:

    player_busts(player_hand, dealer_hand)

    break

    elif action == 's':

    print("Player stands. Dealer's turn.")

    break

    # 庄家回合(如果玩家没有爆牌)

    if player_hand.value

    print("\

    Dealer's turn...")

    show_all(player_hand, dealer_hand)

    while dealer_hand.value

    print("\

    Dealer hits!")

    dealer_hand.add_card(deck.deal)

    show_all(player_hand, dealer_hand)

    if dealer_hand.value > 21:

    dealer_busts(player_hand, dealer_hand)

    break

    # 比较最终手牌值

    if dealer_hand.value

    if player_hand.value > dealer_hand.value:

    player_wins(player_hand, dealer_hand)

    elif player_hand.value

    dealer_wins(player_hand, dealer_hand)

    扑克游戏代码

    else:

    push push(player_hand, dealer_hand)

    # 询问是否再玩一次

    play_again = input("\

    Would you like to play again? (y/n): ").lower

    if play_again != 'y':

    print("\

    Thanks for playing!")

    playing = False

    if __name__ == "__main "__main__":

    play_blackjack

    游戏说明

    这个21点游戏具有以下特点:

    1. 基本规则

  • 目标是使手牌的总点数尽可能接近21点,但不能超过
  • J、Q、K算作10点,A算作11点或1点(自动选择最优值)
  • 玩家先行动,可以选择"要牌"(Hit)或"停牌"(Stand)
  • 庄家在庄家在点数小于17时必须继续要牌
  • 2. 游戏流程

  • 开始时每人发两张牌,庄家的一张牌隐藏
  • 玩家决定是否继续要牌
  • 庄家按照固定规则要牌
  • 比较双方点数决定胜负
  • 3. 运行方法

  • 直接运行Python脚本即可开始游戏
  • 按照提示输入'h'要牌或's'停牌
  • 每轮结束后可选择是否继续游戏
  • 您可以根据需要扩展此代码,例如添加赌注系统、多玩家支持或其他扑克变体规则。