基于Python——棋牌游戏11点
作业需求:
1、生成一副扑克牌(自己设计扑克牌的结构,小王和大王可以分别用14、15表示 )
2、3个玩家
3、发牌规则
默认先给用户发一张牌,其中 J、Q、K、小王、大王代表的值为0.5,其他就是则就是当前的牌面值。
用户根据自己的情况判断是否继续要牌。
要,则再给他发一张。(可以一直要牌,但是如果自己手中的牌总和超过11点,你的牌就爆掉了(牌面变成0))
不要,则开始给下个玩家发牌。(没有牌则则牌面默认是0)
如果用户手中的所有牌相加大于11,则表示爆了,此人的分数为0,并且自动开始给下个人发牌。
4、最终计算并获得每个玩家的分值
import random
# 定义扑克牌
kind_list = ['黑桃', '方块', '红心', '梅花'] # 四种花色
number_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 0.5, 0.5, 0.5] # 一种花色中13张牌
cards_list = [('大王', 0.5), ('小王', 0.5)] # 大小王
for i in kind_list:
for j in number_list:
cards_tuple = (i, j)
cards_list.append(cards_tuple)
random.shuffle(cards_list)
# 定义玩家,设置各玩家初始牌面值
user_list = ['张三', '李四', '王五']
result = dict()
for user in user_list:
result.setdefault(user, 0)
data = cards_list.pop(0)[1]
result[user] = data
# 发牌
k = 0 # 变量k用来控制玩家的索引
print('游戏开始')
while cards_list:
k = k % 3
text = '\n{},您现在的牌总和为:{}\n目前还有{}张牌,分别是:\n{}'.format(user_list[k], result[user_list[k]], len(cards_list), cards_list)
print(text)
ans = input('是否继续要牌(要/不要):')
if ans != '要' and ans != '不要':
print('输入错误,请按提示输入。')
continue
elif ans == '不要':
k += 1
else:
random.shuffle(cards_list)
data = cards_list.pop(0)[1]
result[user_list[k]] += data
if result[user_list[k]] >= 11:
result[user_list[k]] = 0
k += 1
# 输出结果
print('牌已发完,游戏结束')
print(result)