我有这个函数来检查我们在通过坐标系时所面对的方向,通过查看元组中的值与航点列表中的下一个值相比如何增加或减少。看代码,感觉很复杂,很笨拙:
a.facing = self.direction(a.travel_list[0], a.travel_list[1])
def direction(self, start, end):
s_width = start[0]
s_height = start[1]
e_width = end[0]
e_height = end[1]
# check directions
if s_height < e_height:
if s_width < e_width:
return 'right'
elif s_width > e_width:
return 'up'
else:
return 'up_right'
elif s_height > e_height:
if s_width < e_width:
return 'down'
elif s_width > e_width:
return 'left'
else:
return 'down_left'
elif s_height == e_height and s_width < e_width:
return 'down_right'
else:
return 'up_left'
返回值被调整为顺时针旋转一步。我的问题是,我们如何更改代码以使函数更短、更高效?
编辑:请注意,移动只能在指定的 8 个方向上发生。