鱼C论坛

 找回密码
 立即注册
查看: 2751|回复: 7

[已解决]python抓狐狸游戏设计与实现

[复制链接]
发表于 2021-11-20 23:45:25 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
(抓狐狸游戏设计与实现)编写程序,模拟抓狐狸小游戏。假设一共有一排 5 个洞口,小狐狸最开始的时候在其中一个洞口。小狐狸最开始的时候在其中一个洞口,然后玩家随机打开一个洞口,如果里面有狐狸就抓到了。如果洞口里没有狐狸就到第二天再来抓,但是第二天狐狸会在玩家来抓之前跳到隔壁洞口里。如果在规定的次数内抓到了狐狸就提前结束游戏并提示成功;如果规定的次数用完还没有抓到狐狸,就结束游戏并提示失败

麻烦大佬写一下注释,万分感谢!!
最佳答案
2021-11-21 13:48:23
pallas 发表于 2021-11-21 13:19
还有其他简便点的方法吗?


这其实就是猜数字题,只是换成狐狸和洞罢了,代码类似啊:
import random

def game():
    hole = random.choice(range(1, 6))
    n = 3 # 预设 3 次机会
    while n > 0:
        n -= 1
        guess = int(input("请猜测狐狸在哪个洞?"))
        if guess == hole: return True
        hole = random.choice([5, hole+1]) if not hole else random.choice([hole-1, (hole+1)%5])
    return False

print("恭喜,你抓到狐狸了") if game() else print("抱歉,次数用完了,你没有抓到狐狸")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-11-20 23:53:43 | 显示全部楼层
麻烦你自己动手先写一个
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-11-21 13:19:08 | 显示全部楼层
suchocolate 发表于 2021-11-20 23:53
麻烦你自己动手先写一个

import random

days = int(input("请输入抓狐狸的天数:")) # 抓狐狸的天数
day = 1
hole = [0, 0, 0, 0, 0]  # 狐狸在那个洞里
holeNum = random.randint(0, 4)  # 随机生成狐狸的位置
hole[holeNum] = 1  # 狐狸在那个洞 那个洞就为1 不在为0
# print(holeList)


# 狐狸移动
def foxMove(hole):
    move = random.randint(0, 1)
    if move == 1 and hole[4] != 1:  # 向右移动
        old = hole.index(1)#检索
        hole[old] = 0
        hole[old + 1] = 1
    else:  # 向左移动
        old = hole.index(1)
        hole[old] = 0
        hole[old - 1] = 1
    #print(holeList)

# 游戏体
for i in range(days):
    playerNum = int(input("请输入你洞的编号(1,2,3,4,5):")) - 1
    if hole[playerNum] == 1:
        print(f"恭喜你在第{day}天的{playerNum + 1}号洞抓到了狐狸!")
        break
    else:
        print(playerNum + 1, "号洞没有狐狸")
        day += 1
        foxMove(hole)
else:
    new = hole.index(1)
    print(f"已经第{days}天啦!机会用完啦,狐狸在{hole[new]}号洞里面滴")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-11-21 13:19:46 | 显示全部楼层
还有其他简便点的方法吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-11-21 13:48:23 | 显示全部楼层    本楼为最佳答案   
pallas 发表于 2021-11-21 13:19
还有其他简便点的方法吗?


这其实就是猜数字题,只是换成狐狸和洞罢了,代码类似啊:
import random

def game():
    hole = random.choice(range(1, 6))
    n = 3 # 预设 3 次机会
    while n > 0:
        n -= 1
        guess = int(input("请猜测狐狸在哪个洞?"))
        if guess == hole: return True
        hole = random.choice([5, hole+1]) if not hole else random.choice([hole-1, (hole+1)%5])
    return False

print("恭喜,你抓到狐狸了") if game() else print("抱歉,次数用完了,你没有抓到狐狸")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2021-11-21 15:23:51 | 显示全部楼层
傻眼貓咪 发表于 2021-11-21 13:48
这其实就是猜数字题,只是换成狐狸和洞罢了,代码类似啊:

大佬,这句话应该怎么理解呢?
hole = random.choice([5, hole+1]) if not hole else random.choice([hole-1, (hole+1)%5])
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-11-21 17:35:58 | 显示全部楼层
pallas 发表于 2021-11-21 15:23
大佬,这句话应该怎么理解呢?
hole = random.choice([5, hole+1]) if not hole else random.choice([ho ...

假设狐狸在洞一,隔壁就是洞二和洞五。假设狐狸在洞五,隔壁就是洞一和洞四(取模5是为了预防越界,比如洞五+1变洞六模5变洞一)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-11-21 22:25:44 | 显示全部楼层
pallas 发表于 2021-11-21 15:23
大佬,这句话应该怎么理解呢?
hole = random.choice([5, hole+1]) if not hole else random.choice([ho ...

感觉你可能是对这种语法有疑问,这段代码等于
if not hole:
    hole = random.choice([5, hole+1])
else:
    hole = random.choice([hole-1, (hole+1)%5])
是一种简单写法~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-12 18:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表