需求
作业需求:
1、生成一副扑克牌(自己设计扑克牌的结构,小王和大王可以分别用14、15表示 )
2、3个玩家(玩家也可以自己定义)
user_list = ["zhangkai","likai","wangkai"]
3、发牌规则
默认先给用户发一张牌,其中 J、Q、K、小王、大王代表的值为0.5,其他就是则就是当前的牌面值。
用户根据自己的情况判断是否继续要牌。
要,则再给他发一张。(可以一直要牌,但是如果自己手中的牌总和超过11点,你的牌就爆掉了(牌面变成0))
不要,则开始给下个玩家发牌。(没有牌则则牌面默认是0)
如果用户手中的所有牌相加大于11,则表示爆了,此人的分数为0,并且自动开始给下个人发牌。
4、最终计算并获得每个玩家的分值,例如:
result = {
"zhangkai":8,
"likai":9,
"wangkai":0
}
必备技术点:随机抽排
import random
total_poke_list = [("红桃", 1), ("黑桃", 2), ......,("大王", 15), ("小王", 14)]
# 随机生成一个数,当做索引。
index = random.randint(0, len(total_poke_list) - 1)
# 获取牌
print("抽到的牌为:", total_poke_list[index])
# 踢除这张牌
total_poke_list.pop(index)
print("抽完之后,剩下的牌为:", total_poke_list)
# 采分点
请补充完善你的代码
result = {} # 存储最终各位玩家的得分
user_list = ["zhangkai","likai","wangkai"]
# 补充代码
print(result)
实现
注意,因为下面的代码包含cls
清屏指令,所以,请在Windows的终端中执行,在pycharm中右键运行清屏代码不生效。
python
import os
poke_type = ('红桃', '黑桃', '梅花', '方块')
poke_set = set()
poke_set.update({('小王', 0.5), ('大王', 0.5)})
poke_set.update({(k + i, 0.5) for k in poke_type for i in ['J', 'Q', 'k', 'A']})
poke_set.update({(k + str(i), i) for k in poke_type for i in range(2, 11)})
# print(poke_set)
user_dict = {
"zhangkai": {'poke': [poke_set.pop()], 'score': 0, 'msg': ''},
"likai": {'poke': [poke_set.pop()], 'score': 0, 'msg': ''},
"wangkai": {'poke': [poke_set.pop()], 'score': 0, 'msg': ''},
}
# print(user_dict)
for i in user_dict:
while True:
user_dict[i]['score'] = sum([i[1] for i in user_dict[i]['poke']])
choice = input('尊敬的用户[{}],你现在手里有牌[{}],得分[{}],要牌y/不要n\n请根据需求输入: '.format(
i,
' '.join([i[0] for i in user_dict[i]['poke']]),
sum([i[1] for i in user_dict[i]['poke']])
)).strip()
if not choice:
continue
if choice.upper() == 'N':
os.system('cls') # windows 清屏指令,Linux请使用 clear
break
elif choice.upper() == "Y":
user_dict[i]['poke'].insert(0, poke_set.pop())
user_dict[i]['score'] = sum([i[1] for i in user_dict[i]['poke']])
if user_dict[i]['score'] > 11:
print('尊敬的用户[{}],你手里有牌[{}],得分是[{}],大于11点,爆掉了,根据规则,我们不带你玩了!!!'.format(
i,
' '.join([i[0] for i in user_dict[i]['poke']]),
user_dict[i]['score']
))
user_dict[i]['msg'] = '实际得分[{}],大于11点,爆掉了'.format(sum([i[1] for i in user_dict[i]['poke']]))
user_dict[i]['score'] = 0
break
else:
print(f'你输入的是[{choice}],本程序不支持!!!!请重新输入!!!')
print('选牌完毕,正在计算得分.....')
for i in user_dict:
print('尊敬的用户[{}],你的总得分是[{}]'.format(i, user_dict[i]['score']), user_dict[i]['msg'])
# 计算出赢家
winner_user = max(user_dict, key=lambda x: user_dict[x]['score'])
print("最后的赢家是: {},得分是: {}".format(winner_user, user_dict[winner_user]['score']))
欢迎斧正,that's all