python实现猜拳游戏项目

 更新时间:2020年11月30日 09:31:28   作者:江liuer_666  
这篇文章主要为大家详细介绍了python实现猜拳游戏项目,以excel形式保存信息,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了python实现猜拳游戏的具体代码,供大家参考,具体内容如下

项目功能:

1.系统生成随机的石头剪刀布,玩家输入石头剪刀布
2.因为玩家可能会输入shitou st这样的输入,需要格式化成合理输入
3.进行石头剪刀布的游戏,输出游戏结果,假设每次可以玩5局
4.将游戏结果写入到excel中,包括系统出拳,玩家出拳,游戏结果,目前得分
5.游戏有欢迎信息(欢迎来到游戏)和用户交互(游戏剩余次数)
6.如果游戏的得分达到0分,游戏也会结束
7.在开始游戏的时候要求用户输入玩家姓名,会创建于玩家姓名同名的sheet页
8.如果玩家已经存在,则输出欢迎回来,您目前的积分为:xx分
9.如果玩家不存在,则输出欢迎来到游戏,您目前有5个积分
10.当是老玩家,游戏积分为0分,则提示用户充值,充值1元2积分

代码如下:

import openpyxl
import random
class excel:
 def __init__(self,filename,sheetname):#读某个单元格的值
  self.file = openpyxl.load_workbook(filename)
  self.sheet = self.file[sheetname]
  self.name=filename

 def write(self, sheet, data,num):#将数据以列表形式写入
  sheet = self.file[sheet]
  for i in range(1, len(data) + 1):
   sheet.cell(num,i).value = data[i-1]
  self.file.save(self.name)

def formatx(indata):
 if indata=='shitou' or indata=='shi tou' or indata=='st':
  indata = '石头'
 elif indata=='bu' or indata=='b u':
  indata = '布'
 elif indata=='jiandao' or indata=='jd':
  indata='剪刀'
 elif indata=='石头' or indata=='布' or indata=='剪刀':
  pass
 return indata

def getscore(name):
 wb = openpyxl.load_workbook('first.xlsx')
 sheet = wb[name]
 maxrow = sheet.max_row
 maxcol = sheet.max_column
 score = sheet.cell(maxrow, maxcol).value
 if score=='积分':
  score = 5
  print("欢迎来到游戏")
 else:print("欢迎回来游戏")
 return score

def login(name):
 wb = openpyxl.load_workbook('first.xlsx')
 names = wb.sheetnames
 if name not in names:
  wb.create_sheet(name)
  sheet = wb[name]
  sheet.cell(1,1).value='电脑'
  sheet.cell(1, 2).value = '玩家'
  sheet.cell(1, 3).value = '结果'
  sheet.cell(1, 4).value = '积分'
  wb.save('first.xlsx')

if __name__=="__main__":
 name = input('请输入您的名字:')
 login(name)
 score = getscore(name)
 print("积分{}".format(score))
 if score<=0:
  print('请充值:')
  money = int(input('请输入充值金额'))
  score += money*2
 opt = excel('first.xlsx', name)
 for num in range(1,6):
  compute = random.choice(['石头','剪刀','布'])
  player = input('请输入猜拳的内容:')
  player=formatx(player)
  if player==compute:
   result = [compute,player,'平局',score]
   print('电脑出拳:{},玩家出拳:{},游戏结果:{}'.format(compute,player,result[2],score))
   opt.write(name, result,num+1)
  elif (player=='石头' and compute=='剪刀') or (player=='剪刀' and compute=='布') or player=='布' and compute=='石头':
   score+=1
   result = [compute, player, '玩家胜利',score]
   print('电脑出拳:{},玩家出拳:{},游戏结果:{}'.format(compute, player, result[2],score))
   opt.write(name, result,num+1)
  else:
   score-=1
   result = [compute, player, '玩家失败',score]
   print('电脑出拳:{},玩家出拳:{},游戏结果:{}'.format(compute, player, result[2],score))
   opt.write(name, result,num+1)
  if score<=0:
   break
  print('游戏剩余次数:{}'.format(5-num))
 print("游戏结束")

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • python新手经常遇到的17个错误分析

    python新手经常遇到的17个错误分析

    这篇文章主要介绍了python新手经常遇到的17个错误分析,需要的朋友可以参考下
    2014-07-07
  • 使用Python读取json文件的方法小结

    使用Python读取json文件的方法小结

    这篇文章主要给大家介绍了Python读取json文件的方法,使用python读取json文件,输出结果为字符串或python对象,文中有详细的代码示例和图解,感兴趣的小伙伴可以自己动手试一试
    2023-09-09
  • python3批量删除豆瓣分组下的好友的实现代码

    python3批量删除豆瓣分组下的好友的实现代码

    下面小编就为大家带来一篇python3批量删除豆瓣分组下的好友的实现代码。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-06-06
  • 教你pycharm快速添加远程环境的详细过程

    教你pycharm快速添加远程环境的详细过程

    今天通过本文给大家分享pycharm快速添加远程环境的过程,通过在setting中选择设置符号add,具体详细过程跟随小编一起通过本文学习下吧
    2021-07-07
  • Python 列表中的修改、添加和删除元素的实现

    Python 列表中的修改、添加和删除元素的实现

    这篇文章主要介绍了Python 列表中的修改、添加和删除元素的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06
  • 谈谈Python中的while循环语句

    谈谈Python中的while循环语句

    这篇文章主要给大家介绍了关于Python中while循环语句的相关资料,使用while循环语句可以解决程序中需要重复执行的操作,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2019-03-03
  • 使用Python制作微信跳一跳辅助

    使用Python制作微信跳一跳辅助

    Python火到微信去了,辅助微信跳一跳,让你玩到朋友圈第一,今天就跟着我来试试用python实现制作跳一跳辅助,并把代码分享给大家
    2018-01-01
  • 树莓派采用socket方式文件传输(python)

    树莓派采用socket方式文件传输(python)

    这篇文章主要为大家详细介绍了树莓派采用socket方式文件传输,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-06-06
  • 移除Selenium中window.navigator.webdriver值

    移除Selenium中window.navigator.webdriver值

    这篇文章主要为大家介绍了如何正确的移除Selenium中window.navigator.webdriver的值方法步骤,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • 关于DataFrame取值操作总结(取指定列指定值的行)

    关于DataFrame取值操作总结(取指定列指定值的行)

    这篇文章主要介绍了关于DataFrame取值操作总结(取指定列指定值的行),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12

最新评论