[任务描述]
相信大家都玩过“石头剪刀布”的游戏,要求编写程序,让人与机器来玩这个游戏。游戏界面和示例过程如下;0:石头1:剪刀2:布
3:重新开始4:结束游戏
电脑已经确定了出拳且愿与你比试,请输入你的选择:1本轮结果:你出的“剪刀”赢,电脑出的“布”你的战绩:1赢0平0输
电脑已经确定了出拳且愿与你比试,请输入你的选择:0本轮结果:你出的“石头”平,电脑出的“石头”你的战绩:1赢1平0输
电脑已经确定了出拳且愿与你比试,请输入你的选择;2本轮结果:你出的“布”平,电脑出的“布”你的战绩:1赢2平0输
电脑已经确定了出拳且愿与你比试,请输入你的选择:3电脑已经确定了出拳且愿与你比试,请输入你的选择:0本轮结果:你出的“石头”平,电脑出的“石头”你的战绩:0赢1平0输
电脑已经确定了出拳且愿与你比试,请输入你的选择:4输入:
每次输入用户的选择:0,1,2,3,4,表示相应的操作输出:
菜单信息、每次人机对战的过程以及用户的战绩输入举例:
参见任务描述中的游戏示例过程,分别输入的是1,0,2,3,0,4.输出举例:
参见任务描述中的游戏示例过程中的输出。[分析]
(1)电脑随机所出的“石头”、“剪刀"、“布”可利用random 模块的随机数函数实现;
(2)对于人机对战的结果“赢”、“平”、“输”的判断和“赢”、“平”、“输”次数的记录可利用字典实现:(3)游戏的循环进行和选择结束游戏的功能,可以通过while循环和break语句来实现,重新开始游戏功能的实现方式为;清空比分,不显示本轮成绩,直接进入下一轮循环,重要知识点元组的运用(2)字典的运行
(3) 循环和选择结构的运行
(4)多个结果信息的统计
5,过程
系统功能的需求分析
主要功能模块的算法设计
调试过程中出现的问题和解决方法
3条回答 默认 最新
- 梦幻精灵_cq 2023-12-05 04:39关注
游戏界面
您的问题不难,但代码行数还是不少。暂时没时间给您写。
你先看看我最近写的猜数字赢金币,
代码结构和算法逻辑差别不大,看看能不能自己搞定。😊😊
我的学习笔记中,也有用到随机数模块的random.randint方法。
想起以前有写过一个,比您题目要求的“简陋”了些,您将就看着,有问题可以提,我空了看到会回您。😜
“石头剪刀布”游戏:while、函数自调用实现循环游戏
( 343 阅读)
博文地址:https://blog.csdn.net/m0_57158496/article/details/132439530
点赞:0 踩 :0 收藏:0 打赏:0 评论:0
本篇博文笔记于 2023-08-22 23:59:37 首发,最晚于 2023-08-23 00:40:56 修改。已为您写好符题代码
游戏界面
菜单3效果
菜单4效果
游戏效果python代码(游戏完整源码)
#!/usr/bin/nve python # coding: utf-8 from random import randint # 全局变量 # wins = [0] fails = [0] dogfalls = [0] title = lambda: print(f"\033[2J\n{' 石头剪刀布游戏 ':=^33}\n") def menu(): ''' 游戏菜单 ''' title() # Linux式清屏并打印游戏名称。 strMenu = '石头', '剪刀', '布', '重新开始', '结束游戏' for k,i in enumerate(strMenu): if k in (0, 3): print(f"\n\n{'':>8}", end='') print(f"{k}. {i}{'':>2}", end='') print(f"\n{'':.^40}\n{'(输入对应序号选择菜单)':^30}\n") return input(f"\n\n{'电脑已经确定了出拳且愿与你比试':^25}\n{'':~^40}\n\n{'':>8}您的选择:_") def game(): ''' 游戏 ''' from random import randint ai = str(randint(0, 2)) player = menu() if player == '3': wins[0] = 0 fails[0] = 0 dogfalls[0] = 0 title() input(f"\n\n{' 游戏数据已清零 ':.^33}\n\n\n\n{' 任意键继续 ':~^35}") game() elif player == '4': title() print(f"\n\n{' 您已退出游戏 ':^34}\n\n\n\n{f' 欢迎下次来玩 ':=^34}\n\n") exit() # 退出game函数。 isWindict = {'01': True, '02': False, '12': True, '10': False, '20': True, '21': False } kindDict = {'0': '石头', '1': '剪刀', '2': '布' } if isWindict.get(''.join([player, ai])) is True: flag = '赢' wins[0] += 1 elif isWindict.get(''.join([player, ai])) is False: flag = '输' fails[0] += 1 else: flag = '平' dogfalls[0] += 1 input(f"\n\n{' 本轮结果 ':.^36}\n\n{'':>8}你出的{kindDict.get(player)}{flag},电脑出的{kindDict.get(ai)}\n\n{f'你的战绩:{wins[0]:>3}赢{dogfalls[0]:>3}平{fails[0]:>3}输':^32}\n\n{' 任意键继续 ':~^35}") game() # 调用自己,实现循环游戏。 if __name__ == '__main__': game()
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用