いわゆるごり押しでも、分かりづらくなければそれはそれでありだと思ってます。特に慣れないうちは試行錯誤の連続ですので、作りながら程々にベターを目指す、みたいな感じでよいと思いますよ(^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ごとに持つとやり易いかもしれません。