Five-Tenさん謹製のIchigoRoulette基板キットを、入手して作ってみました。
LEDが6個(OUT1~OUT6)、タクトスイッチが4個(IN1~IN4)載った拡張基板です。
いくつかプログラムを作ってみたので、以下に紹介します。
ルーレット
キット同封の説明書にルーレットのプログラムが載っているのですが、子ども向けにちょっと短くしました。
SW4(左下ボタン)で停止、SW3(右下ボタン)で再開します。
10 'ROULETTE 20 OUT 0 30 I=(I+1)%6 40 OUT I+1,1 50 BEEP 60 WAIT 5 70 IF IN(4) GOTO 20 80 IF IN(3) CONT 90 RUN
小惑星着陸
ルーレットの応用プログラムです。(前半はほぼ一緒なので、ルーレットを改造して作るといいでしょう)
起動すると、探査機が小惑星(黄色LED)の回りを回ります。減速ロケット(SW3、右下ボタン)と加速ロケット(SW4、左下ボタン)を操作して、探査機を小惑星に着陸させてください。黄色LEDで止まれば着陸成功、赤色LEDで止まってしまうと失敗です。
どれかのボタンを押すとリプレイします。
10 'LANDING 15 W=5 20 OUT 0 30 I=(I+1)%6 40 OUT I+1,1 50 BEEP 60 WAIT W 70 W=W+!IN(3)*5-!IN(4)*5 80 IF W<60 GOTO 20 90 BEEP 10+20*(I!=1),60 100 WAIT 60 110 IF IN()&15=15 CONT 120 RUN
サイモン(記憶ゲーム)
起動すると、LED4個(1,3,4,6)のうちのどれか1個が点灯します。
対応するボタンを押すと、次は出題が1個増えます。間違えないように順番にボタンを押してください。
回答をミスするとゲームオーバーです。どれかのボタンを押すとリプレイします。
なお、回答の際に複数のボタンを一度に押してもミスになります。正解を1個ずつ押してください。
10 '*SIMON 20 CLV:OUT 0 30 IF BTN() CONT 40 SRND TICK()+ANA(2) 50 [91]=1:[92]=3:[93]=4:[94]=6 60 [95]=7:[96]=14:[97]=13:[98]=11 70 WAIT 60 80 @QUEST 90 M=M+1 100 [M]=RND(4)+1 110 FOR I=1 TO M 120 N=[I] 130 OUT [90+N],1 140 GSB @PLAY 150 OUT [90+N],0 160 NEXT 170 @ANSWER 180 A=0 190 @ALOOP 200 N=0 210 FOR I=1 TO 4 220 IF IN()&15=[94+I] THEN N=I 230 NEXT 240 IF N=0 THEN GOTO @ALOOP 250 A=A+1 260 IF N<>[A] GOTO @END 270 OUT [90+N],1 280 GSB @PLAY 290 OUT [90+N],0 300 IF A<M GOTO @ALOOP 310 WAIT 60 320 GOTO @QUEST 330 @END 340 OUT 63 350 BEEP 30,120 360 WAIT 120 370 @RESTART 380 IF IN()&15=15 GOTO @RESTART ELSE RUN 390 @PLAY 400 IF N=1 PLAY "R32D" 410 IF N=2 PLAY "R32G" 420 IF N=3 PLAY "R32A" 430 IF N=4 PLAY "R32B" 440 WAIT 30 450 RTN
もぐらたたき
起動すると、LED4個(1,3,4,6)のうちのどれか1個が点灯するので、対応するボタンを押して、もぐらを叩いてください。
30秒間叩くとゲームが終了して、叩いたスコアがLEDで2進数表示されます。どれかのボタンを押すとリプレイします。
なお、ズルしてボタンを押しっぱなしにすると、お手つきになってスコアが減ります。
10 '*Mogura Tataki 20 CLV 30 IF BTN() CONT 40 SRND TICK()+ANA(2) 50 [91]=1:[92]=3:[93]=4:[94]=6 60 [95]=7:[96]=14:[97]=13:[98]=11 70 L=1800:N=80 80 WAIT 60 90 CLT 100 @LOOP 110 OUT 0 120 WAIT 10 130 @MRND 140 R=RND(4)+1 150 IF R=M GOTO @MRND 160 M=R 170 OUT [90+M],1 180 BEEP 30 190 W=TICK()/N 200 @TATAKU 210 IF IN()&15=[94+M] GOTO @HIT 220 IF TICK()/N=W GOTO @TATAKU 230 IF IN()&15!=[94+M] S=S-(S>0) 240 IF TICK()<L GOTO @LOOP 250 OUT 0 260 BEEP 30,60 270 WAIT 60 280 OUT S 290 IF IN()&15=15 CONT 300 RUN 310 @HIT 320 OUT 0 330 BEEP 340 S=(S+1)%64 350 N=N-2:IF N<=0 N=1 360 WAIT 10 370 GOTO @LOOP