この動画は、スクラッチの「乱数」ブロックを使ってプログラミングした作品です。
数字が出現する位置や数字の濃淡など、ランダムな動作をさせるために6つの乱数を使っています。
今回は、この「乱数」ブロックの使い方や用途を紹介します。
使い方を理解して、ゲームや動画など自分のプログラムで使ってみてください。
乱数はプログラミングでどのようなことに使うのか
乱数とは、「〇から〇までの数字が不規則かつ等確率で現れるように配列されたもの」です。
事象の発生に法則性(規則性)がなく、予測が不可能である動き(ランダムな動き)を作るために使います。
たとえば、サイコロの数字は1~6の整数という数字は決まっていますが、サイコロを投げた時に出る数字には法則性(規則性)がなく、予測が不可能です。「1→2→3」というような規則はありません。
乱数は、プログラミングで次のような動きを決めるために使われます。
- 表示位置(x座標、y座標)
- サイコロの出目
- じゃんけんで出す手
- おみくじやクイズの番号
スクラッチの乱数ブロックの使い方
乱数を発生させるためには、「演算」の【()から()までの乱数】ブロックを使います。
他のブロックと組み合わせることによって、作りたい動きをプログラミングします。
使い方は簡単。「()から()」の引数には数字を入れて範囲を指定するだけです。
プログラムを実行する度に、指定範囲から1つの数字が選ばれます。
乱数ブロックで「整数」を発生させる
乱数ブロックを利用して「整数」を発生させたい場合は、2つの引数に整数を指定しましょう。
マイナス値も指定できます。
スプライトの表示位置(x座標、y座標)やサイコロの出目などで乱数を利用する場合は、整数を利用しましょう。
乱数ブロックで「小数」を発生させる
小数の計算問題を作成する場合など、乱数で小数を生成したい場合もありますよね。
乱数ブロックを利用して「小数」を発生させたい場合は、引数のどちらか一方に小数を指定しましょう。
引数がともに整数の場合でも、1.0のように小数点以下をつけて指定すると小数が発生します。
整数と同じように、マイナス値も指定できます。
小数を指定した場合、実際に発生する数字は小数点以下16桁までです。
しかし、プログラム実行時、変数などに代入した場合は小数点以下6桁に丸まり、スクリプト内では小数点以下2桁に丸まります。
乱数ブロックの使い方と特徴が分かったところで、作品を作っていきましょう。
乱数を使って作品を作る
乱数は発生させるだけでは意味がありません。
乱数ブロックが、どのように他のブロックと組み合わされるのか見ていきます。
表示位置(座標)を決める
乱数を使って、スプライトの表示位置(座標)を決めましょう。
サンプルでは「Cat Flying」というスプライトを使いましたが、好きなものを選んでください。
スプライトの表示位置をランダムに決めるためには、x座標とy座標をランダムに決める必要があります。
乱数ブロックを2つ使い、「x座標を()、y座標を()にする」ブロックと組み合わせましょう。
スクラッチのステージは、x座標が-240~240、y座標が-180~180と範囲が決まっています。
乱数ブロックには、このステージの範囲を指定。
実行すると、次の画像のようにステージのどこかに表示させることができます。
計算式を作る
乱数を使って、計算式を作りましょう。
サンプルでは「Cat」というスプライトを使いましたが、好きなものを選んでください。
「スプライトが『〇 + 〇 = ?』という問題を出す → ユーザーが解答する」を繰り返すプログラムを作ります。
乱数ブロックを使うことで、次の画像のように、毎回違う問題を出題することができます。乱数の範囲によって計算の難易度が変わりますので、調整してみてください。
ユーザーの解答と正解を比較するために変数を使いましたが、乱数は、変数と合わせて利用されることも多いです。
サイコロの出目を決める
乱数を使って、サイコロの出目を決めましょう。
まずは、サイコロのコスチュームを作ります。
スクラッチにはサイコロのコスチュームがありません。サンプルでサイコロ画像を準備しましたので、ダウンロードして解凍してください。
スプライトの「コスチューム」タブを選び、左下の「ネコ」マーク→「コスチュームをアップロード」を押して、解凍したファイルをすべてアップロードします。
※アップロードした後、1~6の順に並び替えて、不要なコスチュームがあれば削除します。
サイコロの目は1~6ですので、乱数ブロックの範囲を(1)から(6)の整数で指定してください。
コスチュームの名前と数字が対応しているので、これだけでサイコロの目が実行するたびに変化します。
じゃんけんで出す手を決める
乱数を使って、じゃんけんで出す手を決めましょう。
決まった手を表現するために、結果に合わせて次の2つのアクションを行います。
- コスチュームを変更する
- 言葉で表示する(「言う」ブロック)
最初に、「グー」「チョキ」「パー」3つのコスチュームの準備から。
「Bat」というスプライトを選択します。
「コスチューム」タブを選択し、コスチュームに「グー」「チョキ」「パー」と名前を付けます。見やすいように並べ替え、不要なコスチュームは削除しておきましょう。
次に、サイコロと同じように乱数を発生させてコスチュームを変更します。しかし、乱数は数字をランダムに発生させるだけなので、うまくコスチュームが切り替わりません。じゃんけんのように数字以外を扱う場合は、数字と項目(じゃんけんで出す手)を対応させるために次のようなリストを作る必要があります。
数字 | 項目(じゃんけんで出す手) |
---|---|
1 | グー |
2 | チョキ |
3 | パー |
まずは、じゃんけんリストを作りましょう。
じゃんけんリストに、「グー」「チョキ」「パー」を追加。
これで、数字とじゃんけんで出す手の対応表ができました。
最後に、乱数ブロックの範囲に(1)から(3)の整数を指定して「じゃんけんで出す手」を決めます。
今回は2つのアクションを行いますので、「じゃんけんで出す手」変数をつくります。
変数に乱数の結果(「グー」「チョキ」「パー」)を入れることで、2つのアクション「コスチュームの変更」「言葉の表示」で同じ値を利用します。
実行すると、以下の画像のように結果が変わります。
乱数の結果を使って複数の動作を作る場合は、今回のように変数を活用してください。
おみくじやクイズの出る番号を決める
乱数を使って、おみくじやクイズの出る番号を決めましょう。
スプライトは好きなものを選んでください。早速、ブロックを並べていきます。
じゃんけんの出し方を決めるように、おみくじやクイズも数字ではありません。じゃんけんと同じように、リストと組み合わせて使います。
じゃんけんとの違いは、リストの数が決まっていないこと。
リストにおみくじやクイズを追加するたびに乱数の範囲を変更するのは面倒なので、リストの項目数を使って範囲を指定します。
乱数ブロックの範囲には、(1)から(リストの項目数)と指定するとメンテナンス性が良くなります。
実行すると、次の画像のようにおみくじが表示されます。
スクラッチで乱数をテーマに作品を作る
スクラッチで「乱数」をテーマにしたこちらの作品は、何に乱数を使っているのか分かりますか?
答えは次の6つです。
- 数字の種類(コスチューム)
- サイズ
- 透明度
- 角度
- 表示場所(x座標)
- y座標の移動範囲
乱数がどのように使われているのかスクリプトを詳しく見ていきます。
乱数作品で使う要素
ステージは黒い背景のみです。
スプライトは1つで、「0~9」のコスチュームをつくります。
乱数1:数字の種類(コスチューム)
作品では0~9の数字がランダムに表示されます。
コスチューム名に合わせて、0~9の乱数が発生するよう指定します。
乱数2:サイズ
出現する数字が同じサイズだと「変化」が分かりづらいので、違いを印象付けるためにサイズもランダムにします。
範囲は作品を見ながら微調整をします。この作品では「5~10」にしました。
乱数3:透明度(幽霊効果)
「変化」を更に印象付けるため、数字の透明度もランダムに。透明度を上げると遠近感も表現でき、奥行が出ます。
スプライトを透明化するためには、「幽霊」効果。幽霊の効果が0の場合は不透明(用意したコスチュームそのまま)で、100の場合は完全に透明になります。
作品では「0~70」に設定しました。
乱数4:角度
「変化」を印象付けるために、最後にもう一つ。
角度も変えましょう。
乱数5:表示場所(x座標)
数字の印象を変えた後は、表示させる場所(x座標)を決定。
端から端まで表示させるため、x座標の範囲「-250~250」を指定しています。
これで、数字を表示する状態と場所が決まりました。最後はクローンを作り、作品のように数字を動かしましょう。
乱数6:y座標の移動範囲
クローンされた後は、数字をy軸方向に動かします。
表出する数字で横に伸びる帯の印象を作りたかったので、y座標の移動範囲は「-50~50」と決めました。
しかし、すべての数字が同じ範囲を動くと不規則な印象が薄れてしまう。
そこで、数字によって移動範囲が変わるように、変数「移動範囲」をランダムにします。
変数「移動範囲」で決まるのは、y座標0からの上下の移動範囲。「移動範囲」が20の場合は、y座標の移動範囲は「-20~20」となります。
まとめ:乱数で作る不規則性を作品に活かす
作品を作るとき、決まった動きが必要な場合と、少し動きに変化をつけたい場合がありますよね。「乱数」ブロックを使うことで、作品にいつもと違った変化を与えることができます。
不規則な動きを生み出す「乱数」機能は、あなたの作品にどう活かせるでしょうか?
いろんな活用方法を考えて、作品に組み込んでみてください。