当前位置: 首页 > news >正文

闲来无事,写一款扎金花小游戏,先练练手,打的时候好赢钱

 大年三十我坐庄,大年初一就背井离乡

众所 周知扑克牌可谓是居家旅行、桌面交友的必备道具,今天我们用 Python 来实现一个类似炸金花 的扑克牌小游戏,先来看一下基本的游戏规则。

炸(诈)金花又叫三张牌,是在全国广泛流传的一种民间多人纸牌游戏。游戏使用一副除去大小王的扑克牌,共 4 个花色 52 张牌,各个玩家从中抽取 3 张牌,比较大小。各种牌型的大小顺序如下(按照全排列组合中出现的概率越小,牌型分数奖励越大):1、同花顺:三张同样花色且点数连续的牌,如红心2、红心3、红心4;2、豹子:三张点数一样的牌,如 AAA、222;3、顺子:三张点数连续的牌,如红心2、黑桃3、方块4;4、金花:三张同样花色的牌,如红心2、红心5、红心8;5、对子:两张点数一样的牌,如红心2、黑桃2;6、单张:2~10 < J < Q < K < A。以下概率截自百度百科:

注:本文所述游戏规则与实际有所不同,主要基于对不同牌型的比较进行设计

一、游戏流程实现

1、准备扑克牌

开始游戏前,需要先生成一副满足要求的扑克牌,牌友们都知道,扑克牌有以下四种花色,每种花色有 A、2~10、J、Q、K 等 13 张牌。

suit = ["黑桃", "红心", "方块", "梅花"]
num = [str(i) for i in range(2, 11)] + ["J", "Q", "K", "A"]

为了便于后续算分,先给每一个 单张 赋予相应的点数。

score_map = {}  # 单张点数映射表
for s in suit:count = 2for n in num:score_map[f"{s}{n}"] = countcount += 1

扑克牌点数预览如下:

score_map = {'黑桃2': 2, '黑桃3': 3, '黑桃4': 4, '黑桃5': 5, '黑桃6': 6, '黑桃7': 7, '黑桃8': 8, '黑桃9': 9, '黑桃10': 10, '黑桃J': 11, '黑桃Q': 12, '黑桃K': 13, '黑桃A': 14, '红心2': 2, ... }

2、玩家入场

以 p1、p2 等名称对玩家进行区分,我们先邀请 5 个玩家入场。

players = [f"p{i}" for i in range(1, 6)]

3、发牌

将玩家和扑克牌列表作为参数,传入发牌器。发牌器在扑克牌中进行不放回抽取,为每个玩家随机抽取 3 张牌,并记下玩家名称及其对应牌组。

def get_pk_lst(pls, pks):result = []for p in pls:pk = sample(pks, 3)for _pk in pk:pks.remove(_pk)result.append({"name": p, "poker": pk})return resultpokers = list(score_map.keys())  # 去掉大小王的一幅扑克
poker_grp = get_pk_lst(players, pokers)  # 发牌

发牌预览如下:

result = [{'name': 'p1', 'poker': ['方块5', '梅花3', '方块A']}, {'name': 'p2', 'poker': ['黑桃4', '方块8', '黑桃J']}, {'name': 'p3', 'p

http://www.xdnf.cn/news/796825.html

相关文章:

  • pythonexecquery_Python管理Windows进程
  • Blazeds 开发指南
  • Android 10.0修改RAM(运行内存)的值
  • 科技早报 | OpenAI公开反对AI大模型监管法案;Litespeed 曝出高速缓存漏洞;腾讯会议宣布多语言翻译能力升级,支持17种语言 | 最新快讯
  • 【网络安全】带你了解什么是【黑客】
  • 你的密码泄露没?触目惊心的密码泄露该如何查防
  • html+jquery 环形渐变进度条
  • xp sp2 升级到sp3
  • $(window.parent.document) 获取 不到信息_对生活有帮助的便民信息,应该这样搜
  • 快速掌握伽马函数求解
  • Activity之间的跳转的两种实现方法
  • 启动应用程序程序PSCRIPT5.DLL找不到问题解决
  • 测试是ufs3.0的软件,1000个App极限折腾UFS 3.0手机
  • Oracle 9i 下载地址|Oracle 9i 下载|Oracle 9i 官网下载地址
  • 让测试效率起飞的8款浏览器兼容性测试工具,你get了吗?
  • 前端框架 EasyUI (1)熟悉一下EasyUI
  • Winlogon、LSASS、Userinit
  • 运维系列AI系列Lenovo-G双系统系列(亲测有效):Linux版使用教程(花生壳)---官方原版
  • 虚拟机安装与配置win7
  • VC宏定义 及常用宏定义说明
  • 大二《web课程设计》网页制作HTML个人主题青春网站(带psd)
  • (附源码)SSM音乐网站的设计与实现 毕业设计97245
  • 【小沐学NLP】Python实现聊天机器人(微软小冰)
  • 图像处理基础
  • w7怎么查看电脑配置_怎么查看电脑配置?三个方法学起来
  • html5qq空间代码作业,免费QQ空间背景代码大全(高手整理)
  • Android 11 SystemUI(状态/导航栏)-状态栏下拉时图标的隐藏与通知面板的半透黑色背景
  • 环境对象以及回调函数
  • java swing 自定义标题栏,缩放窗口,阴影窗口
  • Android Matrix详解