スクラッチ-クラゲが増殖して動く

前回でクラゲの表示速度を変えて難易度を途中で変える処理を追加しました。

今回は難易度を変えるタイミングでもぐら(クラゲ)を増殖してみましょう。

もぐらたたきゲームでもよくあるたくさん一斉に出るようになるやつです。

増殖させるためにクローン機能を使います。

またプログラムを見やすくするためにブロック定義を使ってみましょう。

それではチャレンジしていきましょう!

クローン機能を使ってクラゲを増殖させよう

クラゲを増殖させるためにクローン機能を使ってみましょう。

クローンを作ってみる

『制御』エリアになる『自分自身のクローンを作る』ブロックを追加しましょう。

追加する場所は『もう怒ったぞーと3秒言う』の後に追加します。

自分自身のクローンを作る

自分自身のクローンを作る処理を追加したら動かして確認してみましょう。

スクラッチ-自分自身のクローンを作るを追加

クローンしたものが全く動きませんね。

作ったクローンに処理を追加する

クローンしたスプライトを操作するには『クローンされたとき』ブロックを使いましょう。

クローンされたとき

『クローンされたとき』ブロックと『ずっと』ブロックの中に入っているもの全てを複製してつなげてみましょう。

クローンされたときに処理を追加する

クローンされたときの処理を追加したら再度実行してみましょう!

スクラッチ-クラゲが増殖して動く

クローンしたクラゲも動くようになりましたね。

プログラムをみやすくするためにブロック定義を使ってみよう

クローンを作ったことでプログラムも複製したので全く同じプログラムができていますね。

この状態のままだと何かプログラムを修正したいと思った時に両方修正しないといけなくなるので大変ですね。

これを避けるために『ブロック定義』と言ったものを使ってみましょう。

ブロック定義とは自分のオリジナルブロックを作ることができます。

何度も使うような処理などに名前をつけてあげてオリジナルブロックを作ってみましょう。

『ずっと』ブロックを全部1つのブロック定義しても良いのですがクローンとの動きを変えたい箇所もあります。

少し面倒ではありますが細かくブロック定義をしていきましょう。

まめ知識

プログラミングにおいて処理を抜き出して何度も使えるようにするのをメソッド、関数、サブルーチンなどと呼びます。

メソッドとして処理を書く時にはプログラムが大きくなりすぎないことが絶対の基本です。

行数でいうと10行以内には収まるようにしたいです。

またできる限り内容が複雑でないことが望ましいとされます。

この複雑性や10行などのチェックを人がやっていると膨大な時間がかかってしまいます。

このようなチェックをするプログラムがあり一瞬で行ってくれます。

このようなチェックを『lint(リント)』と呼んでいます。

新しく作るブロック定義は以下の3つを作ってみましょう。

  • 表示するもしくは隠す
  • 表示回数が半分になったら表示速度を早くする
  • ゲーム終了

表示するもしくは隠すブロックを作る

まず『ブロック定義』エリアの『ブロックを作る』ボタンをクリックします。

ブロック名を『表示するもしくは隠す』としましょう。

このつける名前はみた時に呼び出すと何が起きるのかがすぐにわかるようにするのがポイントです。

表示するもしくは隠す

ブロック定義が作成できたら処理を追加しましょう。

表示すると隠す処理を行っている分岐を抜き出して『表示するもしくは隠す』ブロック定義に追加しましょう。

表示するもしくは隠すブロック定義

代わりに元のプログラムに『表示するもしくは隠す』ブロックを追加しましょう。

表示するもしくは隠すブロックを追加

クローンの方にも同じように追加します。

表示回数が半分になったら表示速度を早くするブロックを作る

同様の手順で0.7秒待つと1秒待つの分岐処理を抜き出して新しいブロック定義を作りましょう。

表示回数が半分になったら表示速度を早くするブロックの処理

代わりに元のプログラムに『表示回数が半分になったら表示速度を早くする』ブロックを追加しましょう。

表示回数が半分になったら表示速度を早くするブロックの処理を代わりに追加

クローンの方にも同じように追加します。

ゲーム終了

最後にゲーム終了処理をブロック定義にしましょう。

手順は今まで同様です。

ゲーム終了のブロック定義

ブロック定義を作ったら元のプログラムとクローンのプログラムに作ったブロック定義を追加しましょう。

ゲーム終了のブロック定義を追加

すごくすっきりしましたね!

最後にクローン側のプログラムにある自分自身のクローンを作る処理は削除しておきましょう。

クローン側のプログラム

ここまで出来たら動作確認をしてみましょう。

処理を追加してるわけではないのでクローンを作った時と同様の動きになっていれば問題ありません。

まとめ

ブロック定義を使い処理を抜き出すことで修正が簡単になります。

例えばもっと難易度を上げるために表示速度を早くしたいなぁと思ったとします。

その場合には『表示回数が半分になったら表示速度を早くする』ブロックにある数字0.7を0.5とかに変えてあげるだけで大丈夫です。

ブロック定義を使っていない場合は元のプログラムとクローンのプログラムの2箇所を同じように修正する必要がありました。

今回でもぐらたたきゲームは完了になります。

わからないことがあれば何度も繰り返し作ってみましょう。

最終的には全く何もみずにプログラムが作れるようになることを目指しましょう。

それではお疲れ様でした!

おすすめの記事