タプルの値がウェイポイントのリストの次の値と比較してどのように増加または減少するかを調べることにより、座標系を移動するときにどちらの方向を向いているかを確認するためのこの関数があります。コードを見ると、複雑でぎこちなく感じます。
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'
戻り値は、時計回りに 1 ステップ回転するように調整されます。私の質問は、関数をより短く効率的にするためにコードをどのように変更できるかということです。
編集: 移動は指定された 8 方向でのみ発生することに注意してください。