プログラムをつくろう

A4とA5のLEDを1秒おきに交互に10回点滅させるプログラムを書いてみよう。

その前に、まずは変数をつくろう。

左上のカテゴリーを[変数]に切り替えて、[新しい変数を作る]をクリックする。変数名を「delay」にして[OK]を押す。
すると、その変数の中身を呼び出したり(参照)、変えたり(代入)するためのブロックが自動的につくられる。同じようにして「times」も追加しよう。
このとき、右側のステージには現在の変数の値が表示されるぞ。

プログラムをつくろう

[delay]を「1」、[times]を「10」にセットし、点滅間隔と繰り返し回数をセットしたプログラムはこのようになる。テストモードにしてから、緑の旗をクリックして動きを確認しよう。LEDがこのように動いたかな?[delay]と[times]の数字を変えると結果も変わるので、いろいろと試してみよう。

プログラムをつくろう

点滅はこの後で何回も使うので、毎回作らなくてもよいように「関数」にしてまとめよう。

関数をつくるには、[制御]カテゴリーの[関数]ブロックを使う。「▼」をクリックするとメニューが出るので、「新規...」を選んで名前をつけよう。アルファベットと数字しか使えないのは変数と同じだ。ここでは「flash」(点滅)としよう。この[flash関数]ブロックを、まとめたいブロックの上につける。こんな感じだ。

プログラムをつくろう

この関数を呼び出すには[関数をコールする]を使う。「▼」でメニューを出し、「flash」を選ぼう。これを[制御スタート]の下にある、変数の代入ブロックの下につければ完成だ。

右上の緑の旗をクリックして、前のプログラムと同じ動きをすることを確認しよう。これで、あっち向いてホイをつくる準備ができた。

プログラムをつくろう

ゲーム開始の予告をつくろう。ゲーム開始した途端にスタディーノがいきなりあっち向いてホイの方向を示したら困るので、開始の予告が出るようにする。これはカメラのセルフタイマーのように、最初はLEDがゆっくり点滅して、直前に速く点滅するようにすればよいだろう。それから1回LEDが消えてゲームがスタートする。プログラムはこんな感じになる。

プログラムをつくろう

続いて、プレイヤーが指を差す方向の入力だ。これはA3ボタンが押されたら右、A0ボタンが押されたら左としよう(左上写真)。答えは変数「answer」(答え)に入れるので、さっきと同じ要領であらかじめつくっておこう(右上)。

前回、ボタンでLEDを操作したとき、ボタンを押していないときは「センサー・ボード」の値が1、押しているときは0だったのを覚えているだろうか。この値と、足し算、かけ算をうまく組み合わせると、2つのボタンの押され方を1つの数字で表せる。

ボタンA0の値 + (A3の値 * 2)
の式で計算した結果をまとめると、表(写真下)のようになる。つまり、ボタンを両方とも押すと0、右(A3)だけ押すと1、左(A0)だけ押すと2、どちらも押していないときは3となる。

プログラムをつくろう

これをプログラムにすると上のようになる。足し算やかけ算は[演算]カテゴリーにある。式のカッコ(計算する優先順位)は、ブロックを重ねる順番で表されることに気をつけよう。

プログラムをつくろう

スタディーノの向きは、乱数で決定して、それに従ってLEDを点灯すればよい。乱数とは、偶然に得られるランダムな数のこと。ランダムなので、次にどんな数が出るかはわからない。ここでは、1か2のどちらかが得られるようにしている。乱数で得られた値は、変数「result」(結果)に入れるので、この変数もあらかじめつくっておこう。

プログラムはこんな感じになる。乱数で1が得られたら右の[A4]のLEDが、2なら左の[A5]のLEDが光った後、1秒後に消えるようにしている。

プログラムをつくろう

勝ち負けの判定だ。プレイヤーの入力と、スタディーノが示した向きが同じならプレイヤーの勝ち、違っていたら負けとなる。ボタンを押さなかったときや、両方のボタンを押したときも、プレイヤーの負けだ。勝ちの場合は速い点滅、負けの場合は遅い点滅で表そう。

プログラムをつくろう

完成したプログラムの全体像だ。

プログラムをつくろう

プログラムが完成したら、スタディーノに転送しよう。前回やった通り、[実行]から[プログラム作成・転送]を選び、ダイアログが消えるのを待とう。転送が終わったら、USBケーブルを抜き、電池ボックスのスイッチをオンにしよう(電池ボックスがない人はそのまま)。ゲームが自動でスタートするぞ!

キミが押したボタンの方向とLEDが同じだったらキミの勝ち、違ったら負けだ。

もう一度やりたいときは、リセットボタンを押そう。遊び終わったら、電池ボックスのスイッチをオフにしてね。