python小项目:1、人机剪刀石头布

python小项目:1、人机剪刀石头布

测试项目:人机对战(石头剪刀布)
流程:
玩家:进入系统,输入玩家姓名,选择对战的角色,进行pk环节,选择出具的手势,与电脑进行pk
显示:挑选对战英雄,显示对决情况,显示对战的结果

import random
name="玩家"
hero_name=""
ren_win=0
pc_win=0
pk_sum=0


def selectHeros():
	print("==============欢迎来到人机对战系统=================")
	#定义全局变量,局部变量nolocal
	global name
	global hero_name
	name=input("请输入您的昵称:")
	print("您好,"+name)
	hero=input("请选择你要对战的英雄编号:1.亚瑟 2.嬴政 3李白 4.伽罗\n")
	if(hero=="1"):
		print("您选择了亚瑟")
		hero_name="亚瑟"
	elif(hero=="2"):
		print("您选择了嬴政")
		hero_name="嬴政"
	elif (hero == "3"):
		print("您选择了李白")
		hero_name = "李白"
	elif (hero == "4"):
		print("您选择了伽罗")
		hero_name = "伽罗"
	else:
		print("英雄都选不了,玩什么游戏,去和傻瓜玩吧")
		hero_name = "傻瓜"

#进行pk
def ren_pc_pk():
	#人赢的局数
	global ren_win
	#电脑赢的局数
	global pc_win
	#总局数
	global pk_sum
	#用循环去模仿对决的
	while True:
		#每次进入一次循环,我的对局数+1
		pk_sum += 1
		#人选择手势
		ren_key=int(input("请选择你要出的手势:(1.石头 2.剪刀 3.布)\n"))
		if(ren_key==1):
			print("您选择了石头")
		elif(ren_key==2):
			print("您选择了剪刀")
		elif (ren_key == 3):
			print("您选择了布")
		else:
			print("手势都选不了,别玩游戏了")
			#如果手势不是我想要的,那么就让游戏强制退出
			exits()
		#电脑选择手势
		#获取随机数
		pc_key=random.randint(1,3)
		if (pc_key == 1):
			print("电脑选择了石头")
		elif (pc_key == 2):
			print("电脑选择了剪刀")
		else:
			print("电脑选择了布")
		#判断对决结合
		if(ren_key==1 and pc_key==2 or ren_key==2 and pc_key==3 or ren_key==3 and pc_key==1 ):
			ren_win = ren_win+1
			print("您赢了!,厉害了我的哥")
		elif(ren_key==pc_key):
			print("不符再战")
		else:
			pc_win = pc_win+1
			print("您输喽!,你个小菜鸡")
		if(pk_sum>4):
			print("战斗结束!")
			#break作用的范围是距离当前代码从内到外最近的循环
			break

#结果展示
def showResult():
	print("===============对战结果========================")
	print("{}一共对战了{}局,其中{}赢了{}局,{}赢了{}局\n最终结果是:".format(name,pk_sum,name,ren_win,hero_name,pc_win))
	if(ren_win>pc_win):
		print("大吉大利,今晚吃鸡")
	elif(ren_win==pc_win):
		print("今天平局,来人再战")
	else:
		print("你连{}都打不过".format(hero_name))
#退出
def exits():
	k=input("是否继续?退出按q退出游戏,按任意键继续!\n")
	if(k=='q'):
		print("游戏结束!")
		#将代码设置为0
		exit(0)
	else:
		# 人赢的局数
		global ren_win
		# 电脑赢的局数
		global pc_win
		# 总局数
		global pk_sum
		ren_win = 0
		pc_win = 0
		pk_sum = 0
		# 用循环去模仿对决的
		selectHeros()
		ren_pc_pk()
		showResult()
		exits()

if __name__ == '__main__':
	selectHeros()
	ren_pc_pk()
	showResult()
	exits()
#运行结果
==============欢迎来到人机对战系统=================
请输入您的昵称:鹏少
您好,鹏少
请选择你要对战的英雄编号:1.亚瑟  2.嬴政  3李白  4.伽罗
4
您选择了伽罗
请选择你要出的手势:(1.石头  2.剪刀  3.布)
2
您选择了剪刀
电脑选择了石头
您输喽!,你个小菜鸡
请选择你要出的手势:(1.石头  2.剪刀  3.布)
3
您选择了布
电脑选择了石头
您赢了!,厉害了我的哥
请选择你要出的手势:(1.石头  2.剪刀  3.布)
1
您选择了石头
电脑选择了布
您输喽!,你个小菜鸡
请选择你要出的手势:(1.石头  2.剪刀  3.布)
3
您选择了布
电脑选择了布
不符再战
请选择你要出的手势:(1.石头  2.剪刀  3.布)
4
手势都选不了,别玩游戏了
是否继续?退出按q退出游戏,按任意键继续!
q
游戏结束!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/114575.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 软件漏洞分析简述

    软件漏洞分析简述软件漏洞1.1漏洞的定义漏洞,也叫脆弱性(英语:Vulnerability),是指计算机系统安全方面的缺陷,使得系统或其应用数据的保密性、完整性、可用性、访问控制等面临威胁。漏洞在各时间阶段的名称根据是否公开分为:未公开漏洞、已公开漏洞根据漏洞是否发现分为:未知漏洞、已知漏洞根据补丁和利用价值是否发布分为:0day漏洞、1day漏洞、历史漏洞图1漏洞在各时间阶段的名称漏洞的特…

    2022年5月20日
    60
  • Redis 缓存穿透 + 缓存雪崩 + 缓存击穿的原因和解决方案「建议收藏」

    Redis 缓存穿透 + 缓存雪崩 + 缓存击穿的原因和解决方案「建议收藏」在生产环境中,会因为很多的原因造成访问请求绕过了缓存,都需要访问数据库持久层,虽然对Redsi缓存服务器不会造成影响,但是数据库的负载就会增大,使缓存的作用降低一、缓存穿透缓存穿透是指查询一个根本不存在的数据,缓存层和持久层都不会命中。在日常工作中出于容错的考虑,如果从持久层查不到数据则不写入缓存层,缓存穿透将导致不存在的数据每次请求都要到持久层去查询,失去了缓…

    2022年6月15日
    26
  • 语义分割和实例分割的区别_FPN运用在语义分割上

    语义分割和实例分割的区别_FPN运用在语义分割上目前的分割任务主要有两种:(1)像素级别的语义分割(2)实例分割这个有意思,什么叫实例分割呢?它与语义分割有什么区别与联系呢?顾名思义,像素级别的语义分割,对图像中的每个像素都划分出对应的类别,即实现像素级别的分类;而类的具体对象,即为实例,那么实例分割不但要进行像素级别的分类,还需在具体的类别基础上区别开不同的实例。比如说图像有多个人甲、乙、丙,那边他们的语义分割结果都是人,而实例

    2022年8月23日
    7
  • ucinet网络分析使用总结

    ucinet网络分析使用总结ucinet介绍UCINET为菜单驱动的Windows程序,可能是最知名和最经常被使用的处理社会网络数据和其他相似性数据的综合性分析程序。与UCINET捆绑在一起的还有Pajek、Mage和NetDraw等三个软件。UCINET能够处理的原始数据为矩阵格式,提供了大量数据管理和转化工具。该程序本身不包含网络可视化的图形程序,但可将数据和处理结果输出至NetDraw、Pajek、Mage和Kr…

    2022年6月7日
    99
  • java public interface_Java 接口interface的基础[通俗易懂]

    java public interface_Java 接口interface的基础[通俗易懂]原标题:Java接口interface的基础定义接口的时候是由关键字interface来定义自己是一个接口,格式如下:interface接口名接口体中包含常量的声明和抽象方法两部分接口体中只有抽象方法,没有普通的方法,而且接口体中所有的常量的访问权限一定都是public,而且是static常量,所有的抽象方法的访问权限一定都是public;eg:interfaceA{publicstati…

    2022年7月16日
    13
  • labelme标注的数据分析[通俗易懂]

    labelme标注的数据分析[通俗易懂]参考:github地址:https://github.com/wkentaro/labelme安装安装方式:详情参考官网安装#Ubuntu14.04sudoapt-getinstallpython-qt4pyqt4-dev-toolssudopipinstalllabelme#python2works#Ubuntu16.04sudoapt-getinsta

    2025年10月29日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号