2021年07月15日 12時00分

第9弾プロジェクト「反射神経ゲーム」

ホームプログラミングコラム第9弾プロジェクト「反射神経ゲーム」

こんにちは!😊

スーパーブログ

「実際にプロジェクトを動かせる記事」の第9回目となります!

今回はLEDの色が変わったタイミングでボタンを押すタイミングゲームプロジェクトになります。

皆さんがSPACEBLOCK(スペースブロック)でプログラミングされる際の参考になればと思います!😆

今回のプロジェクト


今回のプロジェクトは8×8LEDパネルPA8ボタンを使っています。

~ゲームの目標~

LEDが青から赤に変わったタイミングで、できるだけ早くボタンを押す

早押しゲーム(ボタンを押せるのは1度だけ)

iOS-の画像-_1_.gif

  1. 時カウントダウンを開始
  2. 青色LEDが点灯される
  3. 赤色に変わったタイミングでボタンを押す

という流れで動作するプロジェクトとなります。

プロジェクトの解説


変数をセット

image.png

赤に変わったタイミングでtrueになる変数と、ゲームが開始されるタイミングでtrueになる変数をセットします。

今回は「ゲームがスタートされてからボタンが押されたタイミング」が終了条件となりますので、ゲーム終了という変数も用意しておきます。

image.png

また、最後にどれくらいの速さで押せたかをコンソールに出るようにするため、変数を赤に変わった時間を保持する数値型の変数、LEDが変わってから押したかどうかを保持するブール型の変数も使用します。

カウントダウン&ゲーム開始

image.png

ゲームが始まる前に、カウントダウンとして3,2,1と表示します。

image.png

繰り返しブロックで青色に点灯&ランダムブロックで色を変更

繰り返しブロックでLEDを点灯します。

繰り返し1回目は①で変数「赤に変わった判定」にfalseをセットしているので、青色が点灯します。

繰り返しの処理の最後に、変数「赤に変わった判定」をランダムに判定というブロックで代入し、trueが代入されたタイミングで赤色を点灯するようにします。

ですので、2回目以降ランダムに赤色のLEDが点灯するようになります。

赤色に変わったタイミングでループから抜け出します。

(抜けないとずっとがに交互に点灯してしまいます🤣)

そして、赤色に変わったタイミングの時間を変数に代入し保持します。

ボタンが押されるまで待機

image.png

ループから抜けた後、ボタンが押されるまでプロジェクトを終えないように繰り返しブロックを用意しておきます。

ボタンが押された処理を用意

全体のブロックがこちらになります。

image.png

色が変わってから押した場合の処理が前半で、

image.png

色が変わる前に押してしまった処理が後半になります。

image.png

~色が変わってから押した場合~

に変わった時間 = 0 」ではないという条件を足しているのは、

  1. に変わった判定」にtrueが代入される
  2. 繰り返し処理のもし「に変わった判定」がtrueの場合、
  3. に変わった時間に経過時間をセット
  4. 赤色LEDを点灯

という処理の2番のタイミングでボタンが押されてしまった場合、になっていない状態で押したにもかかわらず、ちゃんと押されたとみなされてしまうのでこのような条件にしています。

(タイミングが重要なゲームは難しいですね😅)

ちゃんと変わってから押した場合〇を、そうでない場合に×を点灯

image.png

〇と×で判定を分かりやすくしています。

コンソール上では以下のように表示されます。

タイミングが合っていた場合

image.png

タイミングが早かった場合

image.png

皆さんもぜひSPACEBLOCK(スペースブロック)でプログラミングを楽しんでください!😊

公式ブログ
公式ブログ
officialtyping-level-10question-level-10
SPACEBLOCK(スペースブロック)公式ブログです。