■五年生二学期■

 では早速、hensu.pflを開いてください。
ファイルリストのID0008を4つ複製し、「さんの運勢は」「大吉」「小吉」「凶」と書き換えます。  それらをイベントリストに↓のように追加します。
「ラベル」や「アクション 停止」も同じように挿入してください。


 次にフレーム7のスプリクトに↓のようにRフレームアクションを書き加えます。


 当小学校では、頭文字にjが付いているのは変数ですから、
jRansuは当然変数としてネーミングしたものだということは判りますね。

◆乱数◆
 サイコロを振って、出た数によって分岐を決めるようなことができるのが乱数(ランダム)です。

 乱数を取得するための指示式は↓です
Math.floor(Math.random()*b)+a;
(aとbは整数)
この式によって、a〜a+b-1の整数をランダムに得ることができます。

 言い換えると
aは乱数の最低値
bは乱数の幅ということになります

(例) Math.floor(Math.random()*5)+1なら、1〜5
Math.floor(Math.random()*3)+7なら、7〜9

 丸覚えでいいですが、どうゆう仕組みになっているかを知りたい人だけ↓を読んでください。

Math.random()は「0.0〜1.0の乱数を発生する」というメソッドです。

∴Math.random()*bは、それに*という演算子でbと掛け算していますから、「0.0〜b.0の乱数を発生する」になります。

Math.floor()は「小数点以下を切り捨てて整数化する」というメソッドです。

∴Math.floor(Math.random()*b)は、「0〜bの整数の乱数を発生する」になります。

そしてMath.floor(Math.random()*b)+a;は、それにaを足し算していますから、
「a〜a+bの整数の乱数を発生する」という指示になります。

しかし、Math.random()で1.0が発生する確率はほぼ0%ですので、
実際には「a〜a+b-1までの整数の乱数を発生する」になるわけです。

注意:今までは「小数点以下を切り捨てて整数化する」するにはint()メソッドが使われていましたが、
今後のサポートが保障されていないため、新しい表記法であるMath.floor()メソッドを使うことを推奨します。



 つまりjRansu=Math.floor(Math.random()*3)+1;は、
「変数jRansuは1〜3の整数の乱数を取得する」という意味になります。

 では次にフレーム19のスプリクトを↓のように書き換えます。


 &&は「かつ」という意味の比較演算子でした。
else if(){}は、前述されたif文の条件式が満たされなかったときの第二第三…候補のASです。
 いくつかに当てはまる場合は、先に書かれた方が有効になります。

 つまりカウントが0以下になったら
名無しさんは、ラベル『爆発』にジャンプ
乱数が1なら、ラベル『大吉』にジャンプ
乱数が2なら、ラベル『小吉』にジャンプ
乱数が3なら、ラベル『凶』にジャンプ

 上の方が有効ですから、名無しさんは乱数がいくつであっても爆発します。

 上の水色の部分を読んだ人にだけ判る話ですが、
さらにラベル「奇跡」を作り、
else if(jCount<=0&&jRansu==4){this.gotoAndPlay("奇跡");}
なんてスクリプトを書き加えるのもシャレ心があっていいかもしれません。

 また、本当に奇跡が起きて乱数4が出たとしたら、どのラベルにもジャンプしないわけですから、
jRansu==3はjRansu<=4と書いてそれを予防するべきだという考えもあります。

 …なんて、理論好きな人にとって興味深い話を書きましたが、
じつはMath.random()が発生させられる乱数の1.0とは=0.999999…のことなので、
乱数4が出ることはありません。
1/3=0.333333…だから3/3=0.999999…という考え方と同じです。

 というわけで、
「コンピューターのくせに『ほぼ0%なので無視していい』なんていう論理はないだろう」
…と思った人は安心してください。
 ついでに書くと、コンピューターで使われる二進法では十進法の0.999999…という小数も導き出されません。 なぜかはここでは書きませんが、ヒントとして十進法の0.333333…は三進法の0.1とだけ書いておきます。



 今回は使いませんでしたが、
else{}は、 前述されたすべてのif文とelse if文が満たされなかったときのASです。
ですから条件式を入れるための()もありません。

(例) if(jRansu==1){this.gotoAndPlay("大吉");}
else{this.gotoAndPlay("大凶");}
 ↑の意味は「jRansuが1のときはラベル『大吉』へ、それ以外のときはすべてラベル『大凶』へジャンプ」です。


◆トレース◆
 フラシュを演出するためではなく、フラッシュの制作を手助けするASもあります。

 現在制作中のフラッシュは、乱数である変数jRansuによってラベルにジャンプさせているわけですが、
実際のjRansuの数値はフラッシュ画面には表示されません。
 どこのラベルに飛んだという結果からしか、jRansuの数値を推測することができないのです。

 制作時には、ちゃんと変数の値の通りにフラッシュが作動しているかを確認する必要があります。
それを確認するためのASがtrace()アクションです。

 では↓のように、フレーム7のスプリクトに↓のようにRフレームアクションを書き加えます。


 次に、パラフラの左上のプレビュー⇒トレースウィンドウを表示を選択してください。
↓のような画面が開きます。


 プレビューするとその度に、トレースウィンドウにjRansuの値が書き出されます。


 トレースウィンドウはパラフラによって制作時にだけ表示できるもので、trace()はフラッシュ上ではなんのコマンドも下しません。
制作を手助けするためだけのアクションなわけです。

 それでは、上書きしてください。
 ここまでのフラッシュです↓。


◎プロジェクトファイルsample52.pfl

 二学期はこれで終了です。

五年生三学期へ

TOPへ

inserted by FC2 system