始める小学生からのプログラミング小学生からのプログラム:Scratchを理解するための12の技(4)こんにちは。前回までの記事で一通りの動きは作ることができているようになったと思います。今回の記事は、前回の動きのあるエフェクトの作り方をさらに進め、動画を作る、音を出す、スコアを記録するなど、更に機能追加する方法を学びます。ここまで来るとだいぶ慣れてくるのではないでしょうか。使い方に慣れてくると、新しい物を作るフェーズにいよいよ入ることができます。乱数でいろいろな音を出してみる最初の技は乱数を使うというものです。英語ではランダム(Random)と言いますが、コンピュータではよく乱数を利用してプログラムを記述することがあります。ゲームなどで敵を動かす場合に、予測できないような動きを作りたいとしましょう。その場合に、乱数を使って移動する速度や向きを決めることで予測できないような動きを作ることができます。このScratchでも乱数を使ったプログラムを作ることができます。例ではドラムの音を乱数で変化させることで、予測できない音をだすドラムを作ってみます。ドラムのスプライトを選択して、次の図に示すようなプログラムを作ってみてください。今までの連載を読んでいただいている方にはすぐできる内容だと思います。ここでのポイントは、演算のカテゴリにある「○から△までの乱数」というブロックを使っているところです。この○や△の部分の数値を変更することで乱数として作り出す値の範囲を決めることができます。このプログラムでは、Scratchで用意されている音の数が、18まであることから、1から18までの乱数というブロックを入れています。することで、毎回違う音がなるプログラムができているはずです。ご自身で動作を確認してみてください。技11.動画を作ってみよう次は動画を作る技です。みなさんは、パラパラ漫画というのをご存知でしょうか。いわゆるアニメなどの動画は基本的にはそうですが、絵を何枚も用意して切り替えていくことで絵が動いているように見えることになります。前回の記事において簡易的なものを作成しましたが、動きを作ってみたいと思います。最初はスプライトを選ぶ実際は自分で絵を描くといいのですが、絵を書くのは時間がかかることもあり、今回の例ではライブラリに用意されているスプライトを利用します。スプライトの中にはいくつかの動きを表現したものがコスチュームに入っているものがあります。いうスプライトには、図に示すように5種類のコスチュームが登録されています。これを利用して動きを作ってみることにします。動きをつけるには前回の記事でも示していますが、コスチュームを変える場合は、見た目のカテゴリにある、「次のコスチュームにする」を使います。図を見ていただくとわかるのですが、コスチュームの順番が動きの順に並んでいます。これを利用して次々とコスチュームを切り替えていくと歩いている絵に見えるのです。「ずっと」のブロックを使って図のように「次のコスチュームにする」を使ってみましょう。速い、速すぎる動かしてみるとわかりますが、かなり早くバタバタしている動きになっていると思います。秒待つ」をいれてみてください。これでなんとなく歩いている感じになったのではないでしょうか。動きの速さは自分で好きな様に調整できます。移動させてみよう次はこのスプライトを歩かせてみます。歩かせるのは、ここまで見ていただいている読者の方ならばすぐにわかると思います。動きのカテゴリにある「○歩動かす」を使います。単純に「○歩動かす」を使った場合、上のような感じで端の方にめり込んでしまいます。それを回避するために、「もし端に着いたら、跳ね返る」を使います。これもすでに紹介済みなのでこれ以上深掘りはしません。スコアを記録しよう最後の技ですが、スコアを記録するというのを考えてみます。ゲームなどでスコアを計算していくかと思いますが、スコアを記録するための方法がわかれば、自分でゲームを開発することもできるようになります。サメのゲームを作ろうここでは、サメが魚を食べるゲームを考えてみます。サメと魚をスプライトライブラリから選択していただきます。サメのスプライトで図に示すようなキー入力を受け付けてそれぞれ動かすようにしてみてください。このようにするとサメがいろいろな方向へ移動できるようになるはずです。スコアを付けるためには変数を使うそして、スコアを付けられるようにします。スコアをつけるためには、変数の機能を使います。変数は、数値を記録するための場所になります。その場所に対して名前をつけて管理します。この例では、「スコア」という名前の変数にしてみます。変数カテゴリのところにある、「変数を作る」を選びます。すると変数の名前を入力できるウィンドウが開きます。ここでは、スコアという名前をつけます。サメに動きをつけてゲームらしくしてみるこの変数を用いて、スコアを付けられるようにしましょう。このゲームでは、サメが魚に触れたら1ポイントゲットできるとします。動かすだけだとすぐに触れてしまうので、次のような動きを作ってみます。先ほども解説した乱数を使って、次の処理を繰り返すようにします。1から10の乱数の向きだけ右に回転して、5歩動かす。「魚」にあたったらその時は、点数を1点追加するそして、−100歩動かす(100歩戻す)もし端についたら跳ね返すという処理を実現します。図に示すようなブロックの形になります。これを動かしてみてください。酔っ払ったサメのような動きになりますが、くるくると回っているかと思います。魚まで距離があると辿りつけないので、先ほど追加した矢印カーソルを使って位置をずらして行くとヒットするようになるはずです。ここで大事なことこれで完成、と言いたいのですが、これだと少々問題があります。それは、1回目プレイしたあと、もう一度スタートした場合にスコアの値がそのままになっていることです。一般的にコンピュータのプログラムを作る場合、変数はどのような値が入っているかは定められていません。そのため、値をある一定の数になるように定めてあげる必要があります。これを専門用語では、「初期化(Initialization)」といいますが、この初期化をしてください。最初に変数の値を0にします。することで、スタートしたときにいつでもスコア0から始まります。図では、スコアのみではなく、サメの位置と向きに関しても初期化しています。このようにすることで毎回同じ条件でスタートするようになります。この初期化は基本的ですが、実は忘れる人が多いです。忘れると予期しない動きをして誤動作の原因になるので注意しましょう。まとめ4回に渡って書いてきた12の技の最後になりました。4回分の内容だけでもかなりのことが実現できるようになっているはずです。見ていただくだけでは実感がわかないと思いますので、ぜひご自分で体験いただくことをおすすめします。Web上で完結した開発環境ですので、インストールや環境設定に悩まされることはなく、スムーズに開発に移行できる点もメリットだと思います。今回紹介していない内容では、論理式や演算子の考え方、関数(ブロックを作る)の考え方、ペンの機能、カメラ画像の取得と利用、クローンがありますが、また別の機会にご紹介できればと思います。対象としたプログラミング&ロボット教室を開校しています。ご興味ありましたらぜひお問い合わせください。授業運営パッケージ弊社で実施している授業を取り入れたい方々向けに提供しています。