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

2024-01-24 17:36:15 浏览数 (1)

要求

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

要写出实现功能的代码,还要考虑代码的健壮性和可扩展性,以及代码的可读性和重构性等方面。在编写代码过程中,要注意代码的规范性,并遵循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代码运行次数:13复制
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/nn')
    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('平分秋色,平局!')

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

0 人点赞