06.4角形の表示位置をランダムに決定(2002/05/02作成)

今回は,4角形を適当(ランダム)な位置に表示させます。
この4角形は,前回まで表示させていた4角形を落とす目標(ターゲット)となるものです。 前回同様,OPLを立上げ,以下のように入力しましょう。

PROC RND:
LOCAL x2%

REM -------Initialize-------
gBOX 160,160
RANDOMIZE MINUTE+SECOND

REM-------Draw Target-------
	x2%=INT(RND*140)+1	REM Target x Position(Random)
	gAT x2%,153		REM Target Position
	gFILL 20,3,0		REM Draw Target(FillBox)

GET
ENDP
以下のように表示されるはずです。
Random1 または Random2 など
起動するたびに,4角形の現れる横位置が変化します。

もう一歩
RANDOMIZE MINUTE+SECOND
本では,「RND関数で得られる乱数を発生させるための初期値を与える」などと書かれています。
私には,何をどうしているのか,よく分かりません。
こういう乱数の初期値設定と言うのは,他のプログラム言語では,私は見たことがありません。
「MINUTE+SECOND」というのが何を表しているのかも謎です。
が,これがないと,以下のRND関数で乱数(ランダムな値)を得ることが出来ません。
とりあえず,記述しておきましょう。

INT()
()の中の数値が小数をもつ場合,これを切り捨てて,整数にします。

RND
乱数を返します。
返されるのは,0以上1未満の浮動小数点数です。
例えば,0.1や0.2,0.003,0.58,などです。

INT(RND*139)+1
「INT」と「RND」の組み合わせで,整数の乱数を返します。
RNDで小数点数が返されます。
これに139を掛け算することによって,0〜1以上の数値を作り出します。
RNDで返される値の最大値は,0.999...で,これに139を掛け算すると,138.999...。
この数値を,INTによって整数にします。
すると,0〜139の中から,適当な整数が返されます。
これに+1で,1〜140から乱数が返されることになります。
今回表示する4角形の横の長さが20です。
つまり,乱数で最大の140が返された場合に,4角形が,一番最初に描いた160X160の4角形の1番右端に表示されることになります。

05.キーを離して,動く方向を変える<-->07.組み合わせてみる
OPLはじめの一歩
最初のページ