うーん、突っ込むところ多いけど、、、
とりあえずぶつかった時のundoがx,yを戻してるけど
移動時はxだけ、yだけ保存だから戻すときずれて残像になってるね
ほかにもあるみたいだけど、、、これから帰宅なのでまた・・・

関数のコメントは // じゃなくて /// がお勧め