用python实现抓狐狸游戏设计

from random import choice, randrange

  • 导入 random 模块中的 choice 和 randrange 函数。choice 用于从序列中随机选择一个元素,randrange 用于生成一个指定范围内的随机整数。

def catchMe(n=5, maxStep=10):
    '''模拟抓小狐狸,一共n个洞口,允许抓maxStep次
       如果失败,小狐狸就会跳到隔壁洞口'''
    # n个洞口,有狐狸为1,没有狐狸为0
    positions = [0] * n
    # 狐狸的随机初始位置
    oldPos = randrange(0, n)
    positions[oldPos] = 1
    
    # 抓maxStep次
    while maxStep >= 0:
        maxStep -= 1
        # 这个循环保证用户输入是有效洞口编号
        while True:
            try:
                x = input('请输入洞口编号(0-{0}):'.format(n-1))
                # 如果输入的不是数字,就会跳转到except部分
                x = int(x)
                # 如果输入的洞口有效,结束这个循环,否则就继续输入
                assert 0 <= x < n
                break
            except:
                #如果输入的不是数字,就执行这里的代码
                print('要按套路来啊,再给你一次机会。')
                
        if positions[x] == 1:
            print('成功,我抓到小狐狸啦。')
            break
        else:
            print('今天又没抓到。')
            
        # 如果这次没抓到,狐狸就跳到隔壁洞口
        if oldPos == n-1:
            newPos = oldPos -1
        elif oldPos == 0:
            newPos = oldPos + 1
        else:
            newPos = oldPos + choice((-1, 1))

  • 根据小狐狸的当前位置 oldPos,计算它下一次跳跃的位置 newPos。如果小狐狸在第一个洞口,则只能向右跳;如果在最后一个洞口,则只能向左跳;否则,随机选择向左或向右跳。
 

        positions[oldPos], positions[newPos] = 0, 1
        oldPos = newPos

更新 positions 列表,将小狐狸从旧位置移除,并在新位置标记小狐狸
    else:
        print('放弃吧,你这样乱试是没有希望的。')

# 启动游戏,开始抓狐狸吧
catchMe()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值