SHIROのIchigoJam日記

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

いちがめ for 1.3

IchigoJam BASICの新バージョン「1.3.0」が公開されました。
変更点については、福野さんのブログ記事にまとめられています。
fukuno.jig.jp

  • 全体の動作が70%高速化。
  • sakura.ioに対応したネットへのデータ入出力命令が追加。
  • LOCATE命令の第3パラメータでカーソルスイッチが付き、「LOCATE x,y,1」で点滅カーソルを表示。

さっそく新機能のカーソルスイッチを使い、以前作ったコマ消去ゲーム「いちがめ」を、IchigoJam BASIC 1.3用にリメイクしました。
全体に高速・軽量になったので、快適に遊べます(^_^)
f:id:shiro0922:20190128215500p:plain

遊び方

  • 起動すると、16×16=256個の数字コマが表示されます。最初のステージ0はコマが1〜3の3種類です。
  • 反転カーソルをカーソルキーで移動して、同じ数字が縦・横に2個以上つながっている所で、スペースキーを押してください。そのコマが消えて、コマが下へ詰まります。縦1列全てのコマが消えた場合は、右側の列が左へ詰まります。
  • (消したコマ数-2)の2乗がスコアに加算されます。(つまりコマ2個だと消しても0点。コマ数が増えると点数が上昇)
  • 残りコマ数がコマ種類数×2以下(最初は6)になるとステージクリアです。次のステージへ行くと、数字コマが1種類増えます。ステージ6(コマ9種類)をクリアすると、コマ3種類に戻ります。
  • 消せるコマが無くなると、自動的にゲームオーバーになります。

プログラム

1 '*Ichigame for 1.3
2 CLV:LET[91],-1,0,1,0,0,-1,0,1:J=15
3 CLS:L=256:W=J:M=S%7+3:P=0:Q=J
4 FORY=0TOJ:FORX=0TOJ:?RND(M)+1;:NEXT:?:NEXT:GSB10
5 LCP,Q,1:K=INKEY()*2-60:IFABS(K)>4GOTO5
6 IFK=4GSB11:IFL<=M*2BEEP10,30:WAIT99:S=S+1:GOTO3
7 X=P+[K+95]:Y=Q+[K+96]:IFSCR(X,Y)P=X:Q=Y
8 IF!GGOTO5
9 BEEP30,30:LC0,19:END
10 LC0,18:?"Stage:";S;" Score:";T;" Last:";L;" ":RTN
11 U=P:V=Q:N=SCR(U,V):C=0:[C]=U+V*16:H=1:GSB26:IF!CRTN
12 BEEP:B=0
13 B=B+1:U=[B]&15:V=[B]/16:GSB26:IFB<CGOTO13
14 I=C-2:T=T+I*I:L=L-C:GSB10
15 FORB=0TOC:X=[B]&15:FORY=JTO0STEP-1
16 IFSCR(X,Y)=42FORZ=YTO0STEP-1:POKE#900+X+Z*32,SCR(X,Z-1):NEXT:Y=Y+1
17 NEXT:NEXT:IF!LRTN
18 FORX=WTO0STEP-1
19 IFSCR(X,J)ELSEFORY=JTO0STEP-1:LCX,Y:FORZ=XTOW:?CHR$(SCR(Z+1,Y));:NEXT:NEXT:W=W-1
20 NEXT:C=0:H=0
21 FORU=0TOW:FORV=JTO0STEP-1
22 N=SCR(U,V):IF!NGOTO24
23 GSB26:IFCU=W:V=0
24 NEXT:NEXT:IF!CG=1
25 P=0:Q=15:RTN
26 FORD=91TO97STEP2:X=U+[D]:Y=V+[D+1]
27 IFSCR(X,Y)=NC=C+1:[C]=X+Y*16:IFHLCX,Y:?"*"
28 NEXT:RTN

web版はこちら。体感としては、これが前バージョンの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」に変えています。

みなさん、よいお年を(^_^)/~~~

皆さん、素敵なクリスマスを迎えられたでしょうか。
今年も残り1週間。よい新年をお迎えください。


【IchigoJam】みなさん、よいお年を

※締めくくりとして、「IchigoJam Advent Calendar 2018」の12/25にエントリーしました。
https://qiita.com/advent-calendar/2018/ichigojam

Ichigo鉄琴:曲データ「第九」

10 '*Tekkin - Daiku
20 LET [ 0],#103,#103,#104,#105,#105,#104,#103,#102
30 LET [ 8],#101,#101,#102,#103,#103,#200,#202,#102,#100
40 LET [17],#103,#103,#104,#105,#105,#104,#103,#102
50 LET [25],#101,#101,#102,#103,#102,#200,#201,#101,#100
60 LET [34],#102,#102,#103,#101,#102,#203,#204,#103,#101
70 LET [43],#102,#203,#204,#103,#102,#101,#102,#100,#103
80 LET [52],#103,#103,#104,#105,#105,#104,#103,#102
90 LET [60],#101,#101,#102,#103,#102,#200,#201,#101,#100
100 L=68
110 LRUN 0,G