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 ...
随机推荐
- 电阻存储器为edge-AI提供了仿生架构
电阻存储器为edge-AI提供了仿生架构 Resistive memories enable bio-inspired architectures for edge AI 近年来,脑启发计算领域的研究 ...
- 打造住院新体验,GVS智慧病房有何独到之处?
3月26-28日,由广东省医院协会主办的"2021第二届广东省医院建设大会暨医院建筑与装备展览会"在广州琶洲国际采购中心盛大举办,来自全国各地的医院代表及企事业单位代表4000余人 ...
- ubuntu虚拟机安装ssh教程
大家好,这期给大家带来一期Ubuntu虚拟机中ssh的安装教程,话不多说,开整 第一步:输入su后输入密码进入root权限 第二步:在管理员模式下运行apt-get install openssh-s ...
- eclipse解决中文乱码
参考链接:https://blog.csdn.net/lzc2644481789/article/details/97244261
- springboot注解之@ConditionalOnProperty
最近在研究springboot的源码,看到很多@ConditionalOnXxx的注解,大概明白此注解的意思,就是判断条件,这个条件就是Xxx,例如ConditionalOnProperty就是判断配 ...
- OpenCV随笔
创建一个窗口#zeros(shape,dtype=float,order='C')#shape:形状,dtype:数据类型,可选参数,默认numpy.float64img = np.zeros((50 ...
- 『心善渊』Selenium3.0基础 — 6、Selenium中使用XPath定位元素
目录 1.Selenium中使用XPath查找元素 (1)XPath通过id,name,class属性定位 (2)XPath通过标签中的其他属性定位 (3)XPath层级定位 (4)XPath索引定位 ...
- canvas介绍和用途
canvas介绍和用途 canvas(画布)主要是位图 svg(矢量图) canvas标签,必须要写的3个属性 id width height 为什么不在style中设置width和height呢? ...
- vue中输入框事件监听 v-on:input
<van-field v-model="inputVal" v-on:input="search" />
- SpringBoot拦截器及源码分析
1.拦截器是什么 java里的拦截器(Interceptor)是动态拦截Action调用的对象,它提供了一种机制可以使开发者在一个Action执行的前后执行一段代码,也可以在一个Action执行前阻止 ...