先に処理の時間がかかりそうなものをすましておいた。
なおこの処理は、グループ付与のループ文の中に、各マスのグループ付与判定のループがあり、さらにそこから周囲6マスに広げるループ文をもち、これらの繰り返しが行われる条件下での無制限ループを行う「ループ4重構造」によって成り立っている。
さすがに以前つくった時とは違い、この辺りはスムーズにいく。
上のようにグループ化して、もちろん落下条件は各グループ1~に対してマス番号1~8が存在するかどうかである。そのようなマスが存在しない場合はそれは最上段とつながっていないことになりそのグループ全部は落下の対象。
これによりグループ分けと落下処理の内部がだいたい完成することになる。
もちろん奇数回せりだし時の場合も作っている。
たぶん上のような画像は過去に「自作アニマロッタ風ゲーム」であげていると思う。
このアイデアは我が以前考えたものである。今回はよりコードを少なくかつ分かりやすく、さらに時間をかけずに改良した。
ちなみに上の場合ではグループナンバー4,5,6,7,8が落下の対象。
まあ初めて落下するグループが出れば、グループ番号の付与規則から以降のグループ番号のなかで最も若いマスは必ず全グループ番号の若いマスより大きく、そのマスですでに8を超越しているので問答無用で落下決定、としたほうが幾分か処理は早いと思う。
もう少しいい方法があるかもしれないが、すぐに思いつくのはせいぜいこんなところ。