Python---炸金花小游戏制作

import random

type = ['红桃', '黑桃', '方块', '梅花']
num = ['A', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K']
play_card = [[type_one, num_one] for type_one in type for num_one in num]
card_type = ['单张', '对子', '顺子', '顺金', '豹子']


class man():
    def __init__(self, name, card, type):
        self.name = name
        self.card = card
        self.type = type


# 发牌
def rand_card():
    return random.sample(play_card, 3)


# 判断牌
def panduan(one):
    index_list = sorted(one, key=lambda x: num.index(x[1]))
    # 判断豹子
    if index_list[0][1] == index_list[1][1] == index_list[2][1]:
        return 4
    # 判断顺金
    if (num.index(index_list[0][1]) + 1 == num.index(index_list[1][1])) and (
            num.index(index_list[0][1]) + 2 == num.index(index_list[2][1])) and (
            num.index(index_list[1][1]) + 1 == num.index(index_list[2][1])):
        if index_list[0][0] == index_list[1][0] == index_list[2][0]:
            # 顺金
            return 3
        else:
            # 顺子
            return 2
    # 判断对子
    if (index_list[0][1] == index_list[1][1]) or (index_list[0][1] == index_list[2][1]) or (
            index_list[2][1] == index_list[1][1]):
        return 1
    # 单张
    return 0


print('开始发牌:')
print('++++++++++++++++++++++++++++++++')
man_list = []
for i in range(5):
    card_list = rand_card()
    m = man('牌友{}'.format(i + 1), card_list, panduan(card_list))
    man_list.append(m)
    print("牌友{}的牌是{}".format(i + 1, card_list))
print('++++++++++++++++++++++++++++++++')

man_list.sort(key=lambda x: x.type, reverse=True)
type_num = [one.type for one in man_list]
type_count = type_num.count(max(type_num))
print('开牌结果:')
if type_count == 5:
    print("平局!")
else:
    print("牌最大的有{}位!".format(type_count))
    for i in range(type_count):
        print("名字是:{},他的牌是:{}".format(man_list[i].name, card_type[man_list[i].type]))

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值