アクションゲームのような当たり判定をしているとおかしくなるぞ。

入力があった時に、変化できるかできないかと、変化後の形処理をして、結果を段階的に表示する方法にしたほうがいい。
でないと意図しない動きで変な動作をすることになる。

パズルゲームなんだから、落下も回転もマップの1マスずつ移動させるように処理する。
まずは1マス単位で動くようなものを作ってから、途中段階を表示させるように変えてみようよ。