python编写扎金花小程序的实例代码


Posted in Python onFebruary 23, 2021

游戏规则:

一付扑克牌,去掉大小王,每个玩家发3张牌,最后比大小,看谁赢。

有以下几种牌:

豹子:三张一样的牌,如3张6.

顺金:又称同花顺,即3张同样花色的顺子, 如红桃 5、6、7

顺子:又称拖拉机,花色不同,但是顺子,如红桃5、方片6、黑桃7,组成的顺子

对子:2张牌一样

单张:单张最大的是A

这几种牌的大小顺序为, 豹子>顺金>顺子>对子>单张

程序需要实现的点:

  1. 先生成一付完整的扑克牌
  2. 给5个玩家随机发牌
  3. 统一开牌,比大小,输出赢家是谁

主要思路:

 把各种牌用积分来计算,最后加上三张牌的基础积分。即:最终积分=基础积分+牌型积分。最后比较最红积分,谁的积分大,谁排名就靠前。 附上源码:

# -*- coding: utf-8 -*-
"""
# @Time   : 2021-01-07 14:55
# @author  : jianwei
# @Software : PyCharm
"""

import random
import operator

puke = [] # 存储扑克牌
num_list = ['2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K', 'A']
hua_list = ['梅花', '红桃', '黑桃', '方块']
sotr_dic = {'2': 0, '3': 1, '4': 2, '5': 3, '6': 4, '7': 5, '8': 6, '9': 7, '10': 8, 'J': 9, 'Q': 10, 'K': 11, 'A': 12,
      '对子': 15, '顺子': 30, '顺金': 60, '豹子': 100}
count_new_list = [] # 存储玩家分数和排序后排名
count_dic = {} # 存储玩家分数
# 准备52张扑克
for hua in hua_list:
  for num in num_list:
    a = hua + num
    puke.append(a)
player_dic = {'玩家1': [], '玩家2': [], '玩家3': [], '玩家4': [], '玩家5': []}
# 随机给五个玩家发牌
# print(len(puke))
for key, value in player_dic.items():
  for i in range(3):
    plate = random.sample(puke, 3)
    player_dic[key] = plate
    for i in plate:
      puke.remove(i)


# print(player_dic)

# 获取玩家的牌型
def paixing(list1):
  num = []
  huase = []
  for i in list1:
    a = i[2:]
    b = i[:2]
    num.append(a)
    huase.append(b)
  return num, huase


# 对数字的牌型进行排序
def sotr(num):
  new_num = []
  sort_list2 = []
  list1 = []
  for i in num:
    new_num.append(sotr_dic[i])
  new_num = sorted(new_num)
  for new in new_num:
    sort_list2.append([k for k, v in sotr_dic.items() if v == new])
  for m in sort_list2:
    for n in m:
      list1.append(n)
  return list1


# 对玩家的牌形统计分数
def count(num, huase):
  a = 0
  base_count = sotr_dic[num[0]] + sotr_dic[num[1]] + sotr_dic[num[2]]
  if num[0] == num[1] and num[1] == num[2]:
    paixing = '豹子'
    a = base_count + sotr_dic[paixing]
    # print(paixing, a)
  elif (sotr_dic[num[0]] + 1 == sotr_dic[num[1]] and sotr_dic[num[2]] - 1 == sotr_dic[num[1]]) and (huase[0] == huase[
    1] and huase[1] == huase[2]):
    paixing = '顺金'
    a = base_count + sotr_dic[paixing]
    # print(paixing, a)
  elif (sotr_dic[num[0]] + 1 == sotr_dic[num[1]]) and (sotr_dic[num[2]] - 1 == sotr_dic[num[1]]) and (
      huase[0] != huase[
    1] or huase[1] != huase[2]):
    paixing = '顺子'
    a = base_count + sotr_dic[paixing]
    # print(paixing, a)
  elif (num[0] == num[1] and num[1] != num[2]) or (num[1] == num[2] and num[0] != num[1]) or (
      num[0] == num[2] and num[1] != num[0]):
    paixing = '对子'
    a = base_count + sotr_dic[paixing]
    # print(paixing, a)
  else:
    a = base_count
  return a


# 对存储玩家分数的字典进行排序
def compare(count_dic):
  d = list(zip(count_dic.values(), count_dic.keys()))
  return sorted(d, reverse=True)


for key, value in player_dic.items():
  # print(key,value)
  num, huase = paixing(value)
  # print(num,huase)
  num = sotr(num)
  # print(num, huase)
  count1 = count(num, huase)
  # print(count1)
  count_dic[key] = count1
  print(key + "的牌为:" + str(value))
  count_new_list = compare(count_dic)
# print(count_new_list)
print('最终排名:' + "\t" + count_new_list[0][1] + "第一名" + "\t" + count_new_list[1][1] + "第二名" + "\t" + count_new_list[2][
  1] + "第三名" + "\t" + count_new_list[3][1] + "第四名" + "\t" + count_new_list[4][1] + "第五名")

到此这篇关于python编写扎金花小程序的文章就介绍到这了,更多相关pytho扎金花小程序内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python+opencv识别图片中的圆形
Mar 25 Python
Sanic框架异常处理与中间件操作实例分析
Jul 16 Python
Python中GIL的使用详解
Oct 03 Python
Python时间序列处理之ARIMA模型的使用讲解
Apr 02 Python
对Python中TKinter模块中的Label组件实例详解
Jun 14 Python
使用django实现一个代码发布系统
Jul 18 Python
python动态视频下载器的实现方法
Sep 16 Python
python selenium 执行完毕关闭chromedriver进程示例
Nov 15 Python
使用Python实现画一个中国地图
Nov 23 Python
基于Python共轭梯度法与最速下降法之间的对比
Apr 02 Python
浅谈对python中if、elif、else的误解
Aug 20 Python
python编程简单几行代码实现视频转换Gif示例
Oct 05 Python
Python项目实战之使用Django框架实现支付宝付款功能
Feb 23 #Python
Python接口自动化系列之unittest结合ddt的使用教程详解
Feb 23 #Python
python利用opencv实现颜色检测
Feb 23 #Python
详解Python中openpyxl模块基本用法
Feb 23 #Python
python爬虫今日热榜数据到txt文件的源码
Feb 23 #Python
如何用Python和JS实现的Web SSH工具
Feb 23 #Python
Python 带星号(* 或 **)的函数参数详解
Feb 23 #Python
You might like
php使用cookie实现记住登录状态
2015/04/27 PHP
js数组Array sort方法使用深入分析
2013/02/21 Javascript
js中对象的声明方式以及数组的一些用法示例
2013/12/11 Javascript
JavaScript和HTML DOM的区别与联系及Javascript和DOM的关系
2015/11/15 Javascript
创建自己的jquery表格插件
2015/11/25 Javascript
JS实现输入框提示文字点击时消失效果
2016/07/19 Javascript
KnockoutJS 3.X API 第四章之数据控制流foreach绑定
2016/10/10 Javascript
node.js实现登录注册页面
2017/04/08 Javascript
vue-cli如何添加less 以及sass
2017/07/06 Javascript
基于js 本地存储(详解)
2017/08/16 Javascript
使用InstantClick.js让页面提前加载200ms
2017/09/12 Javascript
详解vue+vuex+koa2开发环境搭建及示例开发
2018/01/22 Javascript
微信小程序版翻牌小游戏
2018/01/26 Javascript
layui使用及简单的三级联动实现教程
2020/12/01 Javascript
JS操作JSON常用方法(10w阅读)
2020/12/06 Javascript
[01:14:19]NAVI vs Mineski 2019国际邀请赛淘汰赛 败者组BO1 8.20.mp4
2020/07/19 DOTA
Python open()文件处理使用介绍
2014/11/30 Python
Python中计算三角函数之cos()方法的使用简介
2015/05/15 Python
Python操作Redis之设置key的过期时间实例代码
2018/01/25 Python
redis之django-redis的简单缓存使用
2018/06/07 Python
Python分布式进程中你会遇到的问题解析
2019/05/28 Python
python的几种矩阵相乘的公式详解
2019/07/10 Python
HTML5 自动聚焦(autofocus)属性使用介绍
2013/08/07 HTML / CSS
世界上最大的罕见唱片、CD和音乐纪念品网上商店:991.com
2018/05/03 全球购物
ALDO加拿大官网:加拿大女鞋品牌
2018/12/22 全球购物
英国最大的独立摄影零售商:Park Cameras
2019/11/27 全球购物
一套SQL笔试题
2016/08/14 面试题
材料物理专业个人求职信
2013/12/15 职场文书
优秀社区干部事迹材料
2014/02/03 职场文书
主持词开场白
2014/03/17 职场文书
孝敬父母的活动方案
2014/08/31 职场文书
合同审查法律意见书
2015/06/04 职场文书
新郎新娘致辞
2015/07/31 职场文书
Go缓冲channel和非缓冲channel的区别说明
2021/04/25 Golang
python实现调用摄像头并拍照发邮箱
2021/04/27 Python
游戏《东方异文石:爱亚利亚黎明》正式版发布
2022/04/03 其他游戏