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 编码Basic Auth使用方法简单实例
May 25 Python
python之Character string(实例讲解)
Sep 25 Python
python交互式图形编程实例(一)
Nov 17 Python
python操作redis方法总结
Jun 06 Python
python3 打开外部程序及关闭的示例
Nov 06 Python
Python爬虫将爬取的图片写入world文档的方法
Nov 07 Python
对python遍历文件夹中的所有jpg文件的实例详解
Dec 08 Python
PYQT5设置textEdit自动滚屏的方法
Jun 14 Python
OpenCV模板匹配matchTemplate的实现
Oct 18 Python
PYTHON实现SIGN签名的过程解析
Oct 28 Python
解决python 虚拟环境删除包无法加载的问题
Jul 13 Python
解决Pytorch dataloader时报错每个tensor维度不一样的问题
May 28 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将字符分解为多个字符串的方法
2014/11/22 PHP
JavaScript国旗变换效果代码
2008/08/13 Javascript
关于可运行代码无法正常执行的使用说明
2010/05/13 Javascript
Jquery从头学起第四讲 jquery入门教程
2010/08/01 Javascript
修改jQuery Validation里默认的验证方法
2012/02/14 Javascript
jquery实现图片灯箱明暗的遮罩效果
2013/11/15 Javascript
Javascript核心读书有感之类型、值和变量
2015/02/11 Javascript
JS组件Bootstrap Table表格行拖拽效果实现代码
2020/08/27 Javascript
项目实践一图片上传之form表单还是base64前端图片压缩(前端图片压缩)
2016/07/28 Javascript
bootstrapvalidator之API学习教程
2017/06/29 Javascript
vue服务端渲染的实例代码
2017/08/28 Javascript
在vue中使用SockJS实现webSocket通信的过程
2018/08/29 Javascript
angularJs利用$scope处理升降序的方法
2018/10/08 Javascript
Vuex的热更替如何实现
2020/06/05 Javascript
vscode 使用Prettier插件格式化配置使用代码详解
2020/08/10 Javascript
python将图片文件转换成base64编码的方法
2015/03/14 Python
详解详解Python中writelines()方法的使用
2015/05/25 Python
Python实现获取nginx服务器ip及流量统计信息功能示例
2018/05/18 Python
python3 求约数的实例
2019/12/05 Python
python基于plotly实现画饼状图代码实例
2019/12/16 Python
详解django中Template语言
2020/02/22 Python
Pycharm中安装wordcloud等库失败问题及终端通过pip安装的Python库如何添加到Pycharm解释器中(推荐)
2020/05/10 Python
tensorflow 大于某个值为1,小于为0的实例
2020/06/30 Python
编程实现当输入某产品代码则打印出该产品记录的功能
2014/05/03 面试题
应届生文秘专业个人自荐信格式
2013/09/21 职场文书
消防工作实施方案
2014/06/09 职场文书
火箭队口号
2014/06/18 职场文书
2014党委书记四风问题对照检查材料思想汇报
2014/09/22 职场文书
单位实习工作证明怎么写
2014/11/02 职场文书
2014年实习生工作总结
2014/11/27 职场文书
高考升学宴答谢词
2015/01/20 职场文书
少先队工作总结2015
2015/05/13 职场文书
七年级话题作文之执着
2019/11/19 职场文书
基于Python实现流星雨效果的绘制
2022/03/18 Python
USB TYPE-C 或将成为所有智能手机充电标准
2022/04/21 数码科技
解决Mysql报错 Table 'mysql.user' doesn't exist
2022/05/06 MySQL