ブロックの移動連鎖

坂道が上下に動く場合と、リフトの上にブロックが乗っている場合に対応しました。
動く坂の差分
ブロックの移動連鎖の差分


ブロックの移動連鎖は、下降する場合は下のブロックを動かしてから上のブロックを動かし、上昇する場合は上のブロックを(再帰的に)動かしてから下のブロックを動かしています。
この順序でないとブロックが重なってしまって正しく動かせません。


これでリフトのアルゴリズムとしては大体できたので、明日一旦コードを整理してからaction_gameへの組み込みに入りたいと思います。