ICT活用担当のyotaです。地域おこし協力隊として小学校やイベント等でプログラミングを教えています。今回でシューティングゲームは最終回。スコアの設定や自機、敵の当たり判定を作っていきます。
ゲームの中で値が変化するプログラムを考える
敵を倒すと得点を加算する必要があります。自機に敵が当たると自機のライフを減らす必要があります。
このように変化する値を使う場合は変数という機能を使います。
簡単に言うと値を入れておく箱です。箱に名前をつけてプログラムで箱の値を変えていきます。例えば得点を変数を使って制御する場合、ゲーム開始時には得点という変数に0を入れておきます。そして敵を倒すたびに10点を足していくことで得点が変わっていきます。
弾が敵に当たると得点を加算して敵が消える
まず最初に変数の得点を作成します。ブロックの中の変数で「変数を作る」から変数名に「得点」を入力します。
変数を作成すると変数ブロックの選択肢に「得点」が出てくるようになるため敵スプライトの🏳🌈が押されたときの下に得点を0にするブロックを挿入します。
続いて敵が弾に当たったら得点を10点加算して敵が消えるようにします。敵のスプライトでクローンされたときの中のずっとブロックの中に先のブロックを挿入します。
弾(Ball)に触れたら得点を10ずつ変えてクローンを削除します。
自機(キャラクター)のライフを設定する
まず「ライフ」という名前の変数を作成します。変数の作成方法は上記の得点と同じです。
プログラム開始時にライフの数を設定する必要があります。キャラクターの矢印操作のプログラムの初期処理にライフを3で設定します。
次に自機(キャラクター)が敵に当たった場合の処理を作っていきます。自機(キャラクター)に新しく「🏳🌈が押されたとき」のブロックから作っていきます。
ずっとブロックの中に敵に触れたらライフを-1ずつ変えてライフが0になったらすべてを止めるでプログラムを終了するようにします。
この中に「うーんと1秒考える」というブロックを入れています。このブロックはなぜ入れているのでしょうか?
ずっとは1秒間に何十回も動いています。コンピュータの処理はとても速いです。そのため人間の目で敵が触れたと思ってもコンピュータはその間プログラムを何十回と動かしているためあっという間にライフが減ってしまいます。
このブロックを入れることで「うーん」という表示が出ている間はライフが減りません。
プログラムの答えは1つだけではありません。他にもいろいろな方法はありますが、今回はこのようなやり方としています。
これでシューティングゲームの完成です。下記で実際に作ったゲームを遊ぶことができます。
シューティングゲームは今回で最終回です。実際にプログラムを作ってみてどうでしょうか。1つ1つのプログラムは難しいことはやっていないと思います。どのように作っていけば自分の思った通りにプログラムが動いてくれるのか、そういうことを考えて楽しみながら作っていけばプログラミング思考というものが身に付いていけるのはないかと思います。
コメント