0
点赞
收藏
分享

微信扫一扫

用Python做一个小游戏

首先,我们需要定义一个类,然后创建一副牌,最后实现一些基本的功能

  1. 定义扑克牌类:

class Card:
    def __init__(self, suit, rank):
        self.suit = suit
        self.rank = rank

    def __repr__(self):
        return f"{self.rank} of {self.suit}"

  1. 创建一副扑克牌:

suits = ["Hearts", "Diamonds", "Clubs", "Spades"]
ranks = ["2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A"]

deck = [Card(suit, rank) for suit in suits for rank in ranks]

  1. 实现洗牌功能:

import random
def shuffle_deck(deck):
    random.shuffle(deck)

  1. 实现发牌功能:

def deal_cards(deck, num_players, num_cards):
    hands = [[] for _ in range(num_players)]
    for i in range(num_cards):
        for hand in hands:
            hand.append(deck.pop())
    return hands

  1. 测试程序:

shuffle_deck(deck)
hands = deal_cards(deck, 4, 5)
for i, hand in enumerate(hands):
    print(f"Player {i + 1}'s hand: {hand}")

6.可以添加对子、顺子、同花等牌型的检测

  1. 在Card类中添加辅助方法:

def is_pair(self, other):
        return self.rank == other.rank

    def is_straight(self, other):
        ranks = sorted([self.rank, other.rank])
        return ranks[1] - ranks[0] == 1 or (ranks[0] == "A" and ranks[1] == "2")

    def is_flush(self, other):
        return self.suit == other.suit

  1. 修改compare_hands函数以检测对子、顺子和同花:

    value1 = sum(card.get_value() for card in hand1)
    value2 = sum(card.get_value() for card in hand2)

    if value1 > value2:
        return "Hand 1 wins"
    elif value1 < value2:
        return "Hand 2 wins"
    else:
        # Check for pairs, straights, and flushes
        for i in range(len(hand1)):
            for j in range(i + 1, len(hand1)):
                if hand1[i].is_pair(hand1[j]):
                    return "Hand 1 wins with a pair"
                if hand1[i].is_straight(hand1[j]):
                    return "Hand 1 wins with a straight"
                if hand1[i].is_flush(hand1[j]):
                    return "Hand 1 wins with a flush"

        for i in range(len(hand2)):
            for j in range(i + 1, len(hand2)):
                if hand2[i].is_pair(hand2[j]):
                    return "Hand 2 wins with a pair"
                if hand2[i].is_straight(hand2[j]):
                    return "Hand 2 wins with a straight"
                if hand2[i].is_flush(hand2[j]):
                    return "Hand 2 wins with a flush"

        return "It's a tie"

7.添加对子、顺子、同花等牌型的检测

  1. 在Card类中添加一个方法来判断牌型:

   def get_value(self):
        if self.rank in ["J", "Q", "K"]:
            return 10
        elif self.rank == "A":
            return 11
        else:
            return int(self.rank)

  1. 创建一个函数来比较两个手牌的牌型:

    value1 = sum(card.get_value() for card in hand1)
    value2 = sum(card.get_value() for card in hand2)

    if value1 > value2:
        return "Hand 1 wins"
    elif value1 < value2:
        return "Hand 2 wins"
    else:
        return "It's a tie"

  1. 测试比较牌型的函数:

python复制代码hand1 = [Card("Hearts", "5"), Card("Diamonds", "6")]
hand2 = [Card("Clubs", "7"), Card("Spades", "8")]
print(compare_hands(hand1, hand2))  # 输出 "Hand 2 wins"

这样一个扑克牌小游戏就完成了,也可以根据游戏规则调整得分计算方式。

举报

相关推荐

0 条评论