雨 (2)

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/
「雨」の表現は色々
「雨」という字を使った言葉はたくさんあります。それを調べて、自分らしい「雨」の表現をしてみるのも良いでしょう。
今回は「風の強さ」を変数にしましたが、「雨の量」なども変数にしてみたら、どんな表現ができますか。色々考えて、試してみてください。
ここまでお読みくださり、誠にありがとうございました。