第9弾プロジェクト「反射神経ゲーム」
こんにちは!😊
スーパーブログ
「実際にプロジェクトを動かせる記事」の第9回目となります!
今回はLEDの色が変わったタイミングでボタンを押すタイミングゲームプロジェクトになります。
皆さんがSPACEBLOCK(スペースブロック)でプログラミングされる際の参考になればと思います!😆
今回のプロジェクト
今回のプロジェクトは8×8LEDパネルとPA8ボタンを使っています。
~ゲームの目標~
LEDが青から赤に変わったタイミングで、できるだけ早くボタンを押す
早押しゲーム(ボタンを押せるのは1度だけ)
- 時カウントダウンを開始
- 青色LEDが点灯される
- 赤色に変わったタイミングでボタンを押す
という流れで動作するプロジェクトとなります。
プロジェクトの解説
①変数をセット
赤に変わったタイミングでtrueになる変数と、ゲームが開始されるタイミングでtrueになる変数をセットします。
今回は「ゲームがスタートされてからボタンが押されたタイミング」が終了条件となりますので、ゲーム終了という変数も用意しておきます。
また、最後にどれくらいの速さで押せたかをコンソールに出るようにするため、変数を赤に変わった時間を保持する数値型の変数、LEDが変わってから押したかどうかを保持するブール型の変数も使用します。
②カウントダウン&ゲーム開始
ゲームが始まる前に、カウントダウンとして3,2,1と表示します。
③繰り返しブロックで青色に点灯&ランダムブロックで色を変更
繰り返しブロックでLEDを点灯します。
繰り返し1回目は①で変数「赤に変わった判定」にfalseをセットしているので、青色が点灯します。
繰り返しの処理の最後に、変数「赤に変わった判定」をランダムに判定というブロックで代入し、trueが代入されたタイミングで赤色を点灯するようにします。
ですので、2回目以降ランダムに赤色のLEDが点灯するようになります。
赤色に変わったタイミングでループから抜け出します。
(抜けないとずっと赤と青がに交互に点灯してしまいます🤣)
そして、赤色に変わったタイミングの時間を変数に代入し保持します。
④ボタンが押されるまで待機
ループから抜けた後、ボタンが押されるまでプロジェクトを終えないように繰り返しブロックを用意しておきます。
⑤ボタンが押された処理を用意
全体のブロックがこちらになります。
色が変わってから押した場合の処理が前半で、
色が変わる前に押してしまった処理が後半になります。
~色が変わってから押した場合~
「赤に変わった時間 = 0 」ではないという条件を足しているのは、
- 「赤に変わった判定」にtrueが代入される
- 繰り返し処理のもし「赤に変わった判定」がtrueの場合、
- 赤に変わった時間に経過時間をセット
- 赤色にLEDを点灯
という処理の2番のタイミングでボタンが押されてしまった場合、赤になっていない状態で押したにもかかわらず、ちゃんと押されたとみなされてしまうのでこのような条件にしています。
(タイミングが重要なゲームは難しいですね😅)
⑥ちゃんと変わってから押した場合〇を、そうでない場合に×を点灯
〇と×で判定を分かりやすくしています。
コンソール上では以下のように表示されます。
タイミングが合っていた場合
タイミングが早かった場合
皆さんもぜひSPACEBLOCK(スペースブロック)でプログラミングを楽しんでください!😊