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
以下のように表示されるはずです。
または
など
起動するたびに,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はじめの一歩
最初のページ