基于用户输入的迷宫移动顺序
Order of movement in a maze based on user input
我正在尝试使用堆栈解决 maze
,其中每个移动都存储在 moves
变量中。为了解决它,我需要任意决定从当前位置检查四个方向的可用性的顺序。一种可能的排序是 1) 向上,2) 向下,3) 左和 4) 右。对于不同的运动模式,if 语句应该相应地交换。
有没有更优雅的方法来做到这一点,可以定义 order_of_movement
变量和 not 交换if 语句?
order_of_movement = ['UP', 'DOWN', 'LEFT', 'RIGHT'] #how such a movement list could be used?
if(not moved and validWay[UP]):
moved, completed, moves = move_up(moves, maze, end)
if(not moved and validWay[DOWN]):
moved, completed, moves = move_down(moves, maze, end)
if(not moved and validWay[LEFT]):
moved, completed, moves = move_left(moves, maze, end)
if(not moved and validWay[RIGHT]):
moved, completed, moves = move_right(moves, maze, end)
既然你澄清了你的 move_up/down/left/right
函数可以通用,下面是解决方案的样子:
for direction in order_of_movement:
if(not moved and validWay[direction]):
moved, completed, moves = move_direction(moves, maze, end, direction)
假设您向新的通用 move_direction
函数添加了第四个参数 direction
。
我在评论字典时的意思是,如果您想将所有移动函数分开,您可以定义方向到函数的映射,如下所示:
order_of_movement = {
'UP': move_up,
'DOWN': move_down,
'LEFT': move_left,
'RIGHT': move_right
}
for direction in order_of_movement.keys():
if(not moved and validWay[direction]):
moved, completed, moves = order_of_movement[direction](moves, maze, end)
因为每个方向都映射到一个函数,这意味着order_of_movement[direction]
给了你合适的函数,所以你只需要在末尾加上括号中的参数来调用它。
我正在尝试使用堆栈解决 maze
,其中每个移动都存储在 moves
变量中。为了解决它,我需要任意决定从当前位置检查四个方向的可用性的顺序。一种可能的排序是 1) 向上,2) 向下,3) 左和 4) 右。对于不同的运动模式,if 语句应该相应地交换。
有没有更优雅的方法来做到这一点,可以定义 order_of_movement
变量和 not 交换if 语句?
order_of_movement = ['UP', 'DOWN', 'LEFT', 'RIGHT'] #how such a movement list could be used?
if(not moved and validWay[UP]):
moved, completed, moves = move_up(moves, maze, end)
if(not moved and validWay[DOWN]):
moved, completed, moves = move_down(moves, maze, end)
if(not moved and validWay[LEFT]):
moved, completed, moves = move_left(moves, maze, end)
if(not moved and validWay[RIGHT]):
moved, completed, moves = move_right(moves, maze, end)
既然你澄清了你的 move_up/down/left/right
函数可以通用,下面是解决方案的样子:
for direction in order_of_movement:
if(not moved and validWay[direction]):
moved, completed, moves = move_direction(moves, maze, end, direction)
假设您向新的通用 move_direction
函数添加了第四个参数 direction
。
我在评论字典时的意思是,如果您想将所有移动函数分开,您可以定义方向到函数的映射,如下所示:
order_of_movement = {
'UP': move_up,
'DOWN': move_down,
'LEFT': move_left,
'RIGHT': move_right
}
for direction in order_of_movement.keys():
if(not moved and validWay[direction]):
moved, completed, moves = order_of_movement[direction](moves, maze, end)
因为每个方向都映射到一个函数,这意味着order_of_movement[direction]
给了你合适的函数,所以你只需要在末尾加上括号中的参数来调用它。