python 设计单张扑克牌类Card 设计整副扑克牌类Cards
需求如下:
编写程序,设计单张扑克牌类Card,具有花色,牌面与具体值。 同时设计整副扑克牌类Cards,具有52张牌。 红桃、黑桃、方片、草花 2345678910JQKA ♥♠♦♣ 设计一个发牌的函数,可以任意发出三张牌。 对任意三张牌断定牌的类型。 类型包括: 三条:三张牌value一样 一对:两张value一样 顺子:三张牌挨着 同花:三张牌type一样 同花顺:挨着,类型一样 其余都是散牌
import random
class Card:
def __init__(self, color, value, real_value):
self.color = color
self.value = value
self.real_value = real_value
def __str__(self):
return "{0}{1}{2}".format(self.color, self.value, self.real_value)
class Cards:
def __init__(self):
self.all_cards = []
self.three_cards = []
def init_cards(self): # 设计一个生成52张牌的函数
values = list(range(2, 11)) + list("JQKA")
for color in "♥♠♦♣":
count = 1
for i in values:
c = Card(color, i, count)
self.all_cards.append(c)
count += 1
def fa_pai(self): # 设计一个发牌函数,循环三次,发出任意三张牌
for i in range(3):
index = random.randint(0, len(self.all_cards) - 1)
card = self.all_cards.pop(index)
self.three_cards.append(card)
def compare_pai(self): # 比较三张牌
self.three_cards.sort(key=lambda x: x.real_value)
c0 = self.three_cards[0]
c1 = self.three_cards[1]
c2 = self.three_cards[2]
if c0.value == c1.value == c2.value:
print("三条")
elif c0.value == c1.value or c0.value == c2.value or c1.value == c2.value:
print("一对")
elif c0.real_value+1 == c1.real_value and c0.real_value+2 == c2.real_value:
print("顺子")
elif c0.color == c1.color == c2.color:
print("同花")
elif ((c0.color == c1.color == c2.color)
and (c0.real_value+1 == c1.real_value and c0.real_value+2 == c2.real_value)):
print("同花顺")
else:
print("散牌")
def show_three_pai(self):
for c in self.three_cards:
print(c)
card = Cards()
card.init_cards()
card.fa_pai()
card.compare_pai()
card.show_three_pai()
运行结果如下:
同花 ♦65 ♦J10 ♦A13
**
以上
**
