IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> Python解炸金花问题 -> 正文阅读

[Python知识库]Python解炸金花问题

炸金花小游戏

-要求: 编写炸金花游戏程序

自己写一个程序,实现发牌、比大小判断输赢。

游戏规则:

一付扑克牌,去掉大小王,每个玩家发3张牌,最后比大小,看谁赢。
有以下几种牌:
豹子:三张一样的牌,如3张6.
顺金:又称同花顺,即3张同样花色的顺子, 如红桃 5、6、7
顺子:又称拖拉机,花色不同,但是顺子,如红桃5、方片6、黑桃7,组成的顺子
对子:2张牌一样
单张:单张最大的是A
这几种牌的大小顺序为, 豹子>顺金>顺子>对子>单张
需程序实现的点:

1. 先生成一付完整的扑克牌

2. 给5个玩家随机发牌

3. 统一开牌,比大小,输出赢家是谁


本人是python小白,有不对地方多多指正


整体代码

# -*- coding:utf-8 -*-
# Python修炼者:段誉

# 开发时间:2021/11/22 16:19


import random
'''具体比较函数'''
def calculate(player_poker_values,pokers_map):
    score_list=list(map(lambda x:pokers_map[x],player_poker_values))#将该玩家的每张牌对应的分数传入列表


    #下面分别对花色和连续进行判断暨是否同花色或者顺子
same_colors=len(set([color[:2] for color in player_poker_values]))==1#判断三张是否相同花色用集合对三张牌前两个汉字进行去重

    continutiy=sorted(score_list)==[num for num in range(min(score_list),max(score_list))] or set(score_list)==[14,2,3]#判断是否连续注意A23也是连续

    repeat=len(set(score_list))#看有几张牌相同用set去重判断

    #下面进行牌型组合判断暨单张、对子、顺子、金花、同花顺、飞机
    if not continutiy and not same_colors and repeat==3:
        return sum(score_list),'单张'
    elif not continutiy and not same_colors and repeat==2:
        return sum(score_list)*2,'对子'
    elif not same_colors and repeat==3 and continutiy:
        return sum(score_list)*3,'顺子'
    elif not continutiy and repeat==3 and same_colors:
        return sum(score_list)*4,'金花'
    elif repeat==3 and same_colors and continutiy:
        return  sum(score_list)*5,'同花顺'
    elif repeat==1 and not same_colors and not continutiy:
        return  sum(score_list)*6,'飞机'


'''将每个人的牌型进行展示并比较'''
def show_and_compare(play_poker_list,pokers_map):
    # [print(f'玩家{key}的牌型为:{value}') for item in play_poker_list for key,value in item.items()] #打印每个玩家的名字以及牌型
    for player in play_poker_list:
        player['总分值'], player['牌型'] = calculate(player['手牌'], pokers_map)  # 算出牌型得分
        print(player)
    winner=max(play_poker_list,key=lambda x:x['总分值'])
    print('-'*80)
    print('大赢家',winner['Poker'])

'''
获取每个抓的牌返回列表
'''
def poker_grp(players, pokers):
    players_poker_list = []

    for player in players:  # 每个人轮流抓牌
        # poker_dict = {}
        pks = random.sample(pokers, 3)  # 建立一个玩家名字及其所抓牌的自带你并添加到列表中
        for pk in pks:
            pokers.remove(pk)  # 不放回抽样
        # poker_dict[player] = pks
        players_poker_list.append({'Poker':player,'手牌':pks})
    return players_poker_list

'''
开始游戏
'''
def start_game(players,pokers_map):
    pokers=list(pokers_map.keys())#获得一副牌
    # print(pokers)
    player_poker_list=poker_grp(players,pokers)
    # print(player_poker_list)#取得每个人所抽的牌型
    show_and_compare(player_poker_list,pokers_map)#对每个人的牌型进行展示并比较

if __name__ == '__main__':
    #准备扑克牌
    colors=["黑桃", "红心", "方块", "梅花"]
    num=[str(i) for i in range(2,11)]+['J','Q','K','A']#每个花色的13张扑克牌
    # print(num)
    #将花色和每张牌进行字典关联 定义一副牌的字典及其对应的分值
    pokers_map={}
    for i in colors:
        count=2
        for j in num:
            pokers_map[i+j]=count
            count+=1
    # print(poker)
    #引入玩家 列表推导式
    players=[f'Player{i}' for i in range(1,6)]
    # print(players)
    #开始游戏
    start_game(players,pokers_map)
  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-11-23 12:17:56  更:2021-11-23 12:19:34 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 0:25:08-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码