いわゆるごり押しでも、分かりづらくなければそれはそれでありだと思ってます。特に慣れないうちは試行錯誤の連続ですので、作りながら程々にベターを目指す、みたいな感じでよいと思いますよ(^O^)
ちょうど最近似たようなことをしたので、別のアプローチとして参考までに。
IF ABS(SX)+ABS(SY)<一定 then 入力なし
ROT=360/(2*PI())*ATAN(SY,SX)
ROT=(ROT+22.5+360) MOD 360
DIR=ROT DIV 45
DIRは0から7までで、右から順に右上、上、左上………と半時計回りになります。
ここから移動の処理などと連携させたい場合は、[8,2]の配列をつくって、方向ごとに移動がプラスなのかマイナスなのかゼロなのか、もしくはちょっとなのかをXYごとに持つとやり易いかもしれません。