引言
石头剪刀布是一款经典的手势猜拳游戏,在全球范围内都备受欢迎。通过编程语言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
验证用户输入:
使用一个循环,让用户输入他们的选择,并进行验证。如果用户输入的不是石头、剪刀或布,给出相应的错误提示并重新要求输入。
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,请关注我的博客,跟着大师兄不迷路,带你在编程之路上取得更多的成功!