SHIROのIchigoJam日記

IchigoJamの電子工作とプログラミングをメインに

武蔵の剣

※この記事は「IchigoJam Advent Calendar 2018」にエントリーしています。

f:id:shiro0922:20181212120710p:plain
両刀遣いの宮本武蔵と敵との剣の戦い。攻撃条件があってかなり難しいゲームです。
剣の道は厳しいのだ!(笑)

遊び方

  • ゲームを起動すると、自分のキャラの武蔵と、敵の武士「@」4人が表示されます。
  • 武蔵を上下左右のカーソルキーで移動させて、スペースキーで敵に攻撃してください。ただし武蔵の剣は、左右移動中は上下2方向、上下移動中は左右2方向にしか出ません。倒した敵の人数は左下に表示されます。
  • 武蔵が敵に捕らえられるとゲームオーバーです。

プログラムリスト

1 '*Musashi
2 CLV:VIDEO3:CLS:LC0,7:?0;
3 X=8:Y=4:H=5:J=9
4 FORN=0TOJSTEP3
5 WAIT3:GSB11:IFMN=J
6 IF[N]GSB33 ELSEGSB31
7 WAIT2:GSB11:IFMN=J
8 NEXT:IF!MGOTO4
9 BEEP30,30:LCX,Y:?"X";
10 LC3,4:?"GAME OVER":END
11 U=X-BTN(28)*(X>0)+BTN(29)*(X<15)
12 IFU<XH=253
13 IFU>XH=251
14 V=Y-BTN(30)*(Y>0)+BTN(31)*(Y<6)
15 IFV!=YH=5
16 IFSCR(U,V)=64M=1
17 LCX,Y:?" ";:LCU,V:?CHR$(H);:X=U:Y=V
18 IF!BTN(32)RTN
19 IFH=5C=45:D=1:E=0ELSEC=124:D=0:E=1
20 A=SCR(X-D,Y-E):B=SCR(X+D,Y+E)
21 LCX-D,Y-E:?CHR$(C);:LCX+D,Y+E:?CHR$(C);
22 LCX-D,Y-E:?" ";:LCX+D,Y+E:?" ";
23 IFA!=64&&B!=64RTN
24 IFA=64GSB30
25 IFB=64GSB30
26 FORN=0TOJSTEP3
27 IFX-D=[N+1]&&Y-E=[N+2][N]=0
28 IFX+D=[N+1]&&Y+E=[N+2][N]=0
29 NEXT:RTN
30 BEEP:S=S+1:LC0,7:?S;:RTN
31 [N]=1:[N+1]=15*(N/3%2):[N+2]=6*(N/3/2%2)
32 LC[N+1],[N+2]:?"@";:RTN
33 U=[N+1]+RND(3)-1:V=[N+2]+RND(3)-1
34 IF(U<0)+(U>15)+(V<0)+(V>6)GOTO33
35 IFSCR(U,V)=64GOTO33
36 IFU=X&&V=YM=1
37 LC[N+1],[N+2]:?" ";
38 LCU,V:?"@";:[N+1]=U:[N+2]=V:RTN

プログラム2行目の「VIDEO3」で画面を16文字×12行モードにしています。縦は8行までしか使っていないので、「VIDEO3」→「SWITCH1」に変更すれば、IchigoBoyなどのSPI液晶画面でも遊べます。
3行目の「J=9」は敵の数(の3倍)を表していて、J=12にすれば敵が5人、J=15にすれば6人…と増えます。処理は余裕があるので結構増やせます。

ゲームのアイデアは、2016年の大河ドラマ真田丸」の頃からあったのですが、実現できて良かったです。
武蔵が両刀遣いで2方向同時に攻撃するのは、ボードゲーム十六むさし」からの発想です。