SHIROのIchigoJam日記

マイコン「IchigoJam」(イチゴジャム)の電子工作とプログラミングをメインに

横シューティングゲーム for IchigoJam P

★この記事は「IchigoJam Advent Calendar 2024」に参加しています。
https://qiita.com/advent-calendar/2024/ichigojam

先日クラウドファンディングで頒布が始まった、新型IchigoJamIchigoJam P」。
www.ichigojaman.jp
その超高速な動作速度を活かした、横シューティングゲームです。
以前にIchigoJam Rの速度検証用に作ったゲームを改造。自機の他、ビームが3発、敵が5体まで動きます。
紹介動画はこちら。

遊び方

  • 右側から飛んでくる敵を避けつつ、ビームで撃ってください。当たると点数が1点入ります。
  • 自機の操作は、カーソルキーの上下左右で移動、スペースキーでビーム発射です。
  • 自機が敵に当たるとゲームオーバーとなり、プログラムが終了します。

プログラム

1 CLV:CLS:?"0":Y=12
2 GSB7:FORE=15TO31STEP4:FORB=0TO6STEP3:IF[B]GSB11
3 NEXT:WAIT1:B=(E-15)/8*3:IF![B]&&BTN(32)GSB10
4 IF[E]GSB14ELSEIFRND(20)=1GSB13
5 NEXT:COPY#BE0,#BE1,30:LC30,23:?CHR$(RND(4)+140);:IF!MGOTO2
6 BEEP30,30:LCX,Y:?"*";:LC11,11:?"GAME OVER":CLK:END
7 U=X-BTN(28)*(X>0)+BTN(29)*(X<30):V=Y-BTN(30)*(Y>1)+BTN(31)*(Y<22)
8 LCX,Y:?" ":X=U:Y=V:IFSCR(X,Y)>139M=1:RTN
9 LCX,Y:?CHR$(243):RTN
10 [B]=1:[B+1]=X+1:[B+2]=Y:LC[B+1],[B+2]:?"-":RTN
11 C=[B+1]:D=[B+2]:LCC,D:?" ":C=C+1:[B+1]=C:IFC>30[B]=0:RTN
12 LCC,D:?"-":J=B:FORI=15TO31STEP4:GSB18:NEXT:RTN
13 [E]=1:[E+1]=30:[E+2]=RND(22)+1:[E+3]=RND(2)*2-1:LC[E+1],[E+2]:?CHR$(237):RTN
14 F=[E+1]:G=[E+2]:LCF,G:?" ":F=F-1:IFF<0[E]=0:RTN
15 G=G+[E+3]:IFG<1ORG>22[E+3]=-[E+3]:CONT
16 [E+1]=F:[E+2]=G:IFX=F&&Y=GM=1:RTN
17 LCF,G:?CHR$(237):I=E:FORJ=0TO6STEP3:GSB18:NEXT:RTN
18 K=0:IF[I]&&[J]&&[I+1]=[J+1]&&[I+2]=[J+2]K=I:L=J
19 IF!KRTNELSE[K]=0:[L]=0:BEEP:S=S+1:LC0:?S:LC[K+1],[K+2]:?" ":RTN
  • 3行目の「WAIT1」がゲーム全体の速度調整です。IchigoJam Sでは削ってください。それでも遅くてゲームになりませんが…
  • プログラムサイズは1Kバイトぎりぎりです。本当はステージ制にしてボスを出したりしたいのですが、これ以上入りません。マイコンが代わった次世代IchigoJamなので、IchigoCakeと同じくプログラム容量が4Kバイトになったら嬉しかったのですが…