星を中央から出現させる
説明
画面中央から星(点・丸)を外側に移動させます。宇宙空間を進んでいるような感じになります。これは基本的にパーティクル処理なので工夫次第で色々応用できます。なお、このプログラムでは星を移動させる処理は円の座標を求める方法を応用しています。
Studioで試す
以下のリンクから Jasmine Tea でこのサンプルプログラムを Studio 画面で開いて実際に試すことができます。プログラムを実行したいときは、エディターの右下にある青色の「実行」ボタンを押してください。
プログラム
// 画面中央から星を外側に移動させる
cls
cx=320
cy=200
maxStar=50
dis@=[]
deg@=[]
for i=0 to maxStar-1
dis@[i]=random(10,180)
deg@[i]=random(0,359)
next
do
cls
for i=0 to maxStar-1
x = cx+dis@[i]*cos(deg@[i])
y = cy+dis@[i]*sin(deg@[i])
if ((x>=0) AND (x<=639) AND (y>=0) AND (y<=399)) then
circle (x,y),2,6,6
else
dis@[i]=0
deg@[i]=random(0,359)
end if
dis@[i]=dis@[i]+2
next
loop
解説
2行目で画面を消去しています。
3〜4行目では星を発生させる中心の座標を設定します。
5行目では発生させる星の最大数を変数に入れています。プログラムが大きくなるような場合で変更される数がある場合は、変数に入れておく方がよいでしょう。変数に入れておけば星の数を変えたい場合、この行の数値だけを変更するだけですみます。
6,7行目では移動させる星の中心座標からの半径と角度を入れる配列変数を用意しています。
8〜11行目で星の中心座標からの半径と角度をランダムに設定します。
12〜25行目が繰り返し(メインループ)になります。
13行目で画面を消去しています。これは星を個別に消していくよりも高速に処理されるからです。
14行目から24行目までが星の移動と表示処理になります。
15,16行目で表示する星の位置を角度と中心座標からの半径から計算しています。これは円の計算式を利用しています。つまり星の移動は円の半径を大きくしていくことで処理しています。
17行目で星が表示する画面内かどうかを判定しています。画面内であれば18行目が実行されます。
18行目では星を描いています。点ではなく円を描いています。
20〜21行目は星が画面外になった時の処理です。画面外になったので再度画面中央から星を出すようにします。このため、中心座標からの半径を0に、角度をランダムに設定してます。角度を変えることで画面の半分だけ星を発生させるようなこともできます。
23行目で星の中心座標からの半径を増やしています。ここの数を大きくすると星は高速に移動します。小さくすると星はゆっくりと移動します。全ての星を同じだけ移動させていますが、星ごとに異なる値にすると空間に奥行きが出ます。