※IchigoJam Advent Calendar 2017へエントリーしました。
Raspberry Piで動く「IchigoJam RPi」は、計算速度がかなり速いことがわかりました。
そのスピードを活かしたプログラムとして、横シューティングゲームを作ってみました。
と言っても、実はIchigoJam上でかなり前に作ったゲームです。作ってみたものの、あまりに速度が遅かったのでお蔵入りしていました。ラズパイ版でリベンジです。
動かしてみた動画はこちら。
ラズパイ版だと結構なスピードで動きます。これならゲームとして十分遊べます。
プログラムはこちら。
1 '*H Shooting 2 CLV:CLS:?"SCORE 0":X=0:Y=12 3 FORE=14TO22STEP4:GSB8:FORB=3TO9STEP3:IF[B]GSB12 4 NEXT:B=(E-10)/4*3:IF![B]&&BTN(SPACE)GSB11 5 IF[E]GSB15 ELSEIF!RND(30)GSB14 6 WAIT2:NEXT:IF!MGOTO3 7 BEEP30,30:LCX,Y:?"*";:LC7,12:?"GAME OVER":END 8 U=X-BTN(LEFT)*(X>0)+BTN(RIGHT)*(X<30):V=Y-BTN(UP)*(Y>1)+BTN(DOWN)*(Y<22) 9 LCX,Y:?CHR$(0);:X=U:Y=V:IFSCR(X,Y)=237M=1:RTN 10 LCX,Y:?CHR$(243);:RTN 11 [B]=1:[B+1]=X+1:[B+2]=Y:LC[B+1],[B+2]:?"-";:RTN 12 C=[B+1]:D=[B+2]:LCC,D:?CHR$(0);:C=C+1:[B+1]=C:IFC>30[B]=0:RTN 13 LCC,D:?"-";:GSB19:RTN 14 [E]=1:[E+1]=30:[E+2]=RND(22)+1:[E+3]=RND(2)*2-1:LC[E+1],[E+2]:?CHR$(237);:RTN 15 F=[E+1]:G=[E+2]:LCF,G:?CHR$(0);:F=F-1:IFF<0[E]=0:RTN 16 G=G+[E+3]:IFG<1ORG>22[E+3]=-[E+3]:CONT 17 [E+1]=F:[E+2]=G:IFX=F&&Y=GM=1:RTN 18 LCF,G:?CHR$(237);:GSB19:RTN 19 K=0:FORI=14TO22STEP4:FORJ=3TO9STEP3:IF[I]&&[J]&&[I+1]=[J+1]&&[I+2]=[J+2]K=I:L=J 20 NEXT:NEXT:IF!KRTN 21 [K]=0:[L]=0:LC[K+1],[K+2]:?"*";:BEEP:S=S+1:LC6,0:?S:LC[K+1],[K+2]:?CHR$(0);:RTN
動作速度はクリアできましたが、あとはコード容量がネックですね。
本当は敵のミサイルなどを出したいのですが、今のプログラムでほぼ1KB目一杯です。
ラズパイならメモリに余裕があるでしょうし、4K拡張BASIC版が出ることを期待します(^_^)
追記
IchigoJam RPiの新しいファームウェア(1.2.b15)が公開されました。
https://www.facebook.com/groups/ichigojam/1051283401678079/
カーソルが点滅するようになり、画面表示速度が劇的に改善されました。
ライフゲームでは、全ライフが一瞬で描画されるようになりました。
横シューティングゲームでは、敵の数が増えても動作速度が落ちなくなりました。