SHIROのIchigoJam日記

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

micro:bit v2とIchigoJam、それぞれで連打ゲーム

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

先日、micro:bitバージョン2が発売になりました。
switch-education.com


マイクやスピーカーが標準搭載になったので、音を出すゲームなどが簡単にできるようになりました。
さっそく25個のLEDを使った連打ゲームを試作してみました。
IchigoJamと両方でゲームをプレイした動画はこちら。

micro:bitでのプログラム

makecodeでのmicro:bitのプログラム画面です。
f:id:shiro0922:20201209211638p:plain
「ボタンが押されたら○○する」などと、基本的にイベントドリブンなプログラムで作らないといけないのですが、私はあまり慣れていません。もっといい組み方があるかも…

IchigoJam BASICのプログラム

10 VIDEO 5:CLS:L="OOOOO"
20 FOR T=3 TO 1 STEP -1
30 BEEP:?T;:WAIT 60
40 NEXT:?
50 FOR Y=0 TO 4
60 ?STR$(L)
70 NEXT:CLT
80 FOR Y=4 TO 0 STEP -1
90 FOR X=0 TO 4
100 IF !BTN(32) CONT
110 IF BTN(32) CONT
120 LC 0,5:?STR$(L,Y)
130 NEXT
140 NEXT
150 T=TICK()
160 BEEP 10,60
170 ?T/60;".";T%60/6
180 WAIT 60
190 IF BTN(32) RUN ELSE CONT

画面を拡大表示にして、スクロール技を使ったアンチョコプログラムです。スペースキーを連打してドットを消します。
こんなプログラムの方が、自分の性に合っている気がします…

ちがい探し・クリスマス編

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

以前作ったプログラムを、クリスマスバージョンにリメイクしました。ちがい探し、意外に難しいです(^_^)

遊び方

  • 画面いっぱいに表示される文字で、1文字だけちがうものを見つけてください。矢印キーの上下左右でその文字へカーソルを合わせて、スペースキーを押します。
  • 5問正解すると終了で、かかったタイム(秒数)が左下に表示されます。

プログラム

10 CLV:CLT
20 LET [2],"ク","タ","リ","ソ","ス","ヌ","マ","ア","ス","フ"
30 FOR L=1 TO 5
40 CLS:R=RND(736)
50 [0]=PEEK([L*2]):[1]=PEEK([L*2+1])
60 FOR I=0 TO 735
70 ?CHR$([I=R]);
80 NEXT
90 X=X-BTN(28)*(X>0)+BTN(29)*(X<31)
100 Y=Y-BTN(30)*(Y>0)+BTN(31)*(Y<22)
110 LC X,Y,1
120 WAIT 3
125 LC 0,23:?TICK()/60;
130 Z=X+Y*32
140 IF !BTN(32) OR Z!=R GOTO 90
150 BEEP
160 NEXT:?:CLK

IchigoJam web版はこちら。
web版は画面表示が遅いので、120行を「WAIT 1」にしています。

20行目が出題データで、奇数番目が通常文字、偶数番目が1文字だけちがう文字です。
クリスマスバージョンということで「クリスマス」の文字を出題しています。文字を変えれば出題が変わります。

ちなみにこちらがオリジナルバージョン。出題文字によってはかなり難しいです。

10 CLV:CLT
20 LET [2],"o","O","O","0",":",";","I","!","Y","V"
30 FOR L=1 TO 5
40 CLS:R=RND(736)
50 [0]=PEEK([L*2]):[1]=PEEK([L*2+1])
60 FOR I=0 TO 735
70 ?CHR$([I=R]);
80 NEXT
90 X=X-BTN(28)*(X>0)+BTN(29)*(X<31)
100 Y=Y-BTN(30)*(Y>0)+BTN(31)*(Y<22)
110 LC X,Y,1
120 WAIT 3
125 LC 0,23:?TICK()/60;
130 Z=X+Y*32
140 IF !BTN(32) OR Z!=R GOTO 90
150 BEEP
160 NEXT:?:CLK

サンタのプレゼントくばり

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

自分がサンタになって、街の子どもたちにプレゼントを配る、クリスマスっぽいゲームです。
クリスマスの夜、キミは優秀なサンタになれるか?
f:id:shiro0922:20201207213303p:plain

遊び方

  • あなたはサンタになって、トナカイが引くそりに乗って空を飛びます。空の星や街のビルに当たらないように、カーソルキーの上下で操作してください。当たってしまうとゲームオーバーです。
  • 地上の街で待っている子どもたちの真上に来たら、スペースキーを押してプレゼントを投下してください。うまく子どもたちにプレゼントを渡せるとスコアが1点増えます。ただしプレゼントがコースを外れて街のビルや空の星に当たってしまうと、スコアが1点減ります。

プログラム

10 '*Santa Present
20 CLV:CLS:X=5:Y=6
30 POKE #780,#60,#70,#60,#7C,#E3,#E1,#FE,#FC
40 POKE #788,#05,#06,#07,#C6,#7F,#BF,#36,#55
50 POKE #790,0,#22,#14,#77,#77,0,#77,#77
60 @LOOP
70 IF INKEY()=32 GSB @PRE
80 WAIT 5
90 LC 31,RND(23):?"*";
100 E=RND(5)
110 FOR I=0 TO E
120 POKE #BFF-I*32,1
130 NEXT
140 IF !RND(10) LC 31,22-E:?CHR$(249);
150 LC X,Y:?CHR$(0,0)
160 SCROLL 28
170 Y=Y-BTN(30)*(Y>0)+BTN(31)*(Y<22)
180 H=SCR(X,Y)+SCR(X+1,Y)
190 LC X,Y:?CHR$(240,241)
200 LC 0:?S
210 IF !H GOTO @LOOP
220 LC X,Y:?"XX"
230 BEEP 30,30
240 LC 0,1:CLK:END
250 @PRE
260 P=Y+1
270 @PLOOP
280 IF SCR(X,P)=249 BEEP:S=S+1:RTN
290 IF SCR(X,P) BEEP 30,2:S=S-1:RTN
300 LC X,P:?CHR$(242)
310 WAIT 3
320 LC X,P:?CHR$(0)
330 P=P+1
340 GOTO @PLOOP

web版はこちら。
web版は画面表示が遅いので、80行と310行のWAITを「WAIT 0」にしています。

確か鯖江Hana道場の教室で、サンタがプレゼントを配る同様のゲームを作っていたと思いますが、オリジナルで作ってみました。
なるべく地上に近い低空で飛ぶ方がプレゼントを渡しやすいですが、ビルや星に当たらないように気をつけてください。