使用Python编写小游戏:“石头剪刀布”

前言:

在学完Python部分基础以后,根据所学内容,制作了一个简单的小游戏,内容就是玩家与机器人进行石头剪刀布。所写代码思路尽量清晰易懂,哈哈,进入正题了。


游戏原理

玩家输入数字,然后数字对应石头剪刀布其中一种,机器人产生随机数也会对应石头剪刀布的一种。那么我们就需要根据他们输入的数字进行判断,开始代码实现。

一、玩家以及机器人输入

import random # 导入随机数模块

# 提示信息:输入的数字代表结果是什么
print('石头剪刀布游戏开始!玩家与人工智能小Q的对决,输入0代表剪刀、1代表石头、2代表布')

# 这里小Q代表了机器人

# 开始一个无限循环,避免输入一次就结束掉了整个游戏
while True:
	# 获取玩家的输入
	user_inp = input('\n请玩家输入:')
	print() # 与打印内容换一行
	com_xq = random.randrange(0, 3)  # 小Q在0-3之间随机获取数字

二、获取双方输入的结果并打印

# 定义一个函数,用于判断输入的内容
def judge_inp(name, value):
    # 返回输入者的姓名,以及输入的值
    
    if value == '0': # 如果输入的是0 则打印剪刀
        print(name + "输入了剪刀")
        return 0 # 且返回0这个数字给输入者
    elif value == '1':
        print(name + "输入了石头")
        return 1
    elif value == '2':
        print(name + "输入了布")
        return 2
    return -1  # 只要输入内容不在判断内,就返回这个-1

三、接收输入的结果

# 将玩家的名称,以及输入的内容放到函数里面判断,并拿到返回的值
user_result = judge_inp('玩家',user_inp)

# 如果返回的结果为-1,那么就说明玩家输入的内容不再范围内
if user_result == -1:
        print('输入错误,请重新输入\n')
        continue  # 跳过这次循环,玩家重新输入

# 将小Q的名称,以及输入的内容放到函数里面判断,并拿到返回的值
# 由于判断时,是根据字符串判断,小Q产生的随机数为int类型,所以这里转换成str类型
xq_result = judge_inp('小Q',str(com_xq))

此时代码可实现的效果:待加上判断以后就可以决定胜负了
在这里插入图片描述


四、判断双方输入的内容决定胜负

# 其中有一方胜利后,游戏结束!!
if user_result == 0 and xq_result == 2:  # 玩家输入剪刀,小Q输入布
    print('玩家赢了')
    break
elif xq_result == 0 and user_result == 2:  # 玩家输入布,小Q输入剪刀
    print('小Q赢了')
    break
elif xq_result == 0 and user_result == 1:  # 玩家输入石头,小Q输入剪刀
    print('玩家赢了')
    break
elif xq_result == 1 and user_result == 0:  # 玩家输入剪刀,小Q输入石头
    print('小Q赢了')
    break
elif user_result == 1 and xq_result == 2:  # 玩家输入石头,小Q输入布
    print('小Q赢了')
    break
elif user_result == 2 and xq_result == 1:  # 玩家输入布,小Q输入石头
    print('玩家赢了')
    break
elif user_result == xq_result:  # 双方输入相同则为平局,开始下一剧
    print('平局\n')

完整游戏代码

import random  # 导入随机数模块

# 提示信息:输入的数字代表结果是什么
print('石头剪刀布游戏开始!玩家与人工智能小Q的对决,输入0代表剪刀、1代表石头、2代表布')


# 这里小Q代表了机器人

# 定义一个函数,用于判断输入的内容
def judge_inp(name, value):
    # 返回输入者的姓名,以及输入的值

    if value == '0':  # 如果输入的是0 则打印剪刀
        print(name + "输入了剪刀")
        return 0  # 且返回0这个数字给输入者
    elif value == '1':
        print(name + "输入了石头")
        return 1
    elif value == '2':
        print(name + "输入了布")
        return 2
    return -1  # 只要输入内容不在判断内,就返回这个-1


# 开始一个无限循环,避免输入一次就结束掉了整个游戏
while True:
    # 获取玩家的输入
    user_inp = input('请玩家输入:')
    print()  # 与打印内容换一行
    com_xq = random.randrange(0, 3)  # 小Q在0-3之间随机获取数字

    # 将玩家的名称,以及输入的内容放到函数里面判断,并拿到返回的值
    user_result = judge_inp('玩家', user_inp)

    # 如果返回的结果为-1,那么就说明玩家输入的内容不再范围内
    if user_result == -1:
        print('输入错误,请重新输入\n')
        continue  # 跳过这次循环,玩家重新输入

    # 将小Q的名称,以及输入的内容放到函数里面判断,并拿到返回的值
    # 由于判断时,是根据字符串判断,小Q产生的随机数为int类型,所以这里转换成str类型
    xq_result = judge_inp('小Q', str(com_xq))

    # 其中有一方胜利后,游戏结束!!
    if user_result == 0 and xq_result == 2:  # 玩家输入剪刀,小Q输入布
        print('玩家赢了')
    elif xq_result == 0 and user_result == 2:  # 玩家输入布,小Q输入剪刀
        print('小Q赢了')
    elif xq_result == 0 and user_result == 1:  # 玩家输入石头,小Q输入剪刀
        print('玩家赢了')
    elif xq_result == 1 and user_result == 0:  # 玩家输入剪刀,小Q输入石头
        print('小Q赢了')
    elif user_result == 1 and xq_result == 2:  # 玩家输入石头,小Q输入布
        print('小Q赢了')
    elif user_result == 2 and xq_result == 1:  # 玩家输入布,小Q输入石头
        print('玩家赢了')
    else:  # 不满足上面条件,则说明平局情况,使用continue进行下一局(不然的话循环会被break)
        print('平局\n')
        continue
    
    # 非平局的情况,则执行到此行代码结束游戏对局
    break

游戏效果:
在这里插入图片描述
总结:

以上就是编写这个小游戏的整体代码逻辑,如果有错误或者不解的地方,欢迎在下方评论。

技术小白记录学习过程,有错误或不解的地方请指出,如果这篇文章对你有所帮助请点赞 收藏+关注 子夜期待你的关注,谢谢支持!

  • 13
    点赞
  • 67
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值