初心者のためのゲームプログラミング入門

プログラミングとゲームの杜

初心者のためのプログラミング入門 & ゲームプログラムの作り方入門

子どもでもわかる Scratch 入門

21.インベーダーゲームを作ろう その3

 

[ 20.インベーダーゲームを作ろう その2 ] の続きです。

敵を並べて表示したあと、左右に動くようにしました。
しかし、その仕組みにはバグがありましたね。その対処から始めます。

 

 

反転処理のバグを取ろう

いま、敵が端まで来ないで反転するバグがあります
どうして途中で反転してしまうのでしょうか?
実は、ちゃんと右端まで来ていたのでした。

 

隠しているオリジナルの Goboを見えるようにします。

Goboのオリジナルを見えるように変更

 

実行してみると、オリジナルの Gobo が右端に来たとき反転していました。

Goboのオリジナルが右端に来たとき反転していた

このバグは反転処理で、オリジナルとクローンを区別せずに実行していたため発生していました。
正確にいうと、隠していた Gobo も反転処理していたことが原因です。

 

バグを直すために、隠す敵と表示している敵を区別します。
まずは敵の表示という変数を作ります。

作業は必ず Gobo を選択した状態で作ります。
このときこのスプライトのみを選択しましょう。

敵の表示という変数を作る

 

表示していても邪魔なので、敵の表示のチェックを外します。
他の変数も必要なければ外し、見たいときにチェックを入れましょう。

敵の表示のチェックを外す

 

作業の前に、追加した表示するを取り除いてください。

それでは表示中の敵と隠している敵の処理を分けます。
変更点は3つあります。

表示中の敵と隠している敵の処理を分ける

 

変更点にあるこのスクリプトを止めるすべてを止めるを変更して使います。

このスクリプトを止める命令の作り方

 

変更内容を見てみましょう。

まず、初期化処理です。
50回繰り返すの前に敵の表示を0にするを追加します。

次に表示するものを指定します。
クローンされたときの表示するの後に敵の表示を1にするを追加します。

隠すものの場合、移動処理を止めます。
移動指示を受け取ったときもし敵の表示が0ならこのスクリプトを止めるを追加します。

 

正常に動くか実行してみましょう。
ステージの端から端まで敵が移動するようになったら成功です。

 

 

敵を侵攻させよう

敵を侵攻させます。
侵攻とはプレイヤーに向かって移動することです。

侵攻のタイミングは、敵がステージの端に来たときです。
つまり反転処理をしたあとで侵攻処理を行います。

 

まずは新しいメッセージを作ります。

侵攻という新しいメッセージを作る

 

侵攻のメッセージを送る側と受け取る側を作ります。

侵攻のメッセージを使った処理

反転処理の中で侵攻のメッセージを送ります。
1秒待つことで横移動と同じリズムにします。

侵攻を受け取ったときのあと、隠しているものは処理を止めます。
表示しているものだけ、y座標を-15変えます。

 

 

スペースキーでビームを撃つ

スペースキーが押されたら自機からビームを発射する仕組みを作ります。

beam というスプライトを使います。

侵攻

 

このスプライトには、beam という名前のビームの絵と
beamEx という爆発のコスチュームがあります。
プログラムでは beam を使います。

ビームと爆発のコスチュームが用意されている

 

ビームを撃つプログラムです。

スペースキーが押されたらビームを撃つ

 

自機の座標を得るには調べるカテゴリのステージの背景を使います。
まず左側でplayerを選択してから、右側もセットします。

調べるを使って他のスプライト座標を取得する

 

プログラムの説明です。

コスチュームは beam にします。
このスプライトは爆発でも使うので、しっかり初期設定します。

最背面に移動するでは、表示優先を下げています。
敵の絵の上をビームが移動するのはみっともないですよね。

ビームの移動では、y座標を10ずつ増やします。
自機の位置から画面上まで330ぐらいなので、33回繰り返ししています。

 

実行してみましょう。

画面が表示されないときはここをクリック

 

スペースキーを押してビームがステージの上部まで届くかチェックしましょう。
だんだんインベーダーゲームっぽくなってきましたね。

 

次回に続きます。