SHIROのIchigoJam日記

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

サイモン

記憶力ゲーム「サイモン」を作ってみました。
IchigoJamの開発者・福野さんのブログにもサイモンがありますが、こちらはTV+キーボードと、外部のLED+ボタン入力の、両方に対応しています。
また、数字に合わせて音が鳴ります。音階はお馴染みの学校チャイムです(^_^)
子ども向けの教材を想定して、単純・冗長なプログラムになっています。

動作画面

ブレッドボードで作ったLED+ボタンボード

LED+ボタンボードの回路図。ブレッドボードの配置に合わせて書いています。

ゲームのルール

起動すると、1〜4のうちの1個の数字が出題されます。
キーボードでその数字キーを押すか、外部のその番号のボタンを押します。
出題される数字は、2個・3個…と1個ずつ増えていきます。間違えないように回答してください。
ミスすると、完全に正答できた所までの個数がスコアとして表示され、ゲームオーバーとなります。
キーボードの「1」を押すか、外部ボタンの1番を押すと、リプレイとなります。
プログラムを終了したい時は、ESCキーで止めてください。

外部LED+ボタン

外部入出力を使う場合は、OUT1〜4にLED、IN1〜4にボタンを接続してください。

LED

OUT端子−電流制限抵抗−LED−GNDと接続してください。
抵抗入りLEDを使っても構いません。

ボタン

VCC−ボタン−IN端子と接続してください。
IN3にはGNDとの間にプルダウン抵抗(100K〜1MΩ)もつないでください。

修正

(4/20)

  • TV無しで外部LED+ボタンだけでプレイする環境を想定して、ゲームオーバー時のLED表示や音をわかりやすくしました。
  • ゲームオーバー時に、キーボードの「1」か外部ボタンの1番を押すとリプレイするようにしました。
  • プログラム容量が1KBをオーバーしたので、若干省略して収めました。

プログラム

10 '* SIMON *
20 CLV
30 CLS
40 PRINT "*** SIMON ***"
50 FOR I=1 TO 4
60 LOCATE I,2
70 PRINT I
80 OUT I,0
90 NEXT
100 WAIT 60
110 '@QUEST
120 M=M+1
130 [M]=RND(4)+1
140 FOR I=1 TO M
150 N=[I]
160 LOCATE N,3
170 PRINT "*"
180 OUT N,1
190 GOSUB 610
200 LOCATE N,3
210 PRINT " "
220 OUT N,0
230 NEXT
240 '@ANSWER
250 LOCATE 0,10
260 PRINT "LET'S PLAY!"
270 LOCATE 0,11
280 A=0
290 '@ALOOP
300 N=INKEY()-48
310 FOR I=1 TO 4
320 IF IN(I)=1 THEN N=I
330 NEXT
340 IF N<1 OR N>4 THEN GOTO 290
350 A=A+1
360 PRINT N;
370 OUT N,1
380 IF N<>[A] THEN GOTO 510
390 GOSUB 610
400 OUT N,0
410 IF A