移動判定と衝突判定をサブルーチンとか関数にまとめると、可読性も上がりバグ取りしやすいと思いますね。あとSPHOME使えば面倒な座標計算が簡単になるのでは。