みぎひだり反射神経ゲーム ― 2つのボタンでゲームを作ろう

総合・探究

本体の2つのボタン(左=PA9・右=PA8)をコントローラーに、ジャンパーワイヤでのばしたLEDパネルをディスプレイにして、反射神経ゲームを作ります。ステップ0〜5の順に、ボタン判定→ランダム出題→完成ゲーム→制限時間の調整まで体験。各ステップにかくにん問題つき。むらさきはガマンの発展プログラムとハイウェイレースのサンプルも遊べます。

小学校~ 上級 60

ここでやること

今回のゴールは、本体についている2つのボタンを使って、自分のゲーム機を作ることです。ジャンパーワイヤでのばしたLEDパネルが「画面」、本体のボタンが「コントローラー」。ぜんぶ合わせれば、手のひらゲーム機の完成です。
全体の流れ(約60分)
ステップ内容めやす
0. じゅんびLEDパネルをワイヤでのばしてつなぐ10分
1. ボタンを知るボタンのブロック2種類のちがいを知る5分
2. コントローラーボタンで左右をはんていする10分
3. 出題そうちランダムに左右の問題を出す10分
4. あそぶ完成プログラムをコピーして遊ぶ10分
5. 調整する時間を変えて、むずかしさを変える5分
応用・発展ルールを増やして自分のゲームにする10分

ステップ0 じゅんび ― LEDパネルをのばしてつなぐ

プログラミング画面を開こう。「新しいプロジェクトを追加する」→「作成」。
SPACEBLOCKをパソコンにつなげよう。USBケーブルでつないで「USBで接続する」。2回目からは自動でつながります。
LEDパネルをジャンパーワイヤで延長します。
いつもは本体に直接さしていたLEDパネルを、3本のジャンパーワイヤでのばします。横向きピンソケットのならび(A10・5V・GND)はそのまま、まっすぐつなぐだけ。
ワイヤでのばすと、LEDパネルを見やすい場所に立てて置けます。これが今日のゲーム機の「ディスプレイ」です。ゲーム機もテレビも、中では同じように「画面」と「ボタン」が線でつながっています。
❓ ステップ0のかくにん
ジャンパーワイヤでLEDパネルをのばすと、どんないいことがある?となりの人に1つ言ってみよう。

ステップ1 ボタンのブロックを知ろう

本体には押しボタンが2つついています。左がPA9、右がPA8です(小さいボタンはリセット用なので使いません)。
ボタンのブロックは「基本」カテゴリにあります。
  • 「ボタン(PA8)が押された」: 押されたしゅんかんに1回だけ動く
  • 「ボタン(PA8)が押されている」: 押されているあいだずっと「はい」になる(「もし」ブロックと組み合わせて使う)
❓ ステップ1のかくにん
「押されたしゅんかんだけ1回」動かしたいときは、2つのうちどちらのブロック?
また、左のボタンのピン名は?

ステップ2 ボタンで左右をはんていしよう

左のボタン(PA9)を押したら左向きの矢印、右のボタン(PA8)を押したら右向きの矢印をLEDに表示してみましょう。下のプログラムのとおりに、ブロックをならべてみよう。
押したほうの矢印がパッと出れば大成功。これで「コントローラー」ができました!
❓ ステップ2のかくにん
矢印が出ないときは、どこをたしかめる?
  • ボタンのピン名(PA8 / PA9)はあっている?
  • LEDパネルの線(A10・5V・GND)はぬけていない?

ステップ3 ランダムに問題を出そう

次はゲームの「問題」係です。繰り返し・ランダム・もし・一時停止の4つを組み合わせて、左右の矢印をランダムに表示します。
ポイントは、切りかえの前に100ミリ秒だけ完全に消灯すること。こうすると同じ矢印が2回続いたときも「あ、次の問題が出た!」とわかります。
❓ ステップ3のかくにん
「1から2までのランダムな整数」を使うと、何が起きる?
もし消灯(100ミリ秒)をなくしたら、どんなこまったことが起きる?

考えてみよう ― どんなゲームが作れるかな?

「ボタンで左右をはんていするコントローラー」と「ランダムに左右を出す問題」。この2つを組み合わせると、どんなゲームが作れるでしょうか?
となりの人とアイデアを話してみよう。

ステップ4 完成プログラムで遊ぼう

⚡ ゲームを作るときは、実行速度を「速い」に変えよう
プログラミング画面の右上の設定メニュー(歯車マーク)「実行速度の調整」「速い」をえらんで「適用する」。
反射神経ゲームのようにすばやさをきそうプログラムは、速度が「通常」のままだとボタンの反応がおくれてうまく遊べません。ゲームを作るときのおまじないとして覚えておこう。
下の完成プログラムを開いてコピーし、実行してみましょう。「みぎひだり反射神経ゲーム」です。
QR code for project
ゲームのルール
こうもく内容
スタート3・2・1のカウントダウンでスタート
あそびかた出た矢印と同じがわのボタンを押す
せいげん時間0.5秒(500ミリ秒)以内に押す
しっぱい時間切れ、または反対のボタンでゲームオーバー
スコア成功した回数。さいごにLEDに流れる+コンソールにも記録
プログラムのしくみ(かいせつ)
  • 問題を出す: ステップ3と同じ。100ミリ秒消灯→ランダムで左右の矢印
  • 時間の計り方: 「25ミリ秒待つ」をくりかえしながら、毎回ボタンをチェック。のこり時間 = せいげん時間ミリ秒 ÷ 25 回だけくりかえします
  • 判定: 押したボタンの番号(左=1、右=2)と問題の番号がおなじならスコア+1。ちがったら(または時間切れなら)ループから抜けてゲームオーバー
  • 記録: 出た問題と最終スコアはコンソール(シミュレータの下の黒い欄)にも表示されます

ステップ5 時間を変えて、むずかしさを調整しよう

このプログラムは、いちばん上にある「せいげん時間ミリ秒」を1か所変えるだけでむずかしさを調整できるようになっています。「数字 せいげん時間ミリ秒 に (500) をセット」の500を書きかえて、実行してみよう。
せいげん時間ミリ秒 のめやす
数字時間むずかしさ
7000.7秒かんたん(はじめての人むけ)
5000.5秒ふつう(さいしょの設定)
3500.35秒むずかしい
2000.2秒げきむず
❓ ステップ5のかくにん
せいげん時間ミリ秒を 250 にしたら、「のこり時間」は何回くりかえしになる?(ヒント: ÷25)
🎲 もっとおもしろく: 時間をランダムにしてみよう
いつも0.5秒だと、なれてくると「そろそろ来るな」と読めてしまいます。そこでせいげん時間ミリ秒に、200から500までのランダムな整数を入れるようにしてみましょう。
くりかえしの中で「数字 せいげん時間ミリ秒 に 200 から 500 までのランダムな整数 をセット」を入れるだけ。1回ごとに0.2〜0.5秒とバラバラになるので、毎回ドキドキするゲームになります。

応用 こうカスタマイズしてみよう

ここからは自分だけのゲームに改造するアイデアです。
  • ゲーム中にスコアが見えるように: 一番下の行に、成功した数だけ点灯させてみよう(「点灯」ブロックで1マスずつ)
  • 押すまでの時間をランダムに: ステップ5のランダムを取り入れる
  • 押しちゃいけない色: たまにむらさきを出して、そのときは押さずにガマン! 押したらゲームオーバー

発展プログラム ― むらさきはガマン!

上の応用アイデアをぜんぶ入れた発展プログラムがこちらです。
  • せいげん時間は毎回0.2〜0.5秒のランダム
  • お題は3種類。むらさきが出たら押さずにガマンできたらスコア+1
  • スコアは一番下の行にみどりのバーで表示(最大8)
コピーして中をのぞけば、「ランダムな時間」「3つのお題の分けかた」「バーの表示」の作り方がわかります。
QR code for project

サンプルプログラム ― ハイウェイレース

アニメーションもりもりの本格ゲームもどうぞ。「ハイウェイレース」です。
  • 左右のボタンで水色の車を動かして、上から来る赤い車をよけ続ける
  • よけるたびにスコア+1。そしてどんどんスピードアップ(なれた人でもけっこう手ごわい)
  • ときどき黄色のボーナスアイテムが落ちてくる。とれたらスコア+3!
  • ぶつかると爆発アニメーション→スコアがLEDに流れる
  • タイトル画面・カウントダウン・効果音つき。コンソールにも記録されます
コピーして中をのぞけば、「マスを1つずつ動かすアニメーション」の作り方がわかります。
QR code for project

まとめ

画面(LED)・コントローラー(ボタン)・ルール(プログラム)。この3つがそろえば、ゲーム機は自分で作れます。そして数字を1つ変えるだけでおもしろさが変わるのが、プログラミングのすごいところ。今日の改造アイデアをどんどん試して、世界にひとつのゲームに育てていこう!