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:19import 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] = pksplayers_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=2for j in num:pokers_map[i+j]=countcount+=1# print(poker)#引入玩家 列表推导式players=[f'Player{i}' for i in range(1,6)]# print(players)#开始游戏start_game(players,pokers_map)

Python解炸金花问题相关推荐

  1. Python实现炸金花游戏的示例代码

    本文主要介绍了Python实现炸金花游戏的示例代码,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下.编程学习资料点击领取. 今天的第二个作品,哈哈哈哈,搞起来感觉还挺 ...

  2. python 实现炸金花小游戏

    python 实现炸金花小游戏 本文章在学习python中进行的练习小游戏,目的是为了让学习者熟悉python中的列表.字典.集合等数据操作. 游戏规则: 一付扑克牌,去掉大小王,每个玩家发3张牌,最 ...

  3. 用Python写炸金花代码,学习python语言精品案例

    以下代码对于练习python相关的条件循环语句.自定义函数及函数调用.列表.字典.变量运算.基本逻辑等的练习很有帮助,特别是如何使用python语言解决实际问题的思路,且具有一定趣味性,对于Pytho ...

  4. Python实现炸金花小游戏

    炸金花小游戏 规则: 一付扑克牌,去掉大小王,每个玩家发3张牌,最后比大小,看谁赢. 有以下几种牌: 豹子:三张一样的牌,如3张6. 顺金:又称同花顺,即3张同样花色的顺子, 如红桃 5.6.7 顺子 ...

  5. 用python开发一个炸金花小游戏,注意别玩上瘾了

    扑克牌可谓是居家旅行.桌面交友的必备道具,今天我们用 Python 来实现一个类似炸金花的扑克牌小游戏,先来看一下基本的游戏规则. 炸(诈)金花又叫三张牌,是在全国广泛流传的一种民间多人纸牌游戏.游戏 ...

  6. 熬了三个大夜利用Python开发一个炸金花小游戏,注意别玩上瘾了~~(附完整源码)

    大家好,我是你们的好朋友王老师~ 众所周知扑克牌可谓是居家旅行.桌面交友的必备道具,今天我们用 Python 来实现一个类似炸金花的扑克牌小游戏,先来看一下基本的游戏规则. 炸(诈)金花又叫三张牌, ...

  7. Python开发一个炸金花小游戏,注意别玩上瘾了

    众所周知扑克牌可谓是居家旅行.桌面交友的必备道具,今天我们用 Python 来实现一个类似炸金花的扑克牌小游戏,先来看一下基本的游戏规则. 炸(诈)金花又叫三张牌,是在全国广泛流传的一种民间多人纸牌 ...

  8. python开发的炸金花小游戏来啦,从此不再无聊~

    哈喽~大家好,我是恰恰!大家今天应该都已经开工了,很多同学过年的时候都是在牌桌上度过的吧哈哈,所以今天给大家带来一个用Python开发的扎金花的小游戏,又可以学习又可以玩,趣味性学习没错了!快来看看吧 ...

  9. 用python开发一个炸金花小游戏,注意别玩上瘾了~~

    众所周知扑克牌可谓是居家旅行.桌面交友的必备道具,今天我们用 Python 来实现一个类似炸金花的扑克牌小游戏,先来看一下基本的游戏规则. 炸(诈)金花又叫三张牌,是在全国广泛流传的一种民间多人纸牌 ...

最新文章

  1. Linux系统开机过程详细分析
  2. selenium threading运行后退出_Selenium的使用
  3. mandatory oracle 字段,Oracle 数据库需要在2019年April之前Mandatory升级的说明
  4. AVL树的单双旋转解析
  5. Java易混小知识——equals方法和==的区别
  6. C#LeetCode刷题之#704-二分查找(Binary Search)
  7. Golang实践录:工程管理
  8. 永遠のゼロ       012
  9. Spring+MyBatis多数据源配置实现
  10. kvm虚拟化学习笔记(二)之linux kvm虚拟机安装
  11. pku 2348 Euclid's Game
  12. linux下python、django框架的配置
  13. 动态规划之——矩阵连乘(全网最详细博文,看这一篇就够了!)
  14. ubuntu下机械硬盘不能新建文件夹
  15. 如何高效学习,斯科特·扬(全文)
  16. 墨天轮“高可用架构”干货文档分享(含Oracle、MySQL、PG资料124篇)
  17. charles——教程——转载
  18. 如何让cloudflare缓存html,cloudflare无限流量缓存的使用方法
  19. 伟大的UHD编解码器的辩论:谷歌VP9与HEVC / H.265
  20. Flutter 图片组件Image、本地图片、远程图片、图片剪切、圆形图片

热门文章

  1. OpenGL应用:天空盒子(SkyBox)
  2. filco蓝牙不好用_FilcoMinilaAir蓝牙机械键盘使用感受,做工精细手感优良但并不完美...
  3. ORA-1628: max # extents 32765 reached for rollback segment 错误处理
  4. h5+js+ajax+百度翻译API:实现翻译功能
  5. 加人微信被忽略?你可能犯了这些错误!
  6. 云南计算机专升本经验分享
  7. Linux下各种压缩文件的解压方法
  8. 控制器双活 负载均衡
  9. 实用网站集锦(2021-11-20)
  10. 华为mate30pro和华为p40pro有什么区别