向いてる方向を、例えば時計回りに右から0、1、2、3という風に番号付けして、向いている方向フラグを管理してる変数を一つにしちゃえばいいんじゃないです?。斜め向きも表現したいときは倍の0~7で管理するとか。 このプログラムだと、十字キーの入力が無いときは「どの方向も向いていない」って状況が発生するから変になってるんじゃないです? ループの最初の方で方向フラグ全部を0にしているの消して、十字キーの方向判定してるIF文の中で、向いていない他の方向フラグを0にするようにしてやればうまくいくかも。