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中zip()方法应用实例分析
Apr 16 Python
linux环境下python中MySQLdb模块的安装方法
Jun 16 Python
Python切片索引用法示例
May 15 Python
python使用循环打印所有三位数水仙花数的实例
Nov 13 Python
python 限制函数执行时间,自己实现timeout的实例
Jan 12 Python
pandas的连接函数concat()函数的具体使用方法
Jul 09 Python
python函数的万能参数传参详解
Jul 26 Python
Django中的用户身份验证示例详解
Aug 07 Python
Python 获取项目根路径的代码
Sep 27 Python
python pyinstaller打包exe报错的解决方法
Nov 02 Python
Python 保存加载mat格式文件的示例代码
Aug 04 Python
详解解Django 多对多表关系的三种创建方式
Aug 23 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代码
2011/11/27 PHP
在PHP上显示JFreechart画的统计图方法
2013/11/03 PHP
php获取网页中图片、DIV内容的简单方法
2014/06/19 PHP
推荐一款PHP+jQuery制作的列表分页的功能模块
2014/10/14 PHP
学习php设计模式 php实现备忘录模式(Memento)
2015/12/09 PHP
composer.lock文件的作用
2016/02/03 PHP
FormValid0.5版本发布,带ajax自定义验证例子
2007/08/17 Javascript
javascript 基础篇3 类,回调函数,内置对象,事件处理
2012/03/14 Javascript
jquery判断元素的子元素是否存在的示例代码
2014/02/04 Javascript
Javascript中数组sort和reverse用法分析
2014/12/30 Javascript
D3.js中data(), enter() 和 exit()的问题详解
2015/08/17 Javascript
基于jquery实现一个滚动的分步注册向导-附源码
2015/08/26 Javascript
jQuery animate easing使用方法图文详解
2016/06/17 Javascript
Web打印解决方案之证件套打的实现思路
2016/08/29 Javascript
jQuery自定义插件详解及实例代码
2016/12/29 Javascript
vue中将网页打印成pdf实例代码
2017/06/15 Javascript
js单页hash路由原理与应用实战详解
2017/08/14 Javascript
在React中写一个Animation组件为组件进入和离开加上动画/过度效果
2019/06/24 Javascript
jQuery实现数字华容道小游戏(实例代码)
2020/01/16 jQuery
Javascript组合继承方法代码实例解析
2020/04/02 Javascript
微信小程序实现多选框功能的实例代码
2020/06/24 Javascript
Python中endswith()函数的基本使用
2015/04/07 Python
python 爬虫出现403禁止访问错误详解
2017/03/11 Python
Python实现求数列和的方法示例
2018/01/12 Python
pygame实现俄罗斯方块游戏
2018/06/26 Python
使用Python实现跳帧截取视频帧
2019/05/31 Python
python的一些加密方法及python 加密模块
2019/07/11 Python
python聚类算法解决方案(rest接口/mpp数据库/json数据/下载图片及数据)
2019/08/28 Python
keras之权重初始化方式
2020/05/21 Python
英国最受信任的在线眼镜商之一:Fashion Eyewear
2019/10/31 全球购物
Java中有几种方法可以实现一个线程?用什么关键字修饰同步方法?stop()和suspend()方法为何不推荐使用?
2015/08/04 面试题
铁路工务反思材料
2014/02/07 职场文书
交警个人先进事迹材料
2014/05/11 职场文书
端午节活动总结
2014/08/26 职场文书
私营公司诉讼代理委托书范本
2014/09/13 职场文书
详解Redis在SpringBoot工程中的综合应用
2021/10/16 Redis