変な動きをしてると思ったら、怪しい行をコメントにしてどう動作が変わるか見ていくと探しやすいと思います。 で、見てみたところ、117~120行目に原因が集約されているようです。 とりあえず十字キー移動ならちゃんと動くように最低限の修正をしてみましたので、どう違うか見比べてみてはいかがでしょう。