前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python手把手教你实现一个剪刀石头布对战游戏

python手把手教你实现一个剪刀石头布对战游戏

原创
作者头像
一个风轻云淡
修改2024-01-24 17:36:15
29619
代码可运行
修改2024-01-24 17:36:15
运行总次数:9
代码可运行

要求

通过输入玩家姓名和选择电脑角色来开始游戏。游戏界面会提示玩家出拳的选项,包括石头、剪刀和布,玩家需要输入对应数字进行出拳,并与电脑角色进行对战。通过判断出拳结果,判断哪方胜利,直到玩家选择结束游戏为止。最终输出对战结果,包括对战总数、玩家胜利局数、电脑胜利局数和平局数,并根据胜负情况给出相应提示

要写出实现功能的代码,还要考虑代码的健壮性和可扩展性,以及代码的可读性和重构性等方面。在编写代码过程中,要注意代码的规范性,并遵循Python的编码规范,如变量命名要规范,注释要详细

要点

? 物角色:

  • l 玩家,玩家出拳
  • l 电脑,电脑角色出拳,使用random完成出拳操作

? 程序处理:

  • l 使用多重判断语句,判断玩家与电脑角色输赢情况
  • l 使用无限循环while实现多局对战

主要知识点

  1. 用户输入:使用input函数获取用户输入的玩家姓名和电脑角色选择。
  2. 随机数生成:使用random.randint函数生成随机的电脑角色和玩家出拳。
  3. 条件判断:根据玩家和电脑的出拳结果进行比较,判断胜负关系。
  4. 循环结构:通过while True循环实现多局游戏的对战。
  5. 计数器:使用变量player_scorecomputer_scoretotal_score记录玩家胜利局数、电脑胜利局数和总对战局数。

random.randint(a, b)是Python标准库中的一个函数,它用于生成一个指定范围内的随机整数。参数a表示范围的起始值,参数b表示范围的结束值。

该函数会返回一个在闭区间[a, b]内均匀分布的整数。也就是说,返回的整数可以包括ab本身。

代码实现

代码语言:python
代码运行次数:9
复制
import random
#游戏界面设置
print('''--------------------------------------------------------------------------------
* * * * * * * * * * * * 欢迎来到4399游戏平台 * * * * * * * * * * * *
                     猜拳游戏一石头 剪刀 布
  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
''')
#玩家昵称输入
player_name = input('请输入玩家姓名:')
#电脑角色选择
print('1.喜羊羊 2.懒羊羊 3.美羊羊 4.红太狼')
choice = eval(input('请选择电脑角色:'))
if choice==1:
    computer_name='喜羊羊'
elif choice == 2:
    computer_name='懒羊羊'
elif choice == 3:
    computer_name ='美羊羊'
elif choice == 4:
    computer_name ='红太狼'
else:
    computer_name ='匿名'
print(player_name,'VS',computer_name)
#循环对战
player_score =0
computer_score =0
total_score=0
while True :
    #玩家出拳
    player_fist = eval(input('-----请出拳:(1.石头 2.剪刀 3.布'))
    if player_fist ==1:
        player_fist_name= '石头'
    elif player_fist == 2: 
        player_fist_name ='剪刀'
    elif player_fist ==3:
        player_fist_name='布'
    else:
        player_fist_name = '石头'#其他数了默认为石头
        player_fist=1
        '''
        print('输入错误,系统随机出拳中...')
        player_fist= random.randint(1,3)
        if player_fist== 1:
            player_fist_name ='石头'
        elif player_fist == 2:
            player_fist_name ='剪刀'
        else:
            player fistname= '布'!1
        '''
    print('玩家'+player_name+'出拳为:'+player_fist_name)   

#电脑角色出拳
    computer_fist = random.randint(1,3)
    if computer_fist == 1:
        computer_fist_name ='石头'
    elif computer_fist == 2:
        computer_fist_name ='剪刀'
    elif computer_fist == 3:
        computer_fist_name ='布'
    print(computer_name+'出拳为:'+computer_fist_name)
    #判断谁胜
    if player_fist == computer_fist:
        print('平局')
    elif (player_fist==1 and computer_fist==2) or (player_fist==2 and computer_fist==3):
        print('恭喜!!!玩家'+player_name+'胜!!!')
        player_score +=1 
    else:
        print('很遗憾~电脑'+computer_name+'胜')
        computer_score +=1
    total_score +=1
    answer=input('再来一局不? y/n\n')
    if answer =='n':
        break
#输出对战结果
print('-------------------------对战结果---------------------------')
print('对战总数:',total_score,'局')
print('玩家'+player_name+'胜: ',player_score,'局')
print('电脑'+computer_name+'胜: ',computer_score,'局')
print('平局:',total_score-player_score-computer_score,'局')
if computer_score > player_score:
    print('电脑'+computer_name+'胜,不服来战!')
elif player_score > computer_score:
    print('玩家'+player_name+ '胜1')
else:
    print('平分秋色,平局!')

我们可以看出实验结果无异常,符合问题的提出能够正确的解决问题

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 要求
  • 要点
  • 主要知识点
  • 代码实现
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com