目录
整体构思
利用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
如果对您有帮助,请点赞关注支持我,谢谢!❤
如有错误或者不足之处,敬请指正!❤