zjzjzjzjx 2023-12-05 03:31 采纳率: 33.3%
浏览 9
已结题

关于#Python#的问题,如何解决?(相关搜索:编写程序|随机数|while循环)

[任务描述]
相信大家都玩过“石头剪刀布”的游戏,要求编写程序,让人与机器来玩这个游戏。游戏界面和示例过程如下;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
    关注
    • 游戏界面

      img

    • 您的问题不难,但代码行数还是不少。暂时没时间给您写。
      你先看看我最近写的猜数字赢金币
      代码结构和算法逻辑差别不大,看看能不能自己搞定。😊😊

      我的学习笔记中,也有用到随机数模块的random.randint方法。


    菜单4效果

    img


    游戏效果

    img

    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() 
    
    

    展开全部

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 12月20日
  • 已采纳回答 12月13日
  • 修改了问题 12月5日
  • 创建了问题 12月5日
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部