python人机猜拳游戏代码
【开发该软件的操作系统】:windows10
【软件开发环境/开发工具】:PyCharm 2020.3.3 X64
【解释器版本】:Python 3.9.7
【编程语言】:Python
【开发目的】: 供初学者参考学习
【开发者】:20届牛马毕业生_迪焱
该版本可通过改变与a比较的值,实现控制胜率。让玩家100%胜率不再是梦。
import random # 导入random随机函数
# 定义全局参数
count_pj = 0 # 平局局数
count_playerwin = 0 # 玩家胜利局数
count_comwin = 0 # 电脑胜利局数
def Game(): # 游戏内容
try:
player = eval(input('请输入您要出的手势(⽯头(1)/剪⼑(2)/布(3)):')) # 玩家选择要出的数字
dic1 = {1: "石头", 2: "剪刀", 3: "布"}
a = random.randint(1, 100) # 获取随机数字,以用于判断哪方获胜
if a < 90: # 玩家胜利概率,改变数字玩家的胜率随之变化(现设置玩家胜率为90%)
if player == 1:
print("玩家手势({}) vs ({})电脑手势".format(dic1[player], dic1[2]))
elif player == 2:
print("玩家手势({}) vs ({})电脑手势".format(dic1[player], dic1[3]))
elif player == 3:
print("玩家手势({}) vs ({})电脑手势".format(dic1[player], dic1[1]))
print("玩家胜利!")
global count_playerwin
count_playerwin += 1
elif a < 92: # 平局条件,改变数字平局的概率随之变化(现设置平局概率为2%)
print("玩家手势({}) vs ({})电脑手势".format(dic1[player], dic1[player]))
print("平局了。")
global count_pj
count_pj += 1
else: # 剩下即为电脑胜率条件(现设置电脑胜率为8%)
# if player == 1:
# print("玩家手势({}) vs ({})电脑手势".format(dic1[player], dic1[3]))
# elif player == 2:
# print("玩家手势({}) vs ({})电脑手势".format(dic1[player], dic1[1]))
# elif player == 3:
# print("玩家手势({}) vs ({})电脑手势".format(dic1[player], dic1[2]))
list = [3, 1, 2, 3, 1, 2]
print("玩家手势({}) vs ({})电脑手势".format(dic1[player], dic1[list[player + 2]])) #第31行到第36行代码可用37、38两行代码替换
print("电脑胜利。")
global count_comwin
count_comwin += 1
print("-" * 60) # 每局游戏结束时分隔线
except: # 异常处理重新运行函数 Game()
print("错误,请重新输入") # 输入数据异常提醒
Game()
i = 1 # 定义全局参数,判断游戏是否进行
count = 0 # 记录游戏进行总局数
def game_times(): # 游戏进行局数
num = eval(input("是否进行猜拳游戏[是(1),否(0)]:"))
if num == 1: # 游戏进行条件
global count
count += 1
print("第{}局游戏".format(count).center(41, '-'))
elif num == 0: # 游戏结束条件
print("游戏结束".center(50, '-'))
global i # 获取全局参数,判定游戏结束条件
i = 0
else: # 输入数据异常,重新运行game_times函数
print("输入错误,请重新输入!!!")
game_times()
while i >= 1: # while循环,满足条件游戏可以无限进行
game_times() # 调用game_times函数,显示游戏进行局数
if i == 0: # 判断游戏是否进行
break # 跳出while循环,结束游戏
else: # 游戏继续进行条件
Game() # 调用Game()函数,进行游戏
print("一共进行了{}局游戏。".format(count)) # 打印游戏进行总局数
print("其中平局{}局,玩家赢{}局,电脑赢{}局。".format(count_pj, count_playerwin, count_comwin)) # 打印平局,玩家胜利,电脑胜利局数
print("玩家的胜率为{:.2%}".format(count_playerwin / (count_pj + count_comwin + count_playerwin))) # 打印玩家胜率