マイクロビットのホームページにあるレッスンを紹介したいと思います。英語版ですので、日本語で纏めてみました。今回は『トゥルース・オア・デア』を取り上げます。
当記事は、シリーズでマイクロビット(Micro:bit)のプログラミングについて紹介しています。初めての方はこちらをご覧ください。
『サイコロ』プログラムのチャレンジの解答例
記事『micro:bit(マイクロビット)で学ぶ 5』のチャレンジは、『サイコロの目を表示する前に、サイコロを振ったときのようにサイコロの目が色々変わる様子を追加する』でした。
以下に解答例を紹介します。
解答例:乱数によってサイコロの目を表示する前に、サイコロが転がる様子を関数『転がす』で追加しました。この関数を揺さぶられたときの乱数の次に組み込みます。他にも色々な方法があると思いますので、参考にしてください。
レッスン『トゥルース・オア・デア』
注:『トゥルース・オア・デア』とは、パーティーゲームの一つ。ゲームをする人が『トゥルース(本当のことを言う)』か『デア(挑戦する)』のどちらかを宣言します。『トゥルース』の場合は、他の参加者が答えにくい意地悪な質問(例:好きな人は誰?)をしても本当のことを言わないといけません。『デア』の場合は、他の参加者が難しいことをやれ(例:○○の歌真似をして)といわれたら、挑戦しないといけません。
まず、上の手順でブロックエディターを開いてください。もし、前に作成中のプログラムが表示された場合は、保存してから左上にある『プロジェクト』メニューをクリックして『新しいプロジェクト』をクリックしてください。最初は、『最初だけ』ブロックと『ずっと』ブロックだけがプログラミングエリアにあります。
12のレッスンがありますが、そこから『トゥルース・オア・デア』をやってみます。
レッスン内容
このレッスンでは、ボタン入力の使い方を学び、LED表示を使って『トゥルース・オア・デア』ゲームを作ります。マイクロビットのAボタンを押して、『トゥルース』か『デア』か決めます。
レッスン目標子供たちは、次のことができるようになります。
- 自分で作ったパターンをLEDに表示する
- ランダムな数字(乱数)を作る
- 『もし…..なら….でなければ….(IF THEN ELSE)』ブロックを使う(条件処理)
- 二つのプログラミングブロックを同時に実行する
- ボタン入力を使うことができる
訳者注:原文では、LED表示が2回入っていましたので、翻訳ではボタン入力にしてあります。
ステップ1
このプログラムは、矢印を表示してマイクロビットが準備OKだと示して、ユーザーがAボタンを押すと、マイクロビットがランダムに『真実を言う』か『挑戦する』かメッセージを表示します。
訳者注:メッセージはカタカナ表示しかできませんので、プログラムでは『チョウセン』と『シンジツ』にしてあります。また、カタカナ表示ブロックを使うと、元々のプログラムでは上手く動作しないので、追加ロジックが入れてあります。手順中にその由補足します。
1-1.最初に矢印を表示するために、ブロック種類選択メニュー『基本』から『LED画面に表示』ブロックを選択します。『LED画面に表示』ブロック内の■をクリックするごとに■→□を繰り返しますので、以下のようにしてください。『最初だけ』と『ずっと』ブロックは新規プロジェクトを開くと最初からあります。以降のステップで使いますので、そのままにしてあります。
1-2.『LED画面に表示』ブロックをドラッグして、最初からある『ずっと』ブロックの内側にドロップします。
ステップ2
次は、ユーザーがボタンを押したら、ランダムなメッセージを表示する部分です。
2-1.ブロック種類選択メニューの『入力』から『ボタンAが押されたとき』ブロック選択します。
2-2.乱数を保存するための変数が必要ですので、ブロック種類選択メニュー『変数』から『変数を追加する…』ブロックを選択します。
2-3.変数名を入力するようメッセージが表示されますので、『ランダム』とします。
2-4.変数『ランダム』に乱数(0~1)を入れるためにブロック種類選択メニュー『変数』から『変数ランダムを0にする』ブロックを選択します。
2-5.『変数ランダムを0にする』ブロックをドラッグして、『ボタンAが押されたとき』ブロックの内側にドロップします。ワークスペースは以下のようになります。
ステップ3
3-1.Aボタンが押されたときに変数『ランダム』に乱数(0か1)を保存するために、ブロック種類選択メニュー『計算』から、『0~10までの乱数』ブロックを選択します。プログラミングエリアには以下のブロックがありますので、同じように並べてください。
3-2.『0~10までの乱数』ブロックをドラッグして、『変数ランダムを0にする』ブロックの0のところにドロップします。そして、『0~10までの乱数』ブロックの10を1にします。これで、0か1の乱数がランダムに保存されます。プログラミングエリアは以下のようになっています。
ステップ4
4-1.ブロック種類選択メニュー『論理』から、『もし…なら…でなければ…』ブロックを選択します。
4-2.『もし…なら…でなければ…』ブロックをドラッグして、『変数ランダムを0から1の乱数にする』ブロックの下にドロップします。ワークスペースは以下のようになります。
4-3.次に『もし…』ブロックで変数『ランダム』が0か1か比較するために、ブロック種類選択メニュー『論理』のくらべるから『0=0』ブロックを選択します。
4-4.『0=0』ブロックをドラッグして、『もし…』の右の真のところにドロップします。ワークスペースは以下のようになります。
ステップ5
5-1.ブロック種類選択メニュー『変数』から、変数『ランダム』ブロックを選択します。
5-2.変数『ランダム』ブロックをドラッグして、『0=0』ブロックの左の0のところにドロップします。これで、ランダムが0であれば『もし なら』のブロックを実行して、ランダムが1なら『でなければ』のブロックを実行します。ワークスペースは以下のようになります。
5-3.ランダムが0なら『シンジツ』のメッセージを表示して、ランダムが1なら『チョウセン』と表示することにします。カタカナ表示をするためには、カタカナ表示用のパッケージが必要です。以下の手順で追加してください。当手順は日本語版のみ
5-4.ブロック種類選択メニュー『カタカナ』から『文字列を表示“ ”』ブロックを選択します。ワークスペースは以下のようになります。
5-5.『文字列を表示” ”』ブロックの” ”の中に『シンジツ』と入力してください。『文字列を表示”シンジツ”』ブロックを右クリックして複写し、メッセージを『チョウセン』に変えます。それぞれをドラッグして、『なら』と『でなければ』の右にドロップしてください。ワークスペースは以下のようになります。
本来はこれで完成ですが、カタカナ表示できるようにした弊害だと思われますが、Aボタンを押した後メッセージが上手く表示できません。矢印とカタカナが交互に表示されるような動きとなり、メッセージが上手く読み取れません。推定原因ですが、英文字のメッセージ表示処理と『ずっと』ブロックの矢印表示処理は、 排他制御 💬(英文字メッセージ表示中は矢印表示しない)ができていますが、カタカナ表示処理はパッケージとして日本からの要望で追加していますので、うまく排他制御できていないと思われます。
以下の手順はプログラムで排他処理を追加しました。カタカナ表示中は矢印表示をやめるための処理追加です。カタカナ表示するときは、変数『ランダム』が0か1なので、矢印表示はそれ以外の時(プログラムでは9の時)だけ実行するようにしました。
ステップ6
6-1.ブロック種類選択メニュー『変数』から、『変数を0にする』ブロックを選択します。そのブロックの変数をランダムに変更してください。また、0を9に変更してください。それをドラッグして、『最初だけ』ブロックの内側にドロップします。ワークスペースは以下のようになります。
6-2.『最初だけ』ブロックの内側にドロップした『変数ランダムを9にする』ブロックを右クリックして複写し、そのブロックを『もし…なら…でなければ…』の下にドロップします。ワークスペースは以下のようになります。
6-3.ブロック種類選択メニュー『論理』から、『もし…なら…』ブロックを選択します。『show leds 矢印』ブロックを『もし…なら…』ブロックの内側に移動して、『もし…なら…』ブロックを『ずっと』ブロックに組み合わせます。ワークスペースは以下のようになります。
6-4.ブロック種類選択メニュー『論理』から、『0=0』ブロックを選択します。左の0は変数『ランダム』に、右の0は9に変更します。そのブロックをドラッグして、『もし』の右の真のところにドロップします。プログラム完成です。これで、カタカナ表示でも英語版同様に動きます。
チャレンジ
これでレッスンは終了ですが、チャレンジとして以下が紹介されていますので、挑戦してみてください。
- 何人のプレイヤーがいて、何番目がプレイしているか表示する
- 違う向きの矢印を追加する
- 矢印が回転するアニメーションを追加する
- 『シンジツ』か『チョウセン』が何回終わったかスコアを追加する
1については、次の記事で解答例を紹介します。
訳者注:当サイトでは、マイクロビットホームページにあるレッスンを順次紹介しています。私の注意不足で紹介順が適切ではありませんでした。こちらの目次記事を見ていただくか以下のリンクを参考にご覧ください。無線とシリアル通信についてはレッスンがありませんでしたので、作成しました。
micro:bit(マイクロビット)で学ぶ 1→micro:bit(マイクロビット)で学ぶ 2『温度のアクティビティー』→19『アンサリングマシン』→20『数当てゲーム』→ 5『サイコロ』→当記事→8『マジック8ボール』→21『ラブメーター』→3『じゃんけんゲーム1』→4『じゃんけんゲーム2』→7『マジックボタン』→無線の紹介→シリアル通信の紹介
最後まで記事をお読みいただきありがとうございます。
記事の改善に役立てたいと思いますので、よろしければアンケートにご協力ください。
コメントを書く