Scratchで雨のアニメーションを作ってみましょう。雨の中の風を表現するためには、どのようにすれば良いでしょうか。

変数「風の強さ」

変数について

変数を使うには、その変数に「名前を付ける」ことから始めます。

プログラミングでは物事の性質・状態を全て数値に置き換えて考える、という話を繰り返ししていますが、その数値を入れるために名前を付けた入れ物を「変数」と言っています。

と、このように僕は「変数」について説明しています。また、

「変数」カテゴリー内の「風の強さ」のチェックボックスにチェックを入れると、今の変数の値が表示されます。

そしてこの変数を、矢印キーで変えられるようにしましょう。

そうすれば、いわゆる「デバッグ(バグを取り除く)」するための環境が整います。

このリファレンスの通り、デバッグ環境を準備しましょう。また、条件分岐を使って、変数の最大と最小を決めておくと良いです。

「風の強さ」の使い道

変数とデバッグ環境は用意できました。あとは、この変数の使い道を考えます。

風の強さは、雨の表現の中でどのような影響を与えるでしょうか。風が吹いていると、雨は横から吹き込みますね。それから、雲も流れます。

  • 雨粒が横から吹き込む
  • 雲が流れる

これらの現象をプログラムで表現してみましょう。

雨粒の表現

雨粒が横から吹き込む表現の方法は幾つかあると思いますが、「10歩動く」のブロックを使っている場合には、雨粒の角度(向き)を変えると良いでしょう。

角度は、真下を向いているとき、180度と表現します。90度、270度はちょうど直角(真横)を表すので、もし左から風が吹いたら、150度〜170度ぐらいに傾けるのがちょうど良いと思います。

なので、「180 – 風の強さ」という式を、雨粒の降る角度にしましょう。

このままだと矢印キーを押したとき、急激に雨粒の角度が変わってしまうので、僕は「180 – 風の強さ / 2」という式に変えてみました。

雲の表現

前回、空に雲を描くことが宿題でしたね。これは、乱数とクローンを使って、様々な位置に雲を発生させるプログラムを考えれば良いでしょう。こんな感じです。

このプログラムに続けて、雲を風の強さに合わせて移動させるようにしましょう。

「x座標を [風の強さ] ずつ変える」と、すれば良いでしょう。

やはりこのままだとあっという間に雲が流されてしまいますので、僕は「x座標を [風の強さ] / 10 ずつ変える」という式に変えてみました。

条件分岐

雲が画面の左右の端に着いたとき、逆の端から現れるようにしましょう。これは「もし〜なら」という条件分岐を使います。条件式は、x座標が画面の端へ移動したときのことを式で表してみましょう。

だいたいこんな感じのプログラムになります。

実際にブロックを組み立てた作品を、以下のリンクから見ることができます。

https://scratch.mit.edu/projects/393895067/

これから先へ

傘を置く

傘を置いたら、その下には雨が降らないようにできますか。回答例はこちら。

雨が上がる

10秒経過したら、雨が止むようにしましょう。「調べる」のカテゴリーから、「タイマー」を取り出して使ってみてください。ヒントはこちら。

実際にブロックを組み立てた作品を、以下のリンクから見ることができます。

https://scratch.mit.edu/projects/393901365/

「雨」の表現は色々

「雨」という字を使った言葉はたくさんあります。それを調べて、自分らしい「雨」の表現をしてみるのも良いでしょう。

今回は「風の強さ」を変数にしましたが、「雨の量」なども変数にしてみたら、どんな表現ができますか。色々考えて、試してみてください。

ここまでお読みくださり、誠にありがとうございました。