python-扑克牌

本文介绍了一个使用Python实现的扑克牌游戏程序。该程序定义了单张扑克牌类Card和整副扑克牌类Cards,实现了发牌功能并能判断三张牌的类型,如三条、一对、顺子等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

‘’’
编写程序,设计单张扑克牌类Card,具有花色,牌面与具体值。
同时设计整副扑克牌类Cards,具有52张牌。

红桃、黑桃、方片、草花 2345678910JQKA
♥♠♦♣

设计一个发牌的函数,可以任意发出三张牌。
对任意三张牌断定牌的类型。
类型包括:
三条:三张牌value一样
一对:两张value一样
顺子:三张牌挨着
同花:三张牌type一样
同花顺:挨着,类型一样
其余都是散牌
‘’’
import random

class Card():
def init(self, type, value, real_value):
self.type = type
self.value = value
self.real_value = real_value

def __str__(self):
    return '{}{}'.format(self.type, self.value)

class Cards():
def init(self):
# 存放52张牌
self.all_cards = []
# 存放3张牌
self.three_pai = []
# 初始化52张牌
types = ‘♥♠♦♣’
# 获取13种牌面
values = list(range(2, 11)) + list(‘JQKA’)
# 遍历牌面类型
for t in types:
# 遍历牌面值
for i, v in enumerate(values):
# 创建牌
c = Card(t, v, i + 2)
# 将牌放入集合all_cards
self.all_cards.append©

# 设计一个发牌的函数,可以任意发出三张牌。
def fa_pai(self):
    # 循环生成3张牌
    for i in range(3):
        index = random.randint(0, len(self.all_cards) - 1)
        self.three_pai.append(self.all_cards.pop(index))

# 判断规则
def pan_duan(self):
    '''
    类型包括:
        三条:三张牌value一样
        一对:两张value一样
        顺子:三张牌挨着
        同花:三张牌type一样
        同花顺:挨着,类型一样
        其余都是散牌
    '''
    self.three_pai.sort(key=lambda x: x.real_value)
    c1 = self.three_pai[0]
    c2 = self.three_pai[1]
    c3 = self.three_pai[2]
    if c1.value == c2.value == c3.value:
        print('三条')
    elif c1.type == c2.type == c3.type:
        print('同花')
    elif c1.value == c2.value or c1.value == c3.value or c2.value == c3.value:
        print('一对')
    elif (c1.type == c2.type == c3.type) and (
            c1.real_value + 1 == c2.real_value and c2.real_value + 1 == c3.real_value):
        print('同花顺')
    elif c1.real_value + 1 == c2.real_value and c2.real_value + 1 == c3.real_value:
        print('顺子')
    else:
        print('散牌')
def show_all(self):
    #self.three_pai.sort(key=lambda x: x.real_value)
    for c in self.three_pai:
        print(c)

cards = Cards()
cards.fa_pai()
cards.show_all()
cards.pan_duan()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值