python用类做一个扑克牌比大小的代码
时间: 2024-01-13 13:05:53 浏览: 31
好的,以下是一个简单的扑克牌比大小的代码:
```python
class Card:
def __init__(self, rank, suit):
self.rank = rank
self.suit = suit
def __str__(self):
return f"{self.rank} of {self.suit}"
class Deck:
def __init__(self):
ranks = ['2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K', 'A']
suits = ['Hearts', 'Diamonds', 'Clubs', 'Spades']
self.cards = [Card(rank, suit) for rank in ranks for suit in suits]
def shuffle(self):
import random
random.shuffle(self.cards)
def deal(self):
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)
if card.rank == 'A':
self.aces += 1
self.value += self.card_value(card)
def card_value(self, card):
if card.rank in ['J', 'Q', 'K']:
return 10
elif card.rank == 'A':
return 11
else:
return int(card.rank)
def adjust_for_ace(self):
while self.value > 21 and self.aces:
self.value -= 10
self.aces -= 1
def compare_hands(hand1, hand2):
if hand1.value > hand2.value:
return "Hand 1 wins!"
elif hand1.value < hand2.value:
return "Hand 2 wins!"
else:
return "It's a tie!"
# Testing the code
deck = Deck()
deck.shuffle()
hand1 = Hand()
hand1.add_card(deck.deal())
hand1.add_card(deck.deal())
print("Hand 1:", hand1.cards)
hand2 = Hand()
hand2.add_card(deck.deal())
hand2.add_card(deck.deal())
print("Hand 2:", hand2.cards)
hand1.adjust_for_ace()
hand2.adjust_for_ace()
print(compare_hands(hand1, hand2))
```
这个代码创建了三个类:`Card` 表示扑克牌的一张牌,`Deck` 表示一副牌,`Hand` 表示一位玩家的手牌。其中,`Card` 和 `Deck` 类都比较简单,`Hand` 类则需要一些额外的方法来处理牌的点数和 A 的特殊情况,以及比较两个手牌的大小。在主程序中,我们创建一副牌,洗牌,然后分别给两位玩家发两张牌,并比较大小。