CyberPi(サイバーパイ)を使って、ナゾ解きゲームを作ってみました!
このナゾ解きは、紙に書かれた ナゾを解くだけでは 終わりません。
CyberPiのセンサーやボタンを使って、いろいろな操作をしながら ナゾを解いていきます。
今回は、このナゾ解きゲームで作ったプログラムを紹介します。
必要なもの
この作品を作るために 必要なものは、以下の通りです。
- CyberPi(サイバーパイ)
- パソコンやタブレット
- mBlock(無料のプログラミングアプリ)
- ナゾ解きカード用の紙
- ナゾ解きの小道具(ダイヤル式南京錠など)
ナゾ解きカードは、問題を作って自分で書いたり、印刷したりして 用意します。
小道具として、番号で開けられる ダイヤル式南京錠を 用意しました。
宝箱などにつけると、ナゾ解きゲームらしい感じが出ますね。
ナゾ解きの流れ
今回のナゾ解きは、次の流れで進みます。
- ナゾ解きカードの ナゾを解く
- ナゾの答えに書かれた 指示に従って CyberPiを操作する
- 正しく操作できると、次の場所が分かる
- 次の場所で ナゾ解きカードを探す
1~4のサイクルを繰り返しながら、最後のナゾを目指します。
1.はじまりのナゾ
まずは「はじまりのナゾ」から スタートします。
ナゾを解くと、CyberPiで何をすればいいのか 分かるようになっています。
CyberPiが起動したとき
CyberPiを起動すると、「はじまりの ナゾを とこう!」をいうメッセージが表示されます。
プログラムでは、ゲームを始めるために 最初にいくつかの設定をしています。
- 画面を消す
- 音量を20にする
- STAGEを1にする
- 入力番号を0にする
- スタート音を鳴らす
- 「はじまりの ナゾを とこう!」と表示する
- LEDを光らせる
スタート音を鳴らしたり、LEDを光らせたりすると、ゲームが始まる感じが出ますね。
ここで設定している「STAGE」は、今どのナゾを解いているのかを表す変数です。
- STAGE = 1 → はじまりのナゾ
- STAGE = 2 → キッチンのナゾ
- STAGE = 3 → ベッドルームのナゾ
- STAGE = 4 → ナゾのコマンド
最初は、
STAGE = 1
にして、はじまりのナゾからスタートします。
その後は、「ずっと」の中で STAGEの数字を確認します。
- もし STAGE = 1 なら
STAGE1を実行 - もし STAGE = 2 なら
STAGE2を実行 - もし STAGE = 3 なら
STAGE3を実行 - もし STAGE = 4 なら
STAGE4を実行
たとえば、STAGE1の条件をクリアすると、STAGEを2に変更します。
すると、次のループから STAGE2の処理が実行されます。
このように、STAGEの数字を変えることで、ナゾを順番に進めています。
ブロック定義「STAGE1」
ナゾごとにブロックを作って、プログラムを見やすくしてみました。
ここでは、条件を判定して、正解したら 次の場所を表示する 処理を作ります。
STAGE1では、CyberPiのマイクを使って 音を検知します。
- 音量が95より大きくなるまで待つ
- 正解の処理
- 「キッチンへ いけ」と表示する
- STAGEを2にする
プログラムでは、音量が95を超えるまで 待つようになっています。
95という値は、実際に試しながら 調整してみてください。
条件を満たすと、正解の演出を行い、
次のナゾの場所を示す「キッチンへ いけ」を表示します。
そして、STAGEを2に変更します。
ブロック定義「正解」
正解したときには、毎回同じ演出を行います。
そこで、この処理を「正解」というブロックに まとめました。
- 画面を消す
- 正解音を鳴らす
- 「正解!」と表示する
- LEDを光らせる
- 3秒待つ
- LEDを消す
同じ処理を何度も書く代わりに、自分で作った「正解」ブロックを 呼び出すようにしています。
こうしておくと、正解時の演出を変更したくなったときも、「正解」ブロックを直すだけで済みます。
音やLEDの演出は、お好みで変えてみてください。
2.キッチンのナゾ
キッチンへ行くと、次のナゾ解きカードがあります。
CyberPiを どこかに入れるようですが……。
ブロック定義「STAGE2」
STAGE2では、CyberPiの明るさセンサーを使います。
- 明るさが 5未満?
- YESなら 3秒待つ
- もう一度、明るさが 5未満か確認する
- YESなら正解の処理
- 「しんしつへ いけ」と表示する
- STAGEを3にする
今回の条件は、明るさが5未満になることです。
ただし、暗くなってもすぐ正解にはしません。
暗くなったら 3秒待って、もう一度明るさを確認します。
3秒後も明るさが5未満なら、正解です。
正解すると「しんしつへ いけ」と表示されるので、次はベッドルームへ向かいます。
明るさの値は、実際に試しながら 調整してみてください。
3.ベッドルームのナゾ
ベッドルームには、次のナゾ解きカードがあります。
まくらに……?
ブロック定義「STAGE3」
STAGE3では、CyberPiの落下検知を使います。
- CyberPiが落下するまで待つ
- 正解の処理
- 「パソコンを たちあげよ」と表示する
- STAGEを4にする
CyberPiが落下したことを検知すると、正解の演出を行います。
正解すると「パソコンを たちあげよ」と表示されます。
プログラムを試すときは、落としても こわれないように 安全な方法で確認してください。
4.ナゾのコマンド
いよいよ最後のナゾです。
とあるコマンドを調べて CyberPiで入力すると……
CyberPiが起動したとき
ここでは、CyberPiのジョイスティックと A・Bボタンを使って、コマンドが正しい順番で 入力されたかを判定します。
正解のコマンドは、「上上下下左右左右BA」です。
CyberPiを起動したときの「STAGEを1にする」の下に、「STAGE4-InputNoを0にする」を追加します。
入力番号(STAGE4-InputNo)は、今何個目まで 正しく入力できているか 管理する変数です。
最初は「0」で、正しい方向や ボタンを入力するたびに 1増やします。
ジョイスティックが↑に向けるとき
まず、ジョイスティックで「↑」が 入力されたときの処理を考えます。
- STAGEが4?
- YESなら、入力番号が 0 または 1?
- YESなら「STAGE4コマンド成功」
NOなら 「STAGE4コマンド失敗」
最初にSTAGEが4かどうかを判定して、ナゾのコマンドを解いているときだけ、この処理が動くようにします。
「↑」は 1番目と 2番目に 入力するコマンドです。
そのため、入力番号が 0 または 1 の場合は成功、それ以外の場合は失敗となります。
他の入力についても、同じようにプログラムを作ります。
それぞれの入力に対して、正しい入力番号か 判定します。
入力と 入力番号の対応は、下のとおりです。
| STAGE4-InputNo | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
|---|---|---|---|---|---|---|---|---|---|---|
| コマンド | ↑ | ↑ | ↓ | ↓ | ← | → | ← | → | B | A |
ブロック定義「STAGE4コマンド成功」
コマンド入力が 成功したときの処理は、どの方向やボタンが 正解だった場合でも 共通です。
そこで、「STAGE4コマンド成功」というブロックにまとめました。
- 「・」を表示する
- 入力番号(STAGE4-InputNo)を 1増やす
正しく入力されたことを、画面で分かるようにするために「・」を表示します。
1つ目の入力に成功すると「・」、2つ目に成功すると「・・」というように増えていきます。
そして入力番号を 1増やして、次のコマンドへ進みます。
ブロック定義「STAGE4コマンド失敗」
コマンド入力が まちがっていた場合の処理も 作ります。
- 画面を消す
- 不正解の音を鳴らす
- LEDを光らせる
- 「コマンドを入力」と表示する
- 入力番号(STAGE4-InputNo)を 0にリセットする
失敗したときは演出を行ったあと、入力番号を 0にもどします。
つまり、最初の「↑」からもう一度入力し直しです。
ブロック定義「STAGE4」
最後に、コマンドが すべて正しく入力できたかを 判定します。
- 入力番号が 9より大きい?
- YESなら正解の処理
- レベルアップ音を鳴らす
- 「カギの ばんごうは『2525』」と表示する
- LEDを虹色に光らせる
10個の入力を すべて正しく入力すると、入力番号は「10」になっています。
そこで、入力番号が 9より大きくなったら、コマンド入力成功と判定します。
正解の演出を行ったあと、最後の答えである カギの番号を表示します。
ダイヤル式南京錠に 番号を入力して、カギを開ければ ゲームクリアです!
まとめ
今回は、CyberPiを使った ナゾ解きゲームを 作ってみました。
この作品では、
- 音を検知する
- 明るさを検知する
- 落下を検知する
- ジョイスティックを操作する
- A・Bボタンを押す
- LEDや音で正解・不正解を知らせる
など、CyberPiのいろいろな機能を使っています。
また、プログラムでは「STAGE」という変数を使って、ナゾを順番に進めました。
単にセンサーを動かすだけでなく、
「ナゾを解く → CyberPiを操作する → 次の場所へ行く」
という仕組みにすることで、デジタルとリアルを組み合わせた おもしろいナゾ解きゲームになったと思います。
センサーを使う条件やナゾの内容を変えて、自分だけのナゾ解きゲームを ぜひ作ってみてくださいね。























