惑星シミュレーターを作ってみる
惑星をシミュレーターしてみます。
何を作りたいのか
惑星の周りに惑星があって、その惑星の周りに惑星があって…という風に入れ子構造のシミュレーターを作りたいです。
惑星の動きを作る
惑星の座標やどの惑星かをリストに保存していきます。
土台を作る
土台のリストとかを作っていきます。
リストの説明です▼
どこの惑星:どの惑星の周りを周っているかを入れます。
距離:周っている惑星との距離を入れます。
直径:惑星の直径を入れます。
色:惑星の色を入れます。(HEX)
公転周期:惑星の公転周期を入れます。(単位は秒)
「どこの惑星」に0が入っている場合、0,0の所が中心になります。
惑星をタイマーで動かす
タイマーを基準にして惑星を動かします。(動かすというより、リストx,yに記録してます。)
定義「動かす」でx,yに空白を追加して、その後に定義「A番目を埋める」で埋めています。
定義「A番目を埋める」で親となる惑星をもとにx,yを埋めますが、埋まってない場合、親のx,yを埋めます。それが埋まってない場合、その親の惑星を埋め、それが埋まってない場合…というように作業をさせています。(これを再帰関数と言います。)
描画
描画をしていきます。
大きさを1/0(=Infinity)にしているのは、大きさを無限にすることで、画面外に行けるようにするためです。
こんな感じに描画されました。
SB3ファイルはここからダウンロードできます。
終わりに
今回は再帰関数を使ってみました。やっぱり再帰関数は面白いですねw
周期だけ忠実に太陽系を再現してしましたのでこちらもご覧ください!
ではまた!