python编写斗地主游戏

这是一个使用Python编写的斗地主游戏模拟程序。程序包含了牌类和牌堆类的定义,实现了洗牌、发牌和显示手牌等功能。玩家类和游戏类则处理了玩家的姓名输入、摸牌和显示手牌等操作。游戏开始时,系统会提示用户输入三个玩家的名字,然后进行发牌并显示每个玩家的手牌。
摘要由CSDN通过智能技术生成


```python
# 斗地主游戏

# 导入模块
import random

# 定义牌类
class Card():
    # 初始化方法
    def __init__(self,suit,rank):
        self.suit = suit
        self.rank = rank

    # 显示牌面
    def show(self):
        print("{} of {}".format(self.rank, self.suit))

# 定义牌堆类
class Deck():
    # 初始化方法
    def __init__(self):
        self.cards = []
        self.build()

    # 创建牌堆
    def build(self):
        suits = ["Spades", "Clubs", "Diamonds", "Hearts"]
        ranks = ["A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"]
        for suit in suits:
            for rank in ranks:
                self.cards.append(Card(suit,rank))

    # 洗牌
    def shuffle(self):
        for i in range(len(self.cards)-1,0,-1):
            r = random.randint(0,i)
            self.cards[i],self.cards[r] = self.cards[r],self.cards[i]

    # 发牌
    def deal(self):
        return self.cards.pop()

# 定义玩家类
class Player():
    # 初始化方法
    def __init__(self,name):
        self.name = name
        self.hand = []

    # 摸牌
    def draw(self,deck):
        self.hand.append(deck.deal())
        return self

    # 显示手牌
    def showHand(self):
        print("{}'s hand:".format(self.name))
        for card in self.hand:
            card.show()

# 定义游戏类
class Game():
    # 初始化方法
    def __init__(self):
        name1 = input("player1's name:")
        name2 = input("player2's name:")
        name3 = input("player3's name:")
        self.deck = Deck()
        self.player1 = Player(name1)
        self.player2 = Player(name2)
        self.player3 = Player(name3)

    # 开始游戏
    def startGame(self):
        self.deck.shuffle()
        for i in range(17):
            self.player1.draw(self.deck)
            self.player2.draw(self.deck)
            self.player3.draw(self.deck)
        self.player1.showHand()
        self.player2.showHand()
        self.player3.showHand()

# 开始游戏
game = Game()
game.startGame()

```

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白云苍松

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值