先日作ったお絵かきツール
www.ichigojaman.jp
を使って、4コマの紙芝居を作ってみました。
動画はこちら。
【IchigoJam】イチゴ太郎 vs コロナ星人
作り方
(1)絵を描く
お絵かきツールで、IchigoJamの画面に絵を描いて保存します。
(お絵かきツール)
10 CLV:CLS 15 COPY #900,#D00,768 20 LC X,Y:?CHR$(!SCR(X,Y)); 30 WAIT 3 40 K=INKEY() 50 LC X,Y:?CHR$(!SCR(X,Y)^(K=32)); 60 X=X-(K=28)+(K=29) 70 Y=Y-(K=30)+(K=31) 80 IF K=8 CLS 100 IF K!=10 GOTO 20 110 COPY #D00,#900,768:SAVE
(2)パソコンへ絵を転送
IchigoJamとパソコンをUSBシリアルでつなぎます。
下のシリアル転送ツールを、パソコンからIchigoJamへ転送します。
(IJUtilitiesのプログラム転送を使う場合、転送前にNEWコマンドで絵のデータが消されてしまうので、シリアルウインドウにプログラムをペーストしてください)
ツールを起動すると、絵の表示用データがパソコン側に出力されます。
終了したら「UART 1,1」でシリアル設定を元に戻しておいてください。
(シリアル転送ツール)
10 CLV:CLS 15 COPY #900,#D00,768 20 UART 9,1:L=10 30 FOR A=#900 TO #B80 STEP 128 40 ?L;" LET [";(L-10)/10*8;"]";:D=0 50 FOR C=0 TO 7 60 FOR B=0 TO 15 70 D=D<<1:D=D+PEEK(A+C*16+B) 80 NEXT 90 ?",#";HEX$(D); 100 NEXT 110 ?:L=L+10:NEXT
(絵データの出力例)
10 LET [0],#0,#0,#3FF0,#80,#2010,#7C0,#2FD0,#5E0 20 LET [8],#2850,#AC0,#2850,#D40,#EFD0,#1AC0,#A010,#1580 30 LET [16],#BFF0,#1E00,#8000,#200,#BFF0,#700,#A010,#A80 40 LET [24],#E490,#200,#E490,#500,#2490,#0,#2490,#0 50 LET [32],#2010,#0,#3FF0,#0,#0,#0,#0,#0 60 LET [40],#0,#0,#0,#0,#0,#0,#0,#0
画面全体をそのままPOKEするプログラムだととても1kバイトに収まらないので、絵のドットの有無を0,1の1ビットにして、配列変数[0]~[47]にセットしています。
(3)表示プログラムを追加
転送された絵データに、表示プログラムを追加します。
(表示プログラム)
100 A=#900 110 FOR V=0 TO 47 120 FOR B=15 TO 0 STEP -1 130 D=[V]&(1<<B) 140 POKE A,D!=0 150 A=A+1 160 NEXT:NEXT 170 IF !INKEY() CONT
(追加した例)
10 LET [0],#0,#0,#3FF0,#80,#2010,#7C0,#2FD0,#5E0 20 LET [8],#2850,#AC0,#2850,#D40,#EFD0,#1AC0,#A010,#1580 30 LET [16],#BFF0,#1E00,#8000,#200,#BFF0,#700,#A010,#A80 40 LET [24],#E490,#200,#E490,#500,#2490,#0,#2490,#0 50 LET [32],#2010,#0,#3FF0,#0,#0,#0,#0,#0 60 LET [40],#0,#0,#0,#0,#0,#0,#0,#0 100 A=#900 110 FOR V=0 TO 47 120 FOR B=15 TO 0 STEP -1 130 D=[V]&(1<<B) 140 POKE A,D!=0 150 A=A+1 160 NEXT:NEXT 170 IF !INKEY() CONT
これで絵を表示するプログラムが完成します。
「イチゴ太郎 vs コロナ星人」プログラム
4コマの絵を描いて保存・出力し、ストーリー表示を追加しました。
IchigoJamのファイル0~3に保存して、「LRUN 0」で順番に読めます。何かキーを押すと次のコマへ移ります。
コマ0
10 LET [0],#0,#0,#3FF0,#80,#2010,#7C0,#2FD0,#5E0 20 LET [8],#2850,#AC0,#2850,#D40,#EFD0,#1AC0,#A010,#1580 30 LET [16],#BFF0,#1E00,#8000,#200,#BFF0,#700,#A010,#A80 40 LET [24],#E490,#200,#E490,#500,#2490,#0,#2490,#0 50 LET [32],#2010,#0,#3FF0,#0,#0,#0,#0,#0 60 LET [40],#0,#0,#0,#0,#0,#0,#0,#0 100 A=#900 110 FOR V=0 TO 47 120 FOR B=15 TO 0 STEP -1 130 D=[V]&(1<<B) 140 POKE A,D!=0 150 A=A+1 160 NEXT:NEXT 200 LC 0,22 210 ?"イチゴタロウ ハ キョウモ タノシク プログラミング." 220 IF !INKEY() CONT 230 LRUN FILE()+1
コマ1
10 LET [0],#0,#0,#0,#30,#F,#48,#10,#8084 20 LET [8],#4820,#41FE,#3029,#40A8,#3020,#4000,#481F,#8000 30 LET [16],#9,#0,#19,#8000,#900,#0,#600,#2400 40 LET [24],#612,#1800,#90C,#1800,#C,#2400,#12,#0 50 LET [32],#0,#0,#0,#0,#0,#0,#0,#0 60 LET [40],#0,#0,#0,#0,#0,#0,#0,#0 100 A=#900 110 FOR V=0 TO 47 120 FOR B=15 TO 0 STEP -1 130 D=[V]&(1<<B) 140 POKE A,D!=0 150 A=A+1 160 NEXT:NEXT 200 LC 0,22 210 ?"コロナセイジンガ セメテキタ!" 215 ?"[オマエタチヲ ウイルスニンギョウニ シテヤル!]"; 220 IF !INKEY() CONT 230 LRUN FILE()+1
コマ2
10 LET [0],#0,#12,#0,#8C,#0,#20C,#C,#812 20 LET [8],#1F,#A100,#1F,#B440,#200D,#800,#7C0C,#8289 30 LET [16],#F412,#406,#6A12,#106,#5612,#49,#6B1E,#0 40 LET [24],#3500,#0,#F1F,#C000,#830,#4000,#1C35,#4000 50 LET [32],#2A15,#4000,#810,#4000,#141F,#C000,#0,#0 60 LET [40],#0,#0,#0,#0,#0,#0,#0,#0 100 A=#900 110 FOR V=0 TO 47 120 FOR B=15 TO 0 STEP -1 130 D=[V]&(1<<B) 140 POKE A,D!=0 150 A=A+1 160 NEXT:NEXT 200 LC 0,22 210 ?"イチゴタロウノ ハンゲキ!" 215 ?"[ジドウ ショウドク スプレー!]"; 220 IF !INKEY() CONT 230 LRUN FILE()+1
コマ3
10 LET [0],#0,#4000,#3,#E002,#1002,#F000,#85,#6020 20 LET [8],#6,#A000,#D,#6000,#80A,#C200,#F,#10 30 LET [16],#1,#0,#103,#8000,#8005,#4001,#1,#40 40 LET [24],#2,#8000,#F,#E000,#70,#1C00,#180,#300 50 LET [32],#239,#3880,#448,#4440,#934,#3C20,#0,#0 60 LET [40],#0,#0,#0,#0,#0,#0,#0,#0 100 A=#900 110 FOR V=0 TO 47 120 FOR B=15 TO 0 STEP -1 130 D=[V]&(1<<B) 140 POKE A,D!=0 150 A=A+1 160 NEXT:NEXT 200 LC 0,22 210 ?"イチゴタロウノ プログラミングデ" 215 ?"チキュウハ マモラレタ! END"; 220 IF !INKEY() CONT