这在基于文本的游戏中用于确定是否已输入不同的房间以运行功能。这是学习练习,所以我确信代码不是最佳的。通过在最后一行运行代码来启动整个过程。
def runner(map, start):
next = start
while True:
room = map[next]
print "\n--------"
next = room()
runner(ROOMS, 'central_corridor')
这是在转轮功能中用作参数的ROOMS字典:
ROOMS = {
'death': death,
'central_corridor': central_corridor,
'laser_weapon_armory': laser_weapon_armory,
'the_bridge': the_bridge,
'escape_pod': escape_pod
}
所以,更具体地说,我的问题是,如果在游戏中输入了下一个房间,这个while循环如何用于运行下一个房间的功能?我觉得答案在于while循环中包含的下一个迭代器。
答案 0 :(得分:1)
如果我们重命名变量,代码会更容易理解。永远不要将变量命名为map
或next
,因为这样做会影响同名的内置函数。
以下是重命名map
和next
后的相同代码:
ROOMS = {
'death': death,
'central_corridor': central_corridor,
'laser_weapon_armory': laser_weapon_armory,
'the_bridge': the_bridge,
'escape_pod': escape_pod
}
def runner(visit, start):
room = start
while True:
action = visit[room]
print "\n--------"
room = action()
runner(ROOMS, 'central_corridor')
visit
变量是一个dict,它将房间映射到动作(它们是函数)。动作的返回值是一个房间。
所以
action = visit[room]
查看您访问房间时发生的操作, 和
room = action()
在room
执行后,将action
设置为下一个房间的值。