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

2023/07/01 14:41:06

MixJuice GET URL : kidspod.club/mj/2204

メニメニゾンビ(ベーマガ版)

ゾンビから逃げながらゾンビを爆破してください。爆発に巻き込まれたゾンビは次々と誘爆を起こします。
スペースキーを押し続けるとカウントダウンした後にプレイヤーを中心に爆発が発生します。
カウントダウン中に移動するとカウントダウンがリセットされてしまいます。
一度の爆発で倒したゾンビの数は「Combo」に表示され、コンボが多いほど高得点になります。「Total」は倒したゾンビの合計です。

■操作方法
カーソルキー: 移動
スペースキー: 押し続けるとカウントダウンの後、爆発します
再ゲーム:エンターキー

ゾンビの誘爆処理のように同じ動作を繰り返す場合は「再帰」という方法で作るのがシンプルなのですが、IchigoJamで再帰をするとスタックがあふれてしまいます。代わりにゾンビの表示位置に煙(?)のキャラクタが表示されていたらゾンビが爆発に巻き込まれたと判断する方法を思いついたので、作ってみたプログラムです。
IchigoJam Ver.1.2.3用に作ったゲームなのでVer.1.3以降では動作が速いのですが、速いほうが面白いと思います。

電子工作マガジン2019年2月号付録のマイコンBASICマガジンに掲載していただいたプログラムです。
非営利目的でネットにアップするのは問題ないとのことなのでKidspodに上げておきますね。
遊んでもらえるとうれしいです。

  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

SOURCE CODE

5 'MMZ
10 CLS:CLV:X=15:Y=12:G=#FA:L=99
20 FORI=0TOL:GSB200:POKE#9A0+RND(468),6,6,0:NEXT
30 A=10
40 K=INKEY():CLK:M=(K=29)*(X<30)-(K=28)*(X>1):N=(K=31)*(Y<21)-(K=30)*(Y>3)
50 IF SCR(X+M,Y+N)=6 M=0:N=0
60 POKE#900+X+Y*32,0:X=X+M:Y=Y+N
70 IF BTN(32)*!M*!N A=A-1:E=#30+A:BEEPA ELSE A=10:E=#ED
80 GSB210:POKE#900+X+Y*32,E
90 FORI=0TO5:BEEPD/4+I*20
100 C=(C+1)*(C<L-D/3):Z=[C]/100:V=[C]%100
110 M=((X>Z)-(X<Z))*RND(2):N=(Y>V)-(Y<V):B=SCR(Z+M,V+N)
120 IF B<>6 AND B<>G POKE#900+Z+V*32,0:Z=Z+M:V=V+N:[C]=Z*100+V:POKE#900+Z+V*32,G
130 NEXT:GSB210:IF A GOTO40
140 Q=X:R=Y:GSB190:T=0
150 F=0:FORI=0TOL:R=[I]%100:IF R<3 OR R>21 GOTO170
160 Q=[I]/100:IF SCR(Q,R)<>G T=T+1:D=D+1:F=1:S=S+T:BEEP1+(30-T)*(T<30):GSB190:GSB200
170 NEXT
180 IF F GOTO150 ELSE GOTO30
190 FORJ=0TO19:W=J%10:LCQ+(W-7)*(W>4),R+(W-2)*(W<5):?CHR$(3+J/10);:NEXT:BEEP190,120:RTN
200 [I]=RND(24)*100+RND(2)*22+401:LC0,0:?"Score:";S;" Total:";D;" Combo:";T;" ":RTN
210 IF SCR(X,Y)<>G RTN
220 WAIT80:BEEP200,90
230 LC12,10:?"GAME OVER":IF INKEY()=10 RUN ELSE CONT

COMMENT