花火の製作リクエストをいただきましたので、作ってみました。
頭を悩ませたのは丸く広がる部分をどうするか?
IchigoJam には SIN・COS がなく、計算では困難。
そこで配列に中心からの差分データを持ち、
そのデータを計算して広がるところを実現しています。
でもそれで 1K バイトギリギリの容量になってしまい、
サブルーチン化するなど最適化を行って 700 バイトに、
更に処理の時間がかかっていたので、
LET や POKE を使用して高速化を行い、
表示方法を調整していたりしています。
それでも IchigoJam BASIC 1.0.0 以降でないと遅いです。
(とはいってもそれ以外は
IchigoJam BASIC 0.9.9 RC しかないのですが……)
10 'ハナビ
20 CLV:CLS
30 LET [0],6,1,4,4
40 LET [4],9,5,10,3
50 LET [8],10,1,7,7
60 T=RND(11)+10
70 LC T,23:? "."
80 FOR Y=22 TO 11 STEP -1
90 LC T,23:?:WAIT 15
100 NEXT
110 FOR I=0 TO 10
120 FOR J=0 TO 10 STEP 2
130 LET A,[J]*I/10
140 LET B,[J+1]*I/10
150 LET X,A:LET Y,B
160 LET C,42:GOSUB 260
170 LET X,[J+50]:LET Y,[J+51]
180 LET C,32:GOSUB 260
190 LET [J+50],A:LET [J+51],B
200 NEXT:NEXT
210 FOR J=0 TO 10 STEP 2
220 LET X,[J+50]:LET Y,[J+51]
230 LET C,32:GOSUB 260
240 NEXT
250 WAIT RND(120):GOTO 50
260 LET D,X:LET E,Y:GOSUB 290
270 LET E,X:LET D,Y:GOSUB 290
280 RETURN
290 POKE #900+T+D+(10+E)*32,C
300 POKE #900+T+D+(10-E)*32,C
310 POKE #900+T-D+(10+E)*32,C
320 POKE #900+T-D+(10-E)*32,C
330 RETURN
IchigoJam web でプログラムを実行します。
このQRコードはアクセス解析のためにCookieを使用しています。
アクセス解析は匿名で収集されており、個人を特定するものではありません。
この機能はCookieを無効にすることで収集を拒否することができますので、
お使いのデバイスのブラウザの設定をご確認ください。
MixJuice ダウンロード ?"MJ GET kidspod.club/mj/595
MicJack ダウンロード ?"MJ GKP 595
IchigoJam R など、RISC-V プロセッサの IchigoJam では次を加えて下さい。
185 WAIT 1
235 WAIT 8
IchigoJam BASIC RPi では次を加えて下さい。
185 WAIT 2
235 WAIT 15
SkyBerryJAM は 栃木県立栃木工業高等学校 が管理する登録商標であり、
SkyBerryJAM は 栃木県立栃木工業高等学校 の商標です。
Raspberry Pi は
Raspberry Pi 財団 の登録商標です。
Raspberry Pi is a registered trademark or
trademark of
the Raspberry Pi Foundation.
"RISC-V" の商品名は RISC-Vインターナショナル が管理する登録商標です。
The “RISC-V” trade name is a registered trade mark of
RISC-V International.