SHIROのIchigoJam日記

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

潜水艦ゲーム

8ビットパソコン時代からおなじみの、潜水艦ゲームを作ってみました。

f:id:shiro0922:20200413233115p:plain

f:id:shiro0922:20200413233130p:plain

遊び方

  • 5×5の海域内で、自分の船「Y」を操作して、海中に潜む潜水艦を撃破します。
  • 海域マップの下に、ソナーで探知した潜水艦との距離(縦座標の差+横座標の差)が表示されます。この数字を頼りに行動してください。
  • 船の移動は上下左右のカーソルキーです。2個同時押しで斜め移動もできます。
  • スペースキーを押しながらカーソルキーを押すと、その方向の隣りの海域に爆雷を落とします。
  • 潜水艦への爆雷攻撃が当たった場合、または自分から潜水艦に当たった場合(体当たり攻撃)は、あなたの勝ちです。
  • 反対に、潜水艦から攻撃を当てられた場合、または潜水艦から体当たりされた場合は、あなたの負けです。

プログラム

1 'SUBMARIN
2 CLV:VIDEO 3
3 X=0:Y=0:[X+Y*5]=1
4 A=4:B=4:[A+B*5]=2
5 @YOU
6 GSB @SEA
7 LC 0,8:?"COMMAND?"
8 @INK
9 WAIT 10
10 U=X-BTN(28)*(X>0)+BTN(29)*(X<4)
11 V=Y-BTN(30)*(Y>0)+BTN(31)*(Y<4)
12 IF U=X AND V=Y GOTO @INK
13 Z=X+Y*5:W=U+V*5
14 IF BTN(32) GSB @BOM ELSE GSB @YMOV
15 GSB @SEA
16 IF [W]&3+T=3 GOTO @WIN
17 WAIT 100:T=0
18 @SB
19 U=A+RND(2)*2-1:V=B+RND(2)*2-1
20 IF U<0 OR U>4 OR V<0 OR V>4 GOTO @SB
21 Z=A+B*5:W=U+V*5
22 IF RND(D) GSB @SMOV ELSE GSB @BOM
23 IF [W]&3+T*2=3 GOTO @LOSE
24 WAIT 100:T=0
25 GOTO @YOU
26 @WIN
27 LC 0,9:?"YOU WIN!"
28 CLK:END
29 @LOSE
30 GSB @BOM:LC 0,9:?"YOU LOSE"
31 CLK:END
32 @YMOV
33 [Z]=[Z]&#FFFE
34 X=U:Y=V:[W]=[W]|1
35 RTN
36 @SMOV
37 LC 0,8:?"SUBMARIN MOVE..."
38 [Z]=[Z]&#FFFD
39 A=U:B=V:[W]=[W]|2
40 RTN
41 @BOM
42 LC U,V:?CHR$(244)
43 BEEP 30,10:WAIT 30
44 LC U,V:?".":T=1
45 RTN
46 @SEA
47 CLS:K=0
48 FOR I=0 TO 4
49 FOR J=0 TO 4
50 IF [K]&1 ?"Y"; ELSE ?".";
51 K=K+1
52 NEXT:?
53 NEXT:?
54 D=ABS(X-A)+ABS(Y-B)
55 ?D
56 RTN

ゲームが簡単過ぎると思う人は、55行を消して、ソナー表示を無しにしてください。
潜水艦の攻撃しかヒントが無くなるので、かなり難しくなります。