文章目录
引言
石头剪刀布是一款经典的手势猜拳游戏,在全球范围内都备受欢迎。通过编程语言Python,我们可以轻松实现这个有趣的小游戏。本文将介绍石头剪刀布游戏的规则,并提供一个使用Python编写的完整代码示例。
游戏规则
石头剪刀布游戏的规则非常简单。它包括三种选项:石头、剪刀和布。它们之间的胜负关系如下:
- 石头胜剪刀:当玩家选择石头,计算机选择剪刀时,石头获胜。
- 剪刀胜布:当玩家选择剪刀,计算机选择布时,剪刀获胜。
- 布胜石头:当玩家选择布,计算机选择石头时,布获胜。
练习目标
这个虽然是一个小游戏,但是具体实现起来做法有很多汇总,那咱们就先按照最简单的方式来实现,力求能掌握python的基本语法和random模块的使用。
所以,咱们将实现的目标明确如下:
和电脑玩一个剪刀石头布的游戏:电脑随机出拳,我们可选择出什么。
步骤拆解
双方出拳:
首先,我们要让双方选择出拳,才能判断胜负。
我们可以设置变量computer_choice代表电脑的出拳选择,设置变量user_choice代表你的出拳选择。
电脑的出拳,我们可以使用random.choice()来随机选择;我们的出拳,可以手动输入我们出拳的类型。
另外,判断下输入:当输入的内容不是石头剪刀布时,电脑会提醒’输入有误,请重新出拳’,并重新出拳。
此处的代码实现为:
import random
# 出拳
punches = ['石头','剪刀','布']
computer_choice = random.choice(punches)
user_choice = ''
while True:
user_choice=input('请输入‘石头’或者‘剪刀’或者‘布’:')
if user_choice not in punches:
print('您的输入有误,请重新出拳')
else:
break
双方亮拳:
刚刚已经实现了你和电脑的出拳,接下来,我们需要知道双方各自出的拳是什么。
使用print()函数即可打印亮拳的结果,示例代码如下:
# 亮拳
print('————战斗过程————')
print('电脑出拳为:{},你的出拳为{}'.format(computer_choice,user_choice))
判断胜负:
在前面两步,电脑和你已经选择完出拳的类型并亮拳后,只差最后一步:根据结果判断胜负。
根据游戏规则,咱们可以很清楚的知道,规则是这样的:
- 石头胜剪刀:当玩家选择石头,计算机选择剪刀时,石头获胜。
- 剪刀胜布:当玩家选择剪刀,计算机选择布时,剪刀获胜。
- 布胜石头:当玩家选择布,计算机选择石头时,布获胜。
那具体怎么用代码来实现呢?通过if方法将这所有情况分别判断一下应该就可以了,示例代码如下:
# 判断胜负
if computer_choice==user_choice:
print('这一把是平局')
elif computer_choice=='石头'and user_choice=='布':
print('恭喜你赢了!')
elif computer_choice=='剪刀'and user_choice=='石头':
print('恭喜你赢了!')
elif computer_choice=='布'and user_choice=='剪刀':
print('恭喜你赢了!')
elif computer_choice=='石头'and user_choice=='剪刀':
print('遗憾!电脑赢了这局!')
elif computer_choice=='剪刀'and user_choice=='布':
print('遗憾!电脑赢了这局!')
elif computer_choice=='布'and user_choice=='石头':
print('遗憾!电脑赢了这局!')
else:
print('这是不可能的一种—————结果—————')
判断输赢逻辑优化:
上面的这种方式固然可以实现,并且也一目了然,但是总感觉很冗余,善于思考的小伙伴应该也会有这种感觉,那么是不是可以优化呢,答案必须是肯定的!优化后示例代码如下:
# 判断胜负
if user_choice == computer_choice: # 使用if进行条件判断
print('平局!')
elif (user_choice == '石头' and computer_choice == '剪刀') or (user_choice == '剪刀' and computer_choice == '布') or (user_choice == '布' and computer_choice == '石头'):
print('你赢了!')
else:
print('你输了!')
具体实现
使用Python编写石头剪刀布小游戏的步骤如下:
引入random模块:
在代码的开头,使用import random来引入Python的random模块,这样我们就可以在游戏中随机选择计算机的选项。
import random
创建选项列表:
创建一个包含石头、剪刀和布的列表,例如:options = [“石头”, “剪刀”, “布”]。
punches = ['石头','剪刀','布']
验证用户输入:
使用一个循环,让用户输入他们的选择,并进行验证。如果用户输入的不是石头、剪刀或布,给出相应的错误提示并重新要求输入。
user_choice = ''
user_choice = input('请出拳:(石头、剪刀、布)') # 请用户输入选择
while user_choice not in punches: # 当用户输入错误,提示错误,重新输入
print('输入有误,请重新出拳')
user_choice = input()
计算机随机选择:
使用random.choice(options)从选项列表中随机选择计算机的选项。
punches = ['石头','剪刀','布']
computer_choice = random.choice(punches)
判断胜负关系:
根据游戏规则,通过比较玩家和计算机的选择,判断胜负关系,并输出对应的结果。
if user_choice == computer_choice: # 使用if进行条件判断
print('平局!')
elif (user_choice == '石头' and computer_choice == '剪刀') or (user_choice == '剪刀' and computer_choice == '布') or (user_choice == '布' and computer_choice == '石头'):
print('你赢了!')
else:
print('你输了!')
完整代码
以下是完整的Python代码示例:
import random
options = ["石头", "剪刀", "布"]
while True:
player_choice = input("请出拳(石头/剪刀/布):")
if player_choice not in options:
print("请输入有效的选择!")
continue
computer_choice = random.choice(options)
print("玩家选择:" + player_choice)
print("计算机选择:" + computer_choice)
if player_choice == computer_choice:
print("平局!")
elif (player_choice == "石头" and computer_choice == "剪刀") or
(player_choice == "剪刀" and computer_choice == "布") or
(player_choice == "布" and computer_choice == "石头"):
print("玩家获胜!")
else:
print("计算机获胜!")
break
运行示例
以下是一些示例输入和输出:
请出拳(石头/剪刀/布):石头
玩家选择:石头
计算机选择:剪刀
玩家获胜!
请出拳(石头/剪刀/布):剪刀
玩家选择:剪刀
计算机选择:布
玩家获胜!
请出拳(石头/剪刀/布):布
玩家选择:布
计算机选择:石头
玩家获胜!
总结
通过本文,我们学习了如何使用Python编写石头剪刀布小游戏。我们引入了random模块来实现计算机的随机选择,并根据游戏规则判断了胜负关系。这个小游戏的实现过程并不复杂,同时也给了我们扩展和改进代码的空间。
在实际生活中玩这个游戏的时候,可能是一局定胜负,也有可能是三局两胜、五局三胜、七局四胜…
如果考虑把这种情况也实现进入,代码应该是什么样的呢,下面给出更加高级的一版完整代码,基础比较扎实的小伙伴们可以参详一下,对功能增长很有帮助~
import random
import time
pool=['石头','剪刀','布']
#creatChoice函数用来生成AI的出拳结果和玩家的出拳结果
def creatChoice ():
AI=random.choice(pool)
player=''
while player not in pool:
player=input('请出拳:(选择石头、剪刀、布)')
print('玩家出拳为:'+player)
print('AI出拳为:'+AI)
return AI,player
#fighting函数是单局战斗结果的计算
def fighting (AI,player):
if AI==player:
print('平局')
return 0
elif pool.index(AI)-pool.index(player)==-1:
print('AI赢')
return -1
else:
print('玩家赢')
return 1
#print(fighting('剪刀','石头'))
#统计胜利次数函数(参数为游戏总局数)
def fightCount (sumnum):
result=0
for i in range(sumnum):
print(' -----第{}次猜拳-----'.format(i+1))
a,b=creatChoice()
# fighting(a,b)
result+=fighting(a,b)
time.sleep(1.5)
print('-------------最终结果--------------')
if result<0:
print('AI获胜,多赢了{}次'.format(abs(result)))
elif result>0:
print('玩家获胜,多赢了{}次'.format(result))
else:
print('竟然是平局,玩家和AI各赢了{}次'.format(result))
#config函数是让用户输入猜拳的总局数的
def config ():
sumnum=int(input('请输入一共要猜拳几次:(请输入整数)'))
return sumnum
#jixu函数是判断用户是否继续玩
def jixu():
flag=False
choice=input('输入 y 继续游戏,其他任意键退出游戏')
if choice=='y'or choice=='Y':
flag=True
else:
flag=False
return flag
def main():
print('---------------游戏开始--------------')
gamecount=config()
fightCount(gamecount)
while jixu():
gamecount=config()
fightCount(gamecount)
else:
print('------游戏结束,欢迎下次再来玩-----')
main()
结语
请尝试运行这个小游戏,并自己进行举一反三进行修改应用。通过这个过程,你可以更好地理解Python编程语言,并提高自己的编程技能。
如果你想深入学习Python,请关注我的博客,跟着大师兄不迷路,带你在编程之路上取得更多的成功!