micro:bitで簡単なゲームを作ってみましょう。
今回はシューティングゲームです。
シューティングゲームに必要な基本的な動きを学ぶことができます。
これを応用して、Scratchでストライプを動かしてきれいなゲームにするのも良いでしょう。
5分もあればコピーできますのでぜひ試してください。
遊び方
LEDの一番上の列で点灯しているのが敵です。
LEDの一番下の列で点灯しているのが自分です。
敵は左から右へ移動します。
自分はAボタンで左へ移動、Bボタンで右へ移動します。
A+Bボタンでミサイルを発射します。
敵にミサイルが当たると音楽が鳴ります。
ミサイルは自分から上に向かって飛んでいきます。
プログラム解説
初期化
まずは変数の初期化です。
敵の初期位置、自機の初期位置とLEDの点灯、効果音のボリュームを決めます。
敵は左から右に移動させる予定で、初めは出現していないことにするので-1の位置に隠しておきます。
自機は真ん中に表示させます。
敵の動き
敵は1秒ごとに右に移動していきます。
敵の位置は一番上の行を左から右に移動します。
今表示しているLEDを消したら、一つ右のLEDを点灯します。
一番右まで行ったら(4より大きくなったら)左(-1)に戻します。
Aボタンを押したら左に移動
Aボタンを押したら自機の位置を左に移します。
今点灯しているLEDを消して一つ左のLEDを点灯します。
ただし、画面から消えてしまわないように0より小さくならないようにします。
Bボタンを押したら右に移動
Aボタンと反対の動きを作っています。
ミサイル発射と当たり判定
A+Bボタンを押したときにミサイルを発射します。
自機の場所から上向きにLEDを点灯させていきます。
動きは敵や自機と似ており、点灯と消灯を繰り返しています。
0.2秒間隔で上に移動していきます。
点灯する場所は自機の一つ上(3の場所)から開始しています。
カウンタ=0時に当たり判定を計算します。
カウンターが0になったとき、実際にはまだy=1の場所を点灯した状態です。
この時y=0の場所に敵(LEDが点灯)が居たらヒットしたと判断して音楽を鳴らします。
仕様変更があったようで、「メロディを開始する」ブロックが使用できなくなったようです。
「メロディ(上級)」の「鳴らす」ブロックを使って代用してください。
コメント
A+Bボタンの時、自機の上からたまが出るのではなく、1番左の端からしか出ないのですが、どうすればいいですか。あと、メロディを開始するのブロックがない場合、どうすればいいのですか
ご覧いただきありがとうございます。
作られたプログラムを見てみないと正確にはわかりませんが。
一番はしからでないという事は変数「自機」の値がおかしいのだと思います。
AまたはBボタンで自機の位置を移動できるのであれば、「ボタンAが押されたとき」「ボタンBが押されたとき」のプログラムは正しいと思います。(移動ができなければこのブロックに誤りがありそうです)
あとは、玉の発射位置は「ボタンA+Bが押されたとき」のブロックで変数「自機」の値で決めています。
このブロックを見直してみてください。
「メロディを開始する」ブロックは仕様変更があったのか無くなったみたいですね。
メロディ上級の「鳴らす」ブロックを使ってみてください。
「鳴らす メロディ ジャンプアップ バックグラウンドで一度だけ」
のブロックを作ってみてください。