基于python代码实现棋牌游戏
模块一完成后,需要完成的小作业《棋牌游戏11点》
游戏题目及要求如下:
1、生成一副扑克牌(自己设计扑克牌的结构,小王和大王可以分别用14、15表示 )
2、3个玩家(玩家也可以自己定义)
user_list = ["alex","武沛齐","李路飞"]
3、发牌规则
默认先给用户发一张牌,其中 J、Q、K、小王、大王代表的值为0.5,其他就是则就是当前的牌面值。
用户根据自己的情况判断是否继续要牌。
要,则再给他发一张。(可以一直要牌,但是如果自己手中的牌总和超过11点,你的牌就爆掉了(牌面变成0))
不要,则开始给下个玩家发牌。(没有牌则则牌面默认是0)
如果用户手中的所有牌相加大于11,则表示爆了,此人的分数为0,并且自动开始给下个人发牌。
4、最终计算并获得每个玩家的分值,例如:
result = {
"alex":8,
"武沛齐":9,
"李路飞":0
}
代码实现如下:
''''扑克牌11点游戏'''
import random
'''1、生成扑克牌'''
# 自定义花色
colour = ['黑桃', '红桃', '方块', '梅花']
# 生成牌面
total_poker = []
for colour in colour:
for number in range(1, 11):
score = number
data_poker = (colour, number, score)
total_poker.append(data_poker)
# print(total_poker)
# 自定义特殊牌
special_poker = [('J', 11, 0.5), ('Q', 12, 0.5), ('K', 13, 0.5), ('小王', 14, 0.5), ('大王', 15, 0.5)]
# 将所有牌面合并
total_poker = total_poker + special_poker
print(total_poker)
'''2、自定义三个玩家'''
user_lists = []
while len(user_lists) < 3:
user_name = input('请输入玩家姓名:').strip()
user_lists.append(user_name)
print(f'玩家已就位:{user_lists}')
'''3.随机发牌一次'''
print('各单位请注意,现在游戏开始!!!'.center(50))
result = {}
for user_name in user_lists:
index = random.randint(0, len(total_poker) - 1)
print(f'{user_name}抽到的牌为{total_poker[index]}')
col, num, sor = total_poker[index]
result[user_name] = sor
print(f'{user_name}你目前的分数为{sor}')
total_poker.pop(index) # 删除已经分配的牌面
# 剩下的牌面为
print('剩下的牌面为{}'.format(total_poker))
# 目前的结果为
print(f'目前结果为:{result}')
'''4.加牌阶段'''
print('各单位请注意,现在游戏进入加牌阶段!!!'.center(50))
while True:
if len(total_poker) - 1 > 0:
for user_name in user_lists:
instructions = input(f'{user_name}你需要加牌吗?(是/否):').strip()
if instructions == '是':
index = random.randint(0, len(total_poker) - 1)
print(f'{user_name}抽到的牌为{total_poker[index]}')
col, num, sor = total_poker[index]
total_sore = result[user_name] + sor # 将目前该玩家结果加入总结果里
result[user_name] = total_sore
print(f'{user_name}你目前的分数为{total_sore}')
total_poker.pop(index) # 删除已经分配的牌面
print(f'当前结果为:{result}')
print(f'剩余扑克牌数量为:{len(total_poker)},剩余扑克牌为:{total_poker}')
if result[user_name] > 11: # 如果该玩家总分数大于11重置为0
result[user_name] = 0
print(f'{user_name}最新的分数为{result[user_name]}')
print(f'各个玩家最新结果为;{result}')
print(f'剩余扑克牌数量为:{len(total_poker)},剩余扑克牌为:{total_poker}')
elif instructions == '否':
print(f"{user_name}不加牌!下一个!")
else:
print(f"{user_name}输入不合法的指令!默认不需要加牌!下一个!")
else:
print(f'各单位注意!!!游戏已经结束!谢谢各位玩家{user_lists[0]}、{user_lists[1]}、{user_lists[2]}参与'.center(50))
break
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析