みんなこんにちは!
「Mr. bunのおうちで、もっとプログラミング」では「川のごみとりゲーム」を作っているよね。でもただ「ごみ」を取るだけじゃつまらないから「ごみ」を取るたびに「点数」をふやせたら楽しいよね。ということで今回は「ごみ」を取ったかどうかを見る「当たり判定(はんてい)」というのを加えて、「ごみ」に当たったら「点数」をふやしていこう!
これが今回の目標だ!
プログラムの目的は
ボタンA,Bでスプライトを動かして
「ごみ」スプライトに当たったか判定し
当たれば点数がふえる
というものだ。
まず、これが前回のプログラムだったね。MakeCodeを開いてみてこのプログラムが残っているか見てみよう。「川のごみとりゲーム」という名前のプロジェクトだよ!
前回は「ごみ」を川に流すだけで終わってしまったけど今回はそれを取るスプライトが必要だね。目標を見ればわかるように、micro:bitのボタンAとボタンBを使って動かせるロボットのようなものが必要だから、「ごみとりロボ」というスプライトを作ろう!
ステップ1
「ごみとりロボ」スプライトを作りボタンA,Bで動かせるようにする
目標を見れば分かるように、最初「ごみとりロボ」は川の下の真ん中で「ごみ」を待ちかまえているね。ということで「ごみとりロボ」スプライトを川の下の真ん中に置かなければいけないけど、それには前回学んだX,Y(リンクを貼る)の考え方を使えばいい。Xは横方向
の位置でYはたて方向の位置だったから、川の下の真ん中に置くには
X=2
Y=4
にすればいいね。そして、「ごみとりロボ」はボタンAをおしたら左に動いてボタンBをおしたら右に動くという「横方向」の動きをするから、
ボタンAをおす→Xが1へる
ボタンBをおす→Xが1ふえる
となるようにプログラミングをして行こう!
レッツコード!
- ツールボックス「変数」を開き、「ごみとりロボ」という変数を追加する
- 「ごみとりロボ」をXが2でYが4のスプライトにする(やり方は前回のやり方と同じだよ)
- ツールボックス「入力」から「ボタンAが押(お)されたとき」と「ボタンBが押されたとき」を取ってきてワークスペースに置く
- ツールボックス「ゲーム」から「『スプライト』を1ドット進める」というブロックを持ってきて「ボタンA/Bが押されたとき」ブロックの中にそれぞれ入れる
- 3で持ってきたブロックの「スプライト」という部分を「ごみとりロボ」に変え、「ボタンAが押されたとき」の中にある方のブロックは「『ごみとりロボ』を-1ドット進める」というブロックに変える
- 4と同じように、「『スプライト』を1ドット進める」を「ボタンBが押されたとき」の中に入れて「スプライト」という部分を「ごみとりロボ」に変える。
さあ、ダウンロードしてみよう!これで「ごみとりロボ」が動くようになったね。
でもこれだと、「ごみとりロボ」が動くだけで、「ごみ」に当たっても「点数」がアップしていない…
次のステップでは、「ごみとりロボ」が「ごみ」に当たった時に「点数」をアップさせよう!
ステップ2
「ごみとりロボ」が「ごみ」に当たった時、「点数」を1アップさせる
ツールボックスの「ゲーム」には「スプライト」どうしが当たったかどうか判定してくれるブロックと、「点数」をふやしてくれるブロックがあるから、それを使っていく。じゃあどこで当たり判定をするかというと、「ごみとりロボ」は「ごみ」が川の一番下に来ているとき、つまり「ごみ」のYが4の時にだけ当たるから、前回作った「もし『ごみ』のYが4なら」というところで当たり判定をしよう。そこで、もし「ごみとりロボ」が「ごみ」に当たっていたら「点数」を1アップさせればいいんだ。
レッツコード!
- ツールボックス「論理(ろんり)」の中から「もし」ブロックを取って来て「もし『ごみ』のY=4なら」ブロックの中の1番上に置く
- ツールボックス「ゲーム」から「スプライトが他のスプライト~にさわっている」を1で取ってきた「もし」ブロックの「真」の部分に入れる
- 2で取ってきたブロックの「スプライト」を「ごみとりロボ」に変え、ツールボックス「変数」から「ごみ」を取ってきて「他のスプライト」の右の空白のスペースに入れる
- ツールボックス「ゲーム」から「点数を1だけ増やす」というブロックを持ってきて3で作った「もし」ブロックのなかに入れる
さあ、これで完成だ!ダウンロードして「ごみとりロボ」を動かしてみよう!
最初に見せた目標のようにロボットが「ごみ」に当たるたびに、LEDがいつもとはちがう光り方をするはずだ。そうなっていれば当たり判定がうまくできているということだよ!
さあ、「ごみ」を取ったら点数を上げるところまではうまくいったね。でも、これだとゲームとして完成していないね…次回の「Mr. bunのおうちで、もっとプログラミング」のコーナーでは「プレイ時間」「点数をLEDに出す」という機能(きのう)をつけて、このゲームを完成させよう!