python面向对象写斗地主
时间: 2023-10-18 19:28:12 浏览: 29
好的,下面是一个简单的斗地主的面向对象实现。
```
import random
class Card:
def __init__(self, suit, rank):
self.suit = suit
self.rank = rank
def __str__(self):
return f"{self.suit}{self.rank}"
class Deck:
def __init__(self):
self.cards = []
for suit in ['♠', '♥', '♦', '♣']:
for rank in ['A', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K']:
self.cards.append(Card(suit, rank))
def shuffle(self):
random.shuffle(self.cards)
def deal(self):
return self.cards.pop()
class Player:
def __init__(self, name):
self.name = name
self.cards = []
def add_card(self, card):
self.cards.append(card)
def remove_card(self, card):
self.cards.remove(card)
def show_cards(self):
print(f"{self.name}的手牌:")
for card in self.cards:
print(card)
deck = Deck()
deck.shuffle()
player1 = Player("玩家1")
player2 = Player("玩家2")
player3 = Player("玩家3")
for i in range(17):
player1.add_card(deck.deal())
player2.add_card(deck.deal())
player3.add_card(deck.deal())
player1.show_cards()
player2.show_cards()
player3.show_cards()
```
这里我们定义了三个类:`Card`表示一张扑克牌,`Deck`表示一副牌,`Player`表示一个玩家。我们使用`Deck`类来生成一副牌,并使用`shuffle`方法进行洗牌,然后使用`deal`方法来发牌给三个玩家。每个玩家用`add_card`方法添加自己的手牌,用`remove_card`方法移除打出的牌。最后每个玩家用`show_cards`方法展示自己的手牌。