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字符串匹配算法KMP实例
Jul 18 Python
python 获取指定文件夹下所有文件名称并写入列表的实例
Apr 23 Python
python  创建一个保留重复值的列表的补码
Oct 15 Python
Python字符串的常见操作实例小结
Apr 08 Python
使用Python实现企业微信的自动打卡功能
Apr 30 Python
pyinstaller打包单个exe后无法执行错误的解决方法
Jun 21 Python
PyQt5实现简易电子词典
Jun 25 Python
pytorch实现用CNN和LSTM对文本进行分类方式
Jan 08 Python
Python实现CNN的多通道输入实例
Jan 17 Python
判断Threading.start新线程是否执行完毕的实例
May 02 Python
如何在Win10系统使用Python3连接Hive
Oct 15 Python
详解Python中*args和**kwargs的使用
Apr 07 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
pdo中使用参数化查询sql
2011/08/11 PHP
WIFI万能钥匙密码查询接口实例
2015/09/28 PHP
使用xampp搭建运行php虚拟主机的详细步骤
2015/10/21 PHP
CI(CodeIgniter)模型用法实例分析
2016/01/20 PHP
php魔法函数与魔法常量使用介绍
2017/07/23 PHP
PHP自定义递归函数实现数组转JSON功能【支持GBK编码】
2018/07/17 PHP
js计数器代码
2006/11/04 Javascript
javascript getElementsByClassName 和js取地址栏参数
2010/01/02 Javascript
JavaScript DOM 编程艺术(第2版)读书笔记(JavaScript的最佳实践)
2013/10/01 Javascript
优化Jquery,提升网页加载速度
2013/11/14 Javascript
JavaScript操作Oracle数据库示例
2015/03/06 Javascript
jQuery.each使用详解
2015/07/07 Javascript
Bootstrap轮播加上css3动画,炫酷到底!
2015/12/22 Javascript
JQ中$(window).load和$(document).ready区别与执行顺序
2017/03/01 Javascript
详解React-Router中Url参数改变页面不刷新的解决办法
2018/05/08 Javascript
jQuery实现图片简单轮播功能示例
2018/08/13 jQuery
详解vue几种主动刷新的方法总结
2019/02/19 Javascript
详解将微信小程序接口Promise化并使用async函数
2019/08/05 Javascript
Python多进程库multiprocessing中进程池Pool类的使用详解
2017/11/24 Python
python监控进程状态,记录重启时间及进程号的实例
2019/07/15 Python
德国旅游网站:weg.de
2018/06/03 全球购物
Clarks其乐鞋荷兰官网:Clarks荷兰
2019/07/05 全球购物
巴西化妆品商店:Lojas Rede
2019/07/26 全球购物
自我鉴定范文
2013/11/10 职场文书
出纳员的岗位职责
2014/02/22 职场文书
2014年元旦感言
2014/03/06 职场文书
委托书怎么写
2014/07/31 职场文书
医疗专业毕业生求职信
2014/08/28 职场文书
2014光棍节大学生联谊活动方案
2014/10/10 职场文书
2014年质检员工作总结
2014/11/18 职场文书
婚礼嘉宾致辞
2015/07/28 职场文书
缅怀先烈主题班会
2015/08/14 职场文书
2016春季田径运动会广播稿
2015/12/21 职场文书
Python Pandas模块实现数据的统计分析的方法
2021/06/24 Python
python 管理系统实现mysql交互的示例代码
2021/12/06 Python
SpringBoot详解执行过程
2022/07/15 Java/Android