SHIROのIchigoJam日記

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

ウイルスシューティング

ウイルスをうち落として市民を守れ! シンプルなシューティングゲームです。

f:id:shiro0922:20200228130930p:plain

遊び方

上から落ちてくるウイルスを、ビームで打ち落としてください。
自機の移動はカーソルキーの←→、スペースキーでビーム発射です。
ウイルスに下まで侵略されるとゲームオーバーです。

プログラム

IchigoJamの基板ではこのままでいいですが、IchigoJam webで遊ぶ時は110行の「WAIT 3」を「WAIT 0」に変えてください。

10 '*Virus Shooting
20 CLV:CLS:X=16
30 LC 5,23:FOR I=0 TO 23:?CHR$(249);:NEXT
40 @LOOP
50 FOR L=1 TO 5
60 LC 0,23:?S;
70 LC X,22:?" "
80 X=X-BTN(28)*(X>5)+BTN(29)*(X<28)
90 LC X,22:?CHR$(240)
100 IF BTN(32) GSB @SHOOT
110 WAIT 3
120 NEXT
130 IF RND(5) GSB @SCRL ELSE GSB @VIRUS
140 IF [22]=0 GOTO @LOOP
150 BEEP 30,30:LC 12,11:?"GAME OVER"
160 CLK:END
170 @VIRUS
180 V=RND(24)+5
190 LC V,0:?CHR$(244):[0]=V
200 GSB @SCRL
210 LC V,0:?" ":[0]=0
220 RTN
230 @SCRL
240 COPY #BDF,#BBF,-704
250 COPY #82D,#82B,-44
260 RTN
270 @SHOOT
280 Y=21
290 @BEAM
300 LC X,Y:?" "
310 IF X=[Y] GOTO @HIT
320 Y=Y-1:IF Y=0 RTN
330 LC X,Y:?"|"
340 GOTO @BEAM
350 @HIT
360 BEEP:S=S+1:[Y]=0:RTN

IchigoJam web版はこちら。

画面下の市民を巻き込まないように、COPY命令を使ってウイルスを下へスクロールしています(240行)。ウイルスの座標が入った配列変数も同時にコピーしています(250行)。
プログラム容量にまだ余裕があるので、ワクチンや救急車などのアイテムや新ルールを追加しても面白いでしょう。

Nゲージをマスコン制御

先日作ったNゲージ×IchigoJamに、自作のマスコン風コントローラーを付けて動かしてみました。
動画はこちら。

【IchigoJam】Nゲージをマスコン制御

f:id:shiro0922:20200224161345j:plain

f:id:shiro0922:20200224161354j:plain
マスコンはプラスチックケースやアクリル板で自作

f:id:shiro0922:20200224161440j:plain
VR(可変抵抗)をバーで回します

f:id:shiro0922:20200226121807p:plain
マスコンの回路図はこちら。

プログラム

マスコンからのアナログ入力(ANA2)に合わせてPWMの出力を変えて、加速・減速しています。

10 @ARUN:'*N-Gauge Mas-Con
20 CLV:VIDEO 3:CLS
30 ?"N-Gauge"
40 ?"Control"
50 LC 14,1:?"+"
60 LC 14,6:?"0"
70 LC 14,11:?"-";
80 V=0:A=0
90 @LOOP
100 A=(512-ANA(2))/2
110 V=V+A
120 IF V<0 V=0
130 IF V>2000 V=2000
140 PWM 2,V
150 D=A/8
160 DRAW 30,0,30,23,0
170 DRAW 30,12,30,12-D
180 WAIT 6
190 GOTO @LOOP

100m競歩

FacebookIchigoJam-FANグループで「100m競歩」を作った人がいました。面白そうなので、私も簡単なプログラムを作ってみました。
f:id:shiro0922:20200209114351p:plain

遊び方

  • 実行するとすぐにスタートです。カーソルキー「←」が左足、「→」が右足です。まず左右同時に押してから、右・左・右・左…の順に押して歩いてください。
  • 左右両方の足が空中に浮いてしまう(=両方のキーを放してしまう)と、ペナルティで一歩戻されます。必ず左右どちらかの足が地面に着いている(=左右どちらかのキーが押されている)状態で歩いてください。
  • 100mのゴールラインに辿りつくと、タイムが表示されて終了します。

プログラム

10 CLV:VIDEO 3:CLS:LC 100:?"|"
20 LC 0:?CHR$(251);:CLT
30 L=K
40 [0]=BTN(29):[1]=BTN(28):K=[0]+[1]*2
50 IF K=L GOTO 30
60 IF !K Z=Z-1:?CHR$(8,8,251);:GOTO 30
70 IF L=3 && [S] Z=Z+1:?CHR$(8,46,251);:S=1-S
80 IF Z<100 GOTO 30
90 T=TICK()
100 ?T/60;".";T%60/6
110 BEEP 10,30