| 星空を描いてみるのだ | |||||||||||||||||||||||||||||||||
なんかこれはBASICでもやった記憶があるぞ。乱数を発生させて、適当に点をばら撒くってやつだな。けっこう神秘的な雰囲気になるんだよね、うん。早速やってみよう。
なんかめちゃめちゃいっぱい新しい命令でてきたね^^;
「星空」だから背景が黒じゃなきゃ不自然。っつーわけで、最初にウィンドウを黒でクリアすることにした。BOXFで塗りつぶしてもいいんだろうけどね・・・。
乱数を発生する範囲を決めるため、ウィンドウの大きさも指定。そうしないと、星の無い空間とかできちゃうもんね。ウィンドウ位置は適当。特に意図無し。
毎回同じパターンで星空を表示させたいなら、ここで数値を指定しておけばいいみたい。
今回のポイント。XとYに代入した値は点を打つ座標に、RとGとBに代入した値は点の色を決めるのに使ってる。「WIDTH」でウィンドウのサイズを決めておいたから、Xの上限は600・Yの上限は400。また、色の明るさは255が最大だから、R,G,Bの上限も255。
この2つは必ずペアで用いるみたいね。ちなみにこのプログラムだと、赤い部分が1000回繰り返される。これによって星が1000個表示されるっつーわけだな。
まぁこれはそのまんまだね。点を打つ前に、色を指定。色もランダムに発生させてるからカラーな星空になってる。 今回は一発でできたんで「俺って天才!」とか思ってたんだけど、よ〜く考えたらこれ(0,0,0)に近い色はほとんど見えないんだよな。黒は表示させず、色調も8段階くらいにしたいところだよね・・・。よし、やってみよう。
大きく変えたのは赤い部分。まず、0〜7の乱数を発生させる。これで「8段階」っつー条件はクリアできたわけだな。で、次にその乱数に1を加え(これによって1〜8の乱数が得られる)、それを32倍(最大256までの数字が得られるわけだな)し、そこから1引く(色の明るさは最大が255なんで)と。これで、31・63・95・128・159・191・223・255の8段階の色調で表示することができるようになったというわけだ。う〜ん、完璧。でもなんか遅くなったような気が・・・^^; よし、次はいよいよバッファーっつーやつを使ってみよう。トマホーク・ハリケーンを食らわないように注意しなきゃ。・・・それってバッファローマンじゃん(T-T)/ 星が今回は1000個だからいいけど、100000個とかいったらけっこう時間かかるからね。仮想画面に描いてから一気に表示させてやろうというわけ。速くなるそうな。
| |||||||||||||||||||||||||||||||||