光る順番記憶ゲーム
以前、ツイッターにて紹介しましたこのゲーム
そろそろ新作を作りたいので解体します;;
トリガーエディターのコード保存させてくれぇ・・・
ということで中身紹介。
今回、3つのホームネットワークパソコン(以降PC)にそれぞれ役割を与えました。
①ライトをランダムに点灯させるPC
②レバー入力による回答を待ち受けるPC
③正解判定を行うPC
それぞれ簡単にですが解説します。
コードは長すぎて正直読まないと思うので・・・
考え方とかが参考になれば幸いです。
①ライトをランダムに点灯させるPC
本当は、ライトを6本にしたかったり、完全ランダムとはいかないまでも
6通りぐらいの光るパターンを準備できるかな、と思っていたのですが
③の正解判定が思ったよりコードを圧迫してしまい
泣く泣くライト3つの3パターンになりました。。。
せめて難しくしようと、9回光らせるようにしました。
ライトを左から1 2 3として、1ステートで3回まで点滅でいるので
1パターン目 132→321→213
2パターン目 231→321→213
3パターン目 231→312→123
の順で光らせることとしました。
1パターン目と2パターン目の中~後半部分は被らせて圧縮しています。
また、1→1のように同じライトを連続で点滅させるとコードが長くなるので回避。
1stateで3回点灯させるやり方は、ビットカウンターの応用なので割愛します。
この3パターンのどれになるか、はランダムにということで
3つのステートをグルグルまわりながら、ゲーム開始スイッチが押されるのを待ちます。
また、ライトを光らせると同時に
足場の下に隠れているおじさんたちを動かします。
以下のように27人のおじさんを配置
123456789 ←右のライトが光ったら動く
123456789 ←真ん中のライトが光ったら動く
123456789 ←左のライトが光ったら動く
↑ ~ ↑
1回目の点灯~ 9回目の点灯
光ったライトの位置に対応したおじさんをONにすることで
どのライトがどの順に光ったかをおじさんに記憶させました。
②レバー入力による回答を待ち受けるPC
一通り光り終わった後、プレイヤーはレバーで回答を入力します。
この時、回答に対応した位置のおじさんの動きをOFFしていきます。
ライトの光ったところのおじさんのみがON状態のはずなので、
それらがすべてOFFとなり、
最終的に動いているおじさんがいなくなれば見事正解
誰か一人でもONで残っていたら不正解です。
9回答えを入力してもらうので回答1~9の待ち受け、
リセット処理とか全然関係ないときにガチャガチャされたりしないように
スタート待ちのステートでちょうど10ステートです。
③正解判定を行うPC
そして正解判定。こいつが苦労しました・・・
話としては全てのおじさんがOFFになってるか?を調べて
OFFならクリア、一人でもONがいたら出直してこいっていうだけなんですが
一つ目のIF文→1人目のおじさんはONになってないか?
二つ目のIF文→2人目のおじさんはONになってないか?
三つ目のIF文→次のステートに移動する
という作りとなっているため
1ステートで2おじさん分のONOFF判定しかできないんですよね・・・。
つまりどんだけ頑張っても10ステート×2おじさん=20おじさんまで。
さっき調子にのって27おじさんも配置してしまったので
どうみても足りません・・・
なんかうまい書き方がないかと模索したのですが思いつかず。
ということでライトの光りかたのパターン=見るべきおじさんの数
を頑張って圧縮しました。
再掲。
赤枠にそって、縦にみていくとわかるのですが
1回目の点灯はかならず1か2
2回目の点灯に至っては3しか点灯しない としました。
これにより一見バラバラにみえますが
ある程度ライトの光パターンをかぶせることで、
裏でうごく可能性のあるおじさんの数を15体まで減らしました。
15体であれば8stateでON/OFF判定ができます。
ソースは以下の通り
この正解判定、すごく時間がかかるので
On ConditionにシンプルスタンドのONOFFを書いてチカチカさせることで
プレイヤーの気を紛らわせていますw
おじさんが一人でもONだったら、外れ判定用スイッチをONにしています。
そして最後に正解・はずれ判定。
正解ならドアをあけて
はずれなら全部元通りにして待ち受けに。
(スイッチの数も多いのでもうゴチャゴチャですが・・・)
もっかい作れと言われても、もういいかな・・・。
土日に壊して、新作ゲーム作ろうと思います
8月中旬には公開できるかな?お楽しみにー!