python3.7 jack棋牌11点实例
# -*- codeing: utf-8 -*-
# Project: 棋牌游戏11点
# Author: jack
# Version: 2.2
# Start Time: 2021-07-24
import random
P_INFO = [["小王",0.5],["大王",0.5]] # 初始一副poker牌
USER_LIST = ["庄家","玩家1","玩家2"] # 玩家信息表
P_INFO_TWO = [] # 剩余牌列表
USER_POKER = [] # 人员和牌列表
RESULT ={} # 最终成绩表
# 1、生成一副扑克牌(自己设计扑克牌的结构)
def one_poker(P_INFO):
poker_type = ["黑桃","红桃","草花","方块"]
# 基本牌数字
poker_num = ["A","2","3","4","5","6","7","8","9","10","J","Q","K","小王","大王"]
for type in poker_type:
count = 1
for num in range(len(poker_num)):
if num > 12:
pass
elif num > 9:
card = [type+poker_num[num],0.5] # J、Q、K、代表的值为0.5
P_INFO.append(card)
else:
card = [type+poker_num[num],count]
P_INFO.append(card)
count += 1
# print(P_INFO)
return P_INFO # 已生成一副牌
# 2、3个玩家(玩家也可以自己定义)
def user_num(USER_LIST):
count = 0
while count < 54:
user_name = input("请输入玩家名字,输入Q/q退出游戏,输入S/s开始发牌:").strip()
print()
if user_name.upper() == "Q":
exit()
elif user_name.upper() == "S":
break
elif user_name in USER_LIST:
print("{}玩家名称已存在,请重新输入".format(user_name))
else:
USER_LIST.append(user_name) # 新玩家自动添加到玩家信息表
count += 1
else:
exit("太多人玩了,牌不够了")
return USER_LIST
# 3、发牌
def deal(USER_LIST,P_INFO,RESULT,P_INFO_TWO):
count = 0
while count < len(USER_LIST):
user_p_one = random.randint(0,len(P_INFO)-1) # 产生0-53之间的一个整数
card = P_INFO[user_p_one]
user = USER_LIST[count]
USER_POKER.append([user,card])
print("{}抽到的第1张牌为:{}".format(user,card))
print("牌面值为:{}".format(card[1]))
print()
RESULT[user] = card[1]
P_INFO.pop(user_p_one)
count += 1
P_INFO_TWO.extend(P_INFO) # 剩余牌列表
return USER_POKER,RESULT,P_INFO_TWO
# 4、要牌
def recard(USER_LIST,P_INFO_TWO,RESULT,USER_POKER):
count = 0
while count < len(USER_LIST):
user = input("{}选择是否要牌,输入N/n不要牌,回车继续要牌:".format(USER_LIST[count])).strip()
print()
if user.upper() == "N":
count += 1
# continue
else:
user_p_one = random.randint(0,len(P_INFO_TWO)-1) # 取一张牌
card = P_INFO_TWO[user_p_one] # 牌的信息
user = USER_LIST[count] # 用户信息
USER_POKER[count].append(card) # 牌加到人员和牌列表
print("{}抽到的牌为:{}".format(user,card))
score = RESULT.get(user) # 得到第一次牌分数
score += card[1] # 计算新的分数
print("{}现在的牌面是:{}".format(USER_LIST[count],USER_POKER[count][1:]))
print("牌面值为:{}".format(score))
print()
RESULT[user] = score # 把分数写进字典
P_INFO_TWO.pop(user_p_one)
if score > 11: # 超过11分牌爆掉
RESULT[user] = 0
print("{}牌爆掉了,下次注意点......".format(user))
print()
count += 1
return P_INFO_TWO,RESULT
one_poker(P_INFO) # 生产一副牌
# for poker in P_INFO:
# print(poker[0],end=" ") # 显示一副牌,不显示值
print("JACK赌坊,欢迎光临".center(30,"-"))
print("小赌怡情,大赌伤身,强赌灰飞烟灭".center(22,"-"))
print("玩家请看牌".center(40,"-"))
print(P_INFO) # 显示一副牌
print("开始棋牌11点".center(34,"-"))
print()
user_num(USER_LIST) # 人员列表
# print(USER_LIST)
deal(USER_LIST,P_INFO,RESULT,P_INFO_TWO) # 第一次发牌
# print(USER_POKER)
# print(RESULT)
# print(P_INFO_TWO)
recard(USER_LIST,P_INFO_TWO,RESULT,USER_POKER) # 要牌过程
# print(P_INFO_TWO)
print(RESULT) # 打印最终结果字典
# 5、判断胜者
# 字典排序
win_sorted = sorted(RESULT.items(),key=lambda x:x[1],reverse=True)
# print(win_sorted)
count = 1
while count < len(win_sorted)+1:
if win_sorted[count-1][1] != win_sorted[count][1]:
print("胜者是{}".format(win_sorted[:count]).center(40,"-"))
break
else:
count += 1
python3.7 jack棋牌11点实例的更多相关文章
- JavaScript学习11 数组排序实例
JavaScript学习11 数组排序实例 数组声明 关于数组对象的声明,以前说过:http://www.cnblogs.com/mengdd/p/3680649.html 数组声明的一种方式: va ...
- Java-Runoob-高级教程-实例-方法:11. Java 实例 – enum 和 switch 语句使用
ylbtech-Java-Runoob-高级教程-实例-方法:11. Java 实例 – enum 和 switch 语句使用 1.返回顶部 1. Java 实例 - enum 和 switch 语句 ...
- Java-Runoob-高级教程-实例-数组:11. Java 实例 – 删除数组元素
ylbtech-Java-Runoob-高级教程-实例-数组:11. Java 实例 – 删除数组元素 1.返回顶部 1. Java 实例 - 删除数组元素 Java 实例 以下实例演示了如何使用 ...
- Java-Runoob-高级教程-实例-字符串:11. Java 实例 - 字符串性能比较测试
ylbtech-Java-Runoob-高级教程-实例-字符串:11. Java 实例 - 字符串性能比较测试 1.返回顶部 1. Java 实例 - 字符串性能比较测试 Java 实例 以下实例演 ...
- 零元学Expression Blend 4 - Chapter 11 用实例了解布局容器系列-「Border」
原文:零元学Expression Blend 4 - Chapter 11 用实例了解布局容器系列-「Border」 将教大家以实做案例认识Blend 4 的布局容器,此章介绍的布局容器是Blend ...
- python从入门到大神---4、python3文件操作最最最最简单实例
python从入门到大神---4.python3文件操作最最最最简单实例 一.总结 一句话总结: python文件操作真的很简单,直接在代码中调用文件操作的函数比如open().read(),无需引包 ...
- Windows server2008/2012 安装oracle 11 创建实例HANG住在百分之2
Windows server2008/2012 安装oracle 11.2.0.1的时候,可能会在创建数据库实例的时候卡在百分之2的地方. 这个时候可以 1.点击开始菜单,在“搜索程序和文件”中输入“ ...
- postgres 11 单实例最大支持多少个database?
有人在pg8时代(10年前)问过,当时说10000个没问题,而且每个db会在/base下建立1个文件夹, 文件ext3只支持32000个子文件夹,所以这是上限了. 而现在早就ext4了,根本没有限制了 ...
- C++11 正则表达式——实例系统(转载)
一.用正则表达式判断邮箱格式是否正确 1 #include <regex> #include <iostream> #include <string> bool i ...
随机推荐
- 如何在TVM上集成Codegen(上)
如何在TVM上集成Codegen(上) 许多常用的深度学习内核,或者提供DNNL或TensorRT等框架和图形引擎,让用户以某种方式描述他们的模型,从而获得高性能.此外,新兴的深度学习加速器也有自己的 ...
- Technology Document Guide of TensorRT
Technology Document Guide of TensorRT Abstract 本示例支持指南概述了GitHub和产品包中包含的所有受支持的TensorRT 7.2.1示例.Tensor ...
- 编译原理-文法(G)和语言(L)
1.设文法G2(S): S->AB A->aA|a B->bB|b G2(S)产生的语言是什么? 解:L(G2)={ambn|m,n≥1} 2.请给出产生语言为{anbn|n≥1}的 ...
- Qt信号槽机制理解
1. 信号和槽概述 > 信号槽是 Qt 框架引以为豪的机制之一.所谓信号槽,实际就是观察者模式(发布-订阅模式).当某个`事件`发生之后,比如,按钮检测到自己被点击了一下,它就会发出一个信号(s ...
- QT环境变量设置
首先找到自己对应的目录 我的如图 还有一个路径 将这两个路径添加到系统变量的Path中
- 提高GUI自动化测试稳定性解决方案
针对"GUI自动化测试稳定性问题"这个问题,最典型的情景就是:同样的测试用例,在同样的测试执行环境下,测试的结果有时是Success,有时是Fail,这严重降低了GUI测试的可信度 ...
- WordPress简介
WordPress是什么? WordPress是一款免费开源的内容管理系统(CMS),目前已经成为全球使用最多的CMS建站程序.根据 W3techs 的最新统计(截至2021年4月),在全球的所有网站 ...
- 关于spooling的一些理解
spooling做了什么 1.将独占设备(打印机)虚拟化,变成一个逻辑上的共享设备. 怎么理解?虚拟化,通俗来讲,就是让单个资源仿似变成了多个资源. 以打印机为例,没有虚拟化之前,只能有一个进程申请到 ...
- 08-ADMM算法
08-ADMM算法 目录 一.ADMM 算法动机 二.对偶问题 三.对偶上升法 四.对偶分割 五.乘子法(增广拉格朗日函数) 5.1 步长为 $\rho$ 的好处 六.ADMM算法 6.1 ADMM ...
- 痞子衡嵌入式:超级下载算法RT-UFL v1.0发布,附J-Link下安装教程
痞子衡主导的"学术"项目 <RT-UFL - 一个适用全平台i.MXRT的超级下载算法设计> 历时 8 个月终于迎来了 v1.0 版发布,因为是第一个正式版,为了保证质 ...