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实现从字符串中找出字符1的位置以及个数的方法
Aug 25 Python
Python3实现从指定路径查找文件的方法
May 22 Python
python使用matplotlib画饼状图
Sep 25 Python
numpy中的meshgrid函数的使用
Jul 31 Python
Python + Requests + Unittest接口自动化测试实例分析
Dec 12 Python
python实现根据给定坐标点生成多边形mask的例子
Feb 18 Python
如何基于python3和Vue实现AES数据加密
Mar 27 Python
基于python图像处理API的使用示例
Apr 03 Python
Python3基于print打印带颜色字符串
Jul 06 Python
Jupyter安装拓展nbextensions及解决官网下载慢的问题
Mar 03 Python
教你用python实现一个无界面的小型图书管理系统
May 21 Python
pandas中对文本类型数据的处理小结
Nov 01 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
Body是什么,该怎么喝出咖啡里的口感
2021/03/03 咖啡文化
PHP文章采集URL补全函数(FormatUrl)
2012/08/02 PHP
php实现在服务器上创建目录的方法
2015/03/16 PHP
PHP爬虫之百万级别知乎用户数据爬取与分析
2016/01/22 PHP
php自定义中文字符串截取函数substr_for_gb2312及substr_for_utf8示例
2016/05/28 PHP
php实现的rc4加密解密类定义与用法示例
2018/08/16 PHP
arguments对象
2006/11/20 Javascript
JavaScript 基于原型的对象(创建、调用)
2009/10/16 Javascript
jquery 圆形旋转图片滚动切换效果
2011/01/19 Javascript
javascript温习的一些笔记 基础常用知识小结
2011/06/22 Javascript
js判断滚动条是否已到页面最底部或顶部实例
2014/11/20 Javascript
微信小程序 参数传递详解
2016/10/24 Javascript
JS获取鼠标坐标并且根据鼠标位置不同弹出不同内容
2017/06/12 Javascript
vue cli 全面解析
2018/02/28 Javascript
Vue数据监听方法watch的使用
2018/03/28 Javascript
vue.js实现的绑定class操作示例
2018/07/06 Javascript
vue计算属性get和set用法示例
2019/02/08 Javascript
使用VueCli3+TypeScript+Vuex一步步构建todoList的方法
2019/07/25 Javascript
element form 校验数组每一项实例代码
2019/10/10 Javascript
react 不用插件实现数字滚动的效果示例
2020/04/14 Javascript
vue select 获取value和lable操作
2020/08/28 Javascript
[02:49:21]2019完美盛典全程录像
2019/12/08 DOTA
python使用PyGame模块播放声音的方法
2015/05/20 Python
Django视图之ORM数据库查询操作API的实例
2017/10/27 Python
spark: RDD与DataFrame之间的相互转换方法
2018/06/07 Python
Python中logging实例讲解
2019/01/17 Python
Python将列表数据写入文件(txt, csv,excel)
2019/04/03 Python
django ModelForm修改显示缩略图 imagefield类型的实例
2019/07/28 Python
Python可变参数会自动填充前面的默认同名参数实例
2019/11/18 Python
Nginx+Uwsgi+Django 项目部署到服务器的思路详解
2020/05/08 Python
会计实习期自我鉴定
2013/10/06 职场文书
大学毕业生个人自荐信范文
2014/01/08 职场文书
汽车技术服务与贸易专业求职信
2014/07/20 职场文书
党员对照检查材料思想汇报(党的群众路线)
2014/09/24 职场文书
环境工程专业毕业生求职信
2014/09/30 职场文书
2015年财政局工作总结
2015/05/21 职场文书