隕石を発生させる処理

次に隕石を発生させるための処理について説明します。隕石を発生させるための処理は関数startMeteo()で定義してあります。この関数には1つだけパラメータが渡されます。このパラメータは数値で、この数値が配列の番号に対応しています。つまり、このパラメータを参照番号として配列変数mx, my, mFlag, mOffset, mSpeedの5つに指定します。

mx, my配列にはランダムで隕石の位置を設定します。乱数はMath.random()で発生させることができますが、発生される乱数値は0以上、1未満の小数値になります。そこで、乱数値に200などの値を掛け算します。ただ、この時点では小数値なのでMath.floor()を使って整数化します。

mOffsetやmSpeed配列変数も同様に乱数を使って指定します。mOffsetの場合は整数化はせずに小数値を利用します。小数値を加算していくことで、少しずつ隕石が動くようになるためです。

最後に隕石が出現したことを示すmFlag配列変数にtrueを設定すれば完了です。この時点では隕石の表示は行いません。隕石の表示は隕石を移動させる処理の中で行うためです。

ゲーム開始直後の画面

コード03

        function startMeteo(n){
            mx[n] = Math.floor(Math.random() * 220) + 50;   // X座標を設定
            my[n] = Math.floor(Math.random() * 30) - 30;    // Y座標を設定
            mOffset[n] = (Math.random() - 0.5 ) / 4;    // 左右の移動量(オフセット)を設定
            mSpeed[n] = Math.random() * cnt + 1;    // 落下速度を設定
            mFlag[n] = true;    //  隕石が存在することを示す
        }