【ブロックふみふみ】絶対にCLEARできるロジック構築法
こんばんは。えいたです。
「ブロックふみふみ」についてパワーアップしましたが、差異は気になりますよね。
さっそく、画像の違いをチェックします。
画像比較
・大学生時代
・現在
画像から判断できるパワーアップした点は
- 時間を表示
- 踏んだ回数を表示
- ブロック数が多い(11×11=121)
ですが、最重要項目はロジックの変更です。
大学生時代の欠点
青りんご姫を「青→黄→赤→青→・・・」の順に移動させるルールは同様です。
初期配置において、ブロックの全踏みができないパターンが存在します。
上記は右上の部分を切り取った画像です。
右上の青を踏んだ場合、次に踏む場所が存在しない。
この問題はユーザの努力で解決できないですよね。
よって、ルールを緩くして対応しました。
- 青→青 or 黄に移動できる。
- 黄→黄 or 赤に移動できる。
- 赤→赤 or 青に移動できる。
同色への移動を可能にして、手詰まりを防ぐという方法です。
・IT業界のケース
納品された製品に対して不具合が出た場合「運用側で対応して!」は多々あります。
製品の修正は追加の費用が発生するので、渋りますよね。
でも、運用業務の経験がある僕は「運用は便利屋じゃねぇぞ!」と思います。
ロジックで解決する手法が思い浮かばなかったので、ルール変更(運用)にて対応しました。
ルール変更しても上記の画像に対応することはできませんでした。
ロジックの修正方法
ランダムにブロックを配置する方法では手詰まりを解消することができません。
よって、青りんご姫の動きに沿った方法でブロックを配置することにしました。
ブロックの配置を初期化する(全て黒にする)。
青りんご姫の初期位置に青を設定する。
while(青りんご姫の縦横斜めに空いているブロックがある場合){
空いているブロックを1つ選択して移動する。
ブロックを配置する(青→黄、黄→赤、赤→青)。
}
ですが、上記のロジックにおいて「全てのブロックが埋まる可能性」は低いです。
ブロック配置処理
}while(全てのブロックが埋まっていない場合)
成功するまで「ブロック配置処理」を繰り返すロジックにしました。
実際の「ブロック配置処理」は先読みの処理を構築して成功確率を上げています。
小手先で組んだロジックなので、スパゲッティコードになっている点は反省です。
不具合が出たら、改修に時間がかかりそう・・・。
さいごに
先読みの処理は難しいので省略しますが、言いたいことがあります。
コンピューターは失敗しても何度も繰り返せる。
コンピューターの処理速度は日々向上しています。
強引なロジックを記述しても動作するので、気持ちいいですよね!
※個人製作のゲームなら許されますが、処理速度を求める仕事の場合は怒られます。