« [奮闘記]文字を動かしてみるのだ(その2) | トップページ | [奮闘記]星空を一気に表示するのだ »

[奮闘記]星空を描いてみるのだ

なんかこれはBASICでもやった記憶があるぞ。乱数を発生させて、適当に点をばら撒くってやつだな。けっこう神秘的な雰囲気になるんだよね、うん。早速やってみよう。


CLS 4
WIDTH 600,400,100,50
RANDOMIZE

REPEAT 1000
RND X,600 : RND Y,400
RND R,255 : RND G,255 : RND B,255
COLOR R,G,B
PSET X,Y

LOOP

STOP

なんかめちゃめちゃいっぱい新しい命令でてきたね^^;

CLS (0~4の数値)
画面をクリアする。0だと白、4だと黒、その間はグレー。

「星空」だから背景が黒じゃなきゃ不自然。っつーわけで、最初にウィンドウを黒でクリアすることにした。BOXFで塗りつぶしてもいいんだろうけどね・・・。

WIDTH (ウィンドウの横幅),(縦幅),
(ウィンドウを表示させるx軸の位置),(y軸の位置)
ウィンドウの大きさと位置を指定する。

乱数を発生する範囲を決めるため、ウィンドウの大きさも指定。そうしないと、星の無い空間とかできちゃうもんね。ウィンドウ位置は適当。特に意図無し。

RANDOMIZE (適当な数値)
乱数表を指定。数値が指定されて無い場合は、パソコンの内部時計を参照して適当な乱数表を選ぶ。

毎回同じパターンで星空を表示させたいなら、ここで数値を指定しておけばいいみたい。

RND (変数),(数値)
0から指定した数値までの間で発生させた乱数を、指定した変数に代入する。

今回のポイント。XとYに代入した値は点を打つ座標に、RとGとBに代入した値は点の色を決めるのに使ってる。「WIDTH」でウィンドウのサイズを決め ておいたから、Xの上限は600・Yの上限は400。また、色の明るさは255が最大だから、R,G,Bの上限も255。

REPEAT (数値)
「REPEAT」~「LOOP」の間を指定回数分繰り返す

LOOP -
「REPEAT」~「LOOP」の間を、REPEATで指定した回数分繰り返す。

この2つは必ずペアで用いるみたいね。ちなみにこのプログラムだと、赤い部分が1000回繰り返される。これによって星が1000個表示されるっつーわけだな。

PSET (x軸),(y軸)
指定した場所に1ドットの点を打つ。

まぁこれはそのまんまだね。点を打つ前に、色を指定。色もランダムに発生させてるからカラーな星空になってる。

今回は一発でできたんで「俺って天才!」とか思ってたんだけど、よ~く考えたらこれ(0,0,0)に近い色はほとんど見えないんだよな。黒は表示させず、色調も8段階くらいにしたいところだよね・・・。よし、やってみよう。


CLS 4
WIDTH 600,400,100,50
RANDOMIZE

REPEAT 1000
RND X,600 : RND Y,400
RND R,7 : RR=(R+1)*32-1
RND G,7 : GG=(G+1)*32-1
RND B,7 : BB=(B+1)*32-1

COLOR
RR,GG,BB
PSET X,Y
LOOP

STOP

大きく変えたのは赤い部分。まず、0~7の乱数を発生させる。これで「8段階」っつー条件はクリアできたわけだな。で、次にその乱数に1を加え(これに よって1~8の乱数が得られる)、それを32倍(最大256までの数字が得られるわけだな)し、そこから1引く(色の明るさは最大が255なんで)と。こ れで、31・63・95・128・159・191・223・255の8段階の色調で表示することができるようになったというわけだ。う~ん、完璧。でもな んか遅くなったような気が・・・^^;

よし、次はいよいよバッファーっつーやつを使ってみよう。トマホーク・ハリケーンを食らわないように注意しなきゃ。・・・それってバッファローマンじゃん(T-T)/

星が今回は1000個だからいいけど、100000個とかいったらけっこう時間かかるからね。仮想画面に描いてから一気に表示させてやろうというわけ。速くなるそうな。

« [奮闘記]文字を動かしてみるのだ(その2) | トップページ | [奮闘記]星空を一気に表示するのだ »

1.奮闘記」カテゴリの記事

コメント

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/67538/57445593

この記事へのトラックバック一覧です: [奮闘記]星空を描いてみるのだ:

« [奮闘記]文字を動かしてみるのだ(その2) | トップページ | [奮闘記]星空を一気に表示するのだ »