python实现棋牌游戏11点
# coding:utf-8"""
本脚本是棋牌游戏11点的游戏
- 发牌规则
#
# - 默认先给用户发一张牌,其中
# J、Q、K、小王、大王代表的值为0.5
# 其他就是则就是当前的牌面值。
# - 用户根据自己的情况判断是否继续要牌。
# - 要,则再给他发一张。
# - 不要,则开始给下个玩家发牌。
# - 如果用户手中的所有牌相加大于11,则表示爆了,此人的分数为0,并且自动开始给下个人发牌。
#
# - 最终计算并获得每个玩家的分值,例如:
"""
import random
# --------------1.游戏初始设置---------------------------
# 定义一个结果输出字典
result = {}
# 定义一个玩家列表
user_list = ["alex", "武沛齐", "李路飞"]
# 定义一个分数的字典以便计算分数
score = {'2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9, '10': 10, "J": 0.5, "Q": 0.5, "K": 0.5, "A": 1, "大王": 0.5, "小王": 0.5}
# --------------2.生成一副扑克牌 54张---------------------------
# 定义一个空的扑克牌列表
pork_list = []
# 先生成一个2-10 的列表作为牌的牌面
num_list = []
for i in range(2, 11):
num_list.append(str(i))
# 将["J", "Q", "K", "A"]加入牌面值列表里
num_list.extend(["J", "Q", "K", "A"])
# 将每张牌配上花色
colour = ('梅花', '方块', '红桃', '黑桃')
for j in colour:
for i in num_list:
pork_list.append((i, j))
# 加上大王小王两张牌,这里要注意一定要元组,否则后面会有问题
pork_list.extend([("大王", ), ("小王", )])
# --------------------------3.开始发牌---------------------------
# -----------3.1开始每人发一张牌,并打印-------------
# 每个人先初始得到一张随机发牌random方法 每发一张牌则去把这张牌从牌堆中删除 列表的pop方法
# 建立一个字典放置每个用户得到的牌,key就是用户名,value就是牌堆
gamer_dict = {}
for user in user_list:
# 从牌堆里取值,pop方法取的是列表的index,而randint是包含右边的数值的,所以必须列表长度减去1,否则会超出范围
gamer_dict =
for gamer in gamer_dict:
print(f"{gamer} 当前的牌为 {gamer_dict} ", end='')
print(f"\n抽完之后剩下的{len(pork_list)}张牌为:\n{pork_list}")
# -----------3.2开始单独给一个人发牌,并计算每人的牌面值-------------
# 最外层循环,每个玩家
for user in user_list:
print(f"{user}手里的牌为{gamer_dict}")
# 单个玩家,计算牌跟分值
while True:
choice = input(f"{user}是否需要发一张牌:(Y/N)")
# 不需要发牌
if choice.upper() == "N":
# 循环单个玩家手里的牌,并计算牌面值
gamer_score = 0
for i in gamer_dict:
gamer_score += score]
print(f"{user}当前的牌为{gamer_dict},得分为{gamer_score}")
break
# 需要发牌
draw_pork = pork_list.pop(random.randint(0, len(pork_list)) - 1)
# 给玩家字典里面单个玩家的牌堆里放入抽到的牌
gamer_dict.append(draw_pork)
print(f"{user}抽到的牌为{draw_pork} \n 手里的牌为{gamer_dict} \n抽完之后剩下的{len(pork_list)}张牌为:\n{pork_list}")
# 循环单个玩家手里的牌,并计算牌面值
gamer_score = 0
for i in gamer_dict:
gamer_score += score]
if gamer_score > 11:
gamer_score = 0
print(f"{user}当前的牌为{gamer_dict},得分为{gamer_score}")
break
result = gamer_score
# -----------4 输出结果-------------
print("result = {")
for i in result:
print(f"{' ' * 10}{i} : {result}")
print("}") 很强势啊,大兄弟 谢谢分享,抽空学习。 楼主好厉害,编码收藏了 感谢分享 之前玩过实体的纸质卡牌 可惜玩的不好 好家伙,要不来个多人在线的
页:
[1]