SHIROのIchigoJam日記

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

ボクシング

FacebookのIchigoJam-FANグループで、ボクシングゲームの話題を書いていた方がいたので、そのアイデアをいただき、シンプルなボクシングゲームを作ってみました。

f:id:shiro0922:20190117023002p:plain

f:id:shiro0922:20190117025759p:plain

  • 起動すると、上側に対戦相手、下側に自分が表示され、試合が始まります。
  • 左右のカーソルキーで左右移動(キーを離すと中央に戻る)、スペースキーでパンチを出します。ただし相手と同じ位置にグローブがある時は、パンチが出せません。
  • パンチがヒットすると、相手の体力が1減ります。
  • 相手の体力が0になれば自分の勝ち、自分の体力が0になると相手の勝ちです。スペースキーを押すとリプレイします。

戦略ですが、ただスペースキーを連打していては勝てません。(スペースキー押しっぱなしではパンチが出ないようになっています)
相手のグローブを抑えつつ、隙を見て左右に動いてパンチを入れて、相手の体力を1ポイントずつ削ってください。防御7・攻撃3くらいの気持ちで行くといいです。

プログラム

(1/18)自分・相手のゲームオーバー処理を共通化して容量を削減。空いた容量でジャンプ先をラベルに。パンチ描画にWAITを入れてIchigoJam実機でも見やすくしました。

1 '*Boxing
2 CLV:VIDEO 5:CLS:G=-1
3 H=10:LC 0,5:?H;
4 I=10:LC 0,0:?I
5 @LOOP
6 X=BTN(29)-BTN(28)
7 GSB @MYPR
8 IF !RND(5) Y=RND(2)*(Y=0)-RND(2)*(Y=0)
9 GSB @ENPR
10 IF BTN(32) AND K!=1 GSB @MYPAN
11 K=BTN(32):IF !RND(3) GSB @ENPAN
12 WAIT 5
13 IF !H G=0
14 IF !I G=5
15 IF G<0 GOTO @LOOP
16 @GOVER
17 LC 3,G:?"WIN!";
18 BEEP 30-G*4,60:WAIT 60
19 IF !BTN(32) CONT
20 RUN
21 @MYPR
22 LC 1+X,3
23 ?CHR$(0,232,0,232,0)
24 LC 1+X,4
25 ?CHR$(0,154,236,155,0)
26 RTN
27 @ENPR
28 LC 1+Y,1
29 ?CHR$(0,152,231,153,0)
30 LC 1+Y,2
31 ?CHR$(0,232,0,232,0)
32 RTN
33 @MYPAN
34 IF ABS(X)=ABS(Y) RTN
35 LC 2+X,2
36 ?CHR$(232,232,232)
37 LC 2+X,3
38 ?CHR$(146,0,146)
39 I=I-1:LC 0,0:?I;" "
40 BEEP:WAIT 3
41 LC 2+X,2
42 ?CHR$(0,232,0)
43 LC 2+X,3
44 ?CHR$(232,0,232)
45 RTN
46 @ENPAN
47 IF ABS(X)=ABS(Y) RTN
48 LC 2+Y,2
49 ?CHR$(146,0,146)
50 LC 2+Y,3
51 ?CHR$(232,232,232)
52 H=H-1:LC 0,5:?H;" ";
53 BEEP:WAIT 3
54 LC 2+Y,2
55 ?CHR$(232,0,232)
56 LC 2+Y,3
57 ?CHR$(0,232,0)
58 RTN

Web版はこちら。
Web版は動作が遅いので、12行の「WAIT 5」を「WAIT 2」に変えています。