Python学习——石头剪刀布的简单制作

目录

整体构思

引用库

初始化(即输出初始界面) 

输入用户名和选择电脑名称

主体程序

玩家出拳

电脑出拳

角色出拳显示

胜负判断

选择是否再来一局

输出得分,结果

完整代码


整体构思

利用Python中random库来生成随机数以达到电脑随机出拳的目的,每次开始游戏前(即每次重新运行程序时)重置积分系统。首先获取玩家名,然后选择电脑角色,使用eval函数来使石头,剪刀,布作为运算的1,2,3,玩家输入为1,2,3,当玩家为1,2,3且电脑为2,3,1时玩家获胜,玩家与电脑数值相同时平手,否则判定电脑获胜。玩家或者电脑获胜加一分,平局不加分。最后选择是否再来一局,若是,则重复判定与加分;若否,出示积分结果,结束程序。

引用库

import random

初始化(即输出初始界面) 

player_score=0
computer_score=0
print("   ")
print('* '*7+'欢迎来到小墨游戏'+'* '*7)
print('  '*7+'石头    剪刀    布 '+'  '*7)
print('* '*23)
print("   ")

在这里我们首先创建了play_score和computer_score两个变量来存储双方比分,然后利用print()函数输出初始界面

输入用户名和选择电脑名称

player_name=input('请输入玩家姓名:')
print('1.孙行者 2.者行孙 3.行孙者')
choice=eval(input('请选择电脑角色:'))
if choice==1:
    computer_name='孙行者'
elif choice==2:
    computer_name = '者行孙'
elif choice==3:
    computer_name = '行孙者'
else:
    computer_name='匿名'
print(player_name,'VS',computer_name)

创建变量player_name来存储玩家名称,computer_name存储电脑名称,choice变量便于用户选择电脑名称,我们预先定义了三个电脑名称“孙行者”、“者行孙”、“行孙者”,最后输出“某某某VS某某某”。这里需要注意的是对战双方的名字是暂时的,每次运行程序就会刷新掉,后面的积分也是。

主体程序

玩家出拳

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

同样定义“石头”、“剪刀”、“布”的数值为1,2,3,创建变量名player_fist作为玩家的出拳,在显示双方的出拳时显示的是“石头”、“剪刀”、“布”,所以再将1,2,3的值赋给player_fist_name,这里同时默认如果玩家不出拳则视为出石头。

电脑出拳

computer_fist=random.randint(1,3)
    if computer_fist==1:
        computer_fist_name='石头'
    elif computer_fist==2:
        computer_fist_name = '剪刀'
    else:
        computer_fist_name = '布'

此处使用random库实现电脑角色的随机出拳。

random.randint()函数用于生成随机数,第一个参数为起始值,第二个参数为结束值,第三个参数为步长,当不设置第三个参数时默认为1,此处省略第三个参数,该函数在运行时包含起始值而不包含结束值所以最后要加一个“布”的出拳

角色出拳显示

print(player_name,'出拳:',player_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)or (player_fist==3 and computer_fist==1):
    print('玩家: ',player_name ,'胜')
    player_score+=1
else:
    print('电脑: ',computer_name,' 胜')
    computer_score+=1

判断两个角色的出拳胜负,若双方的fist数值相等即为平手,当玩家为1,2,3且电脑list数值分别为2,3,1时玩家获胜,否则判定电脑角色获胜。哪一方胜利就给哪一方的积分加1。

选择是否再来一局

answer=input('再来一局不?y/n')
if answer!='y':
    break

创建变量answer作为答案,使用input()函数获取用户内容,接着进行判断,如果用户输入的不是“y”,那么退出出拳环节,如果是“y”,则再次运行主体程序部分。切记实现重复出拳环节要将以上代码放入while True的下级代码里。

输出得分,结果

print('-----------------------------')
print(player_name,'VS',computer_name)
print(player_name,'得分:',player_score)
print(computer_name,'得分:',computer_score)
print('-----------------------------')

if player_score==computer_score:
    print('不分上下,再战一场')
elif player_score>computer_score:
    print(player_name,'大获全胜')
else:
    print(computer_name,'醉了醉了,不服来啊')

利用print()函数输出双方得分,再次判断玩家积分是否高于电脑积分,根据结果输出结束语,程序结束。

完整代码

import random
player_score=0
computer_score=0
print("   ")
print('* '*7+'欢迎来到小墨游戏'+'* '*7)
print('  '*7+'石头    剪刀    布 '+'  '*7)
print('* '*23)
print("   ")
#输入
player_name=input('请输入玩家姓名:')
print('1.孙行者 2.者行孙 3.行孙者')
choice=input('请选择电脑角色:')
if choice=='1':
    computer_name='孙行者'
elif choice=='2':
    computer_name = '者行孙'
elif choice=='3':
    computer_name='行孙者'
else:
    computer_name='匿名'
print(player_name,'VS',computer_name)
while True:
    # 玩家出拳
    player_fist=eval(input('----------请出拳:  1.石头   2.剪刀   3.布---------\n'))
    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='石头'
    #电脑出拳
    computer_fist=random.randint(1,3)
    print(player_name,'出拳:',player_fist_name)
    if computer_fist==1:
        computer_fist_name='石头'
    elif computer_fist==2:
        computer_fist_name='剪刀'
    else:
        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) or(player_fist==3 and computer_fist==1):
        print('玩家:',player_name,'胜')
        player_score+=1
    else:
        print('电脑:',computer_name,'胜')
        computer_score+=1
    answer=input('再来一局不?y/n')
    if answer!='y':
        break
#显示对战结果
print('-----------------------------')
print(player_name,'VS',computer_name)
print(player_name,'得分:',player_score)
print(computer_name,'得分:',computer_score)
print('-----------------------------')

if player_score==computer_score:
    print('不分上下,再战一场')
elif player_score>computer_score:
    print(player_name,'大获全胜')
else:
    print(computer_name,'醉了醉了,不服来啊')

END THANKS

如果对您有帮助,请点赞关注支持我,谢谢!❤
如有错误或者不足之处,敬请指正!❤

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值