目次

モグラたたき(ブレッドボード)

 ブレッドボードに、LEDとスイッチをつけて
 「モグラたたき」を作っていきます。

 ブレッドボードに6個のLEDがあるとして
 ランダム点灯するプログラムを作成。

 ブレッドボードにLEDを配置すると、以下。



 LEDを選ぶため、乱数を使います。

 ブレッドボード上のLEDをランダムに
 点灯できるかをプログラムでチェック。

10 '
20 @LOOP
30 GSB @LOFF
40 R=RND(6)+1:? R;
50 OUT R,1:WAIT 60
60 IF BTN() GOTO @EXIT
70 GOTO @LOOP
80 @EXIT
90 CLS:GSB @LOFF:END
100 @LOFF
110 FOR I=1 TO 6
120   OUT I,0
130 NEXT
140 RETURN

 ひとつの入力で、複数のスイッチのどれが押されたか
 を知るために、次の回路を利用することに。
 (抵抗値は、すべて同じで10kΩとします。)



 スイッチを押したときに、A/D変換器では
 どのような値になるのか、spread sheet
 で計算。



 計算は、分子に1024をかけて、その値を分母で
 割って、整数になるようにしてあります。

 ANA(2)で、値を読み込んで、どのスイッチが
 押されたのかを、判定すればよいでしょう。

 値を読み込んで、スイッチの値を返す
 サブルーチンを書いてみます。

200 @GETV
210 V=ANA(2)
220 S=0
230 IF 500 < A AND A < 550 S=1
240 IF 660 < A AND A < 700 S=2
250 IF 740 < A AND A < 800 S=3
260 IF 800 < A AND A < 830 S=4
270 IF 830 < A AND A < 860 S=5
280 IF 860 < A AND A < 900 S=6
290 RETURN

 ゲームなので、モグラの番号とスイッチの
 番号が同じなら、ヒットとして音を出して
 わかるようにしておきましょう。

300 @UPDATE
310 B=100
320 T=TICK()
330 IF R != S GOTO 360
340 BEEP 10,B
350 G=G+10
360 LC 5,20:? G,"time",T
370 IF T > 3600 A=1
380 RETURN

 ヒットしたときに、得点が10点ずつ増える
 ようにしてみました。
 また、1分でゲームオーバーになるように
 しています。

 初期化処理も用意。

400 @INIT
410 CLS
420 A=0:G=0:B=100
430 CLT
440 RETURN

 まとめてみると、以下。

10 ' test9
20 GSB @INIT
30 @LOOP
40 R=RND(6)+1
50 GSB @LOFF:GSB @LON:GSB @GETV:GSB @UPDATE
60 IF A=0 GOTO @EXIT
70 GOTO @LOOP
80 @EXIT
90 CLS:? "GAME OVER"
95 END
100 @LOFF
110 FOR I=1 TO 6
120   OUT I,0
130 NEXT
140 RETURN
150 @LON
160 OUT R,1
170 RETRUN
200 @GETV
210 V=ANA(2)
220 S=0
230 IF 500 < A AND A < 550 S=1
240 IF 660 < A AND A < 700 S=2
250 IF 740 < A AND A < 800 S=3
260 IF 800 < A AND A < 830 S=4
270 IF 830 < A AND A < 860 S=5
280 IF 860 < A AND A < 900 S=6
290 RETURN
300 @UPDATE
310 T=TICK()
320 IF R != S GOTO 350
330 BEEP 10,B
340 G=G+10
350 LC 5,20:? G,"time",T
360 IF T > 3600 A=1
370 RETURN
400 @INIT
410 CLS
420 A=0:G=0:B=100
430 CLT
440 RETURN

 LEDの回路は、以下。




目次

inserted by FC2 system