Enjoy programming more!
Kidspod is a post site which supports young programmers.
First step to join us.
Register as a member
For members

2018/03/26 17:03:09

MixJuice GET URL : kidspod.club/mj/475

宇宙飛行

『宇宙飛行』は、宇宙空間を移動しているような風景を映すスクリーンセーバーです。

【操作】
キー入力 : スクリーンセーバーを終了する

【更新履歴】
2018/03/26 初版公開

【ソースコード解説】
《変数》
P : 星が X 軸方向へ移動する方向( -1 : 左、 1 : 右 )
Q : 星が Y 軸方向へ移動する方向( -1 : 上、 1 : 下 )
X : 星の進行方向の X 成分
Y : 星の進行方向の Y 成分
Z : 星の Y 軸方向への進行度合
W : 星の X 軸方向への進行度合
C : 星を表すキャラクタ
M, N : C を算出するための一時変数
A, B : C を表示する位置
I : Iterator, ループ変数

《配列》
[0] ~ [11] : 星の描画座標
16bit を 6 bit / 5 bit / 5 bit の 3 つに区切り、変数 Z, X, Y を保持しています。

《コード》
5 : タイトル
10 : 初期化
30 : 星の配置
40 ~ 80 : 各変数の算出
90 : 星が描画されていれば消去
100 : 通り過ぎた星の情報を保持している配列の要素の値を初期化
110 : Z を増加させる
120 ~ 140 : M, N の算出
150 ~ 180 : C の算出
190 : 星の描画
210 : キー入力受付
220 : W の算出
230 ~ 260 : C を描画

  • 1
  • 1

SOURCE CODE

5 'Space Flight
10 CLS:CLV
20 FOR I=0 TO 11
30 IF [I]=0 IF RND(9)>5 [I]=1<<10+(RND(31)+1)<<5+RND(23) ELSE GOTO 200
40 P=1-2*(I&2=2)
50 Q=1-2*(I&1=1)
60 X=[I]>>5&31
70 Y=[I]&31
80 Z=[I]>>10
90 IF Z!=1 C=0:GSB 220:GSB 230
100 IF Z>23 [I]=0:GOTO 200
110 Z=2*Z:[I]=[I]&1023+Z<<10
120 GSB 220
130 M=W&1:IF P=-1 M=!M
140 N=Z&1:IF Q=-1 N=!N
150 IF M=0&&N=0 C=#81:GOTO 190
160 IF M=0&&N=1 C=#84:GOTO 190
170 IF M=1&&N=0 C=#82:GOTO 190
180 C=#88
190 GSB 230
200 NEXT
210 IF INKEY() CLS:END ELSE GOTO 20
220 W=Z*Y/X:RTN
230 A=16+W*P/2:IF A<0 A=0 ELSE IF A>31 A=31
240 B=12+Z*Q/2:IF B<0 B=0 ELSE IF B>23 IF A=31 B=22 ELSE B=23
250 LC A,B:?CHR$(C);
260 RTN

COMMENT

Kidspod運営チーム
Kidspod運営チーム2018/04/03 13:53:48

シンプルながら情緒のあるスクリーンセーバーですね。描画の内容自体が凝っていなくても、きちんと楽しめるところが素敵です!