ブームに乗ってIchigoJamを買ってみた。
「こどもパソコン」というキャッチフレーズのIchigoJam。
しかしこどもに渡さずオッサンが楽しんでいるのだ。
キットは下の写真の内容である。
組み立てるとこんな感じ。電源をモバイルバッテリで供給しポータブルDVDプレーヤに出力したのでモバイルパソコンとなった。
しかし小さい画面ではやりにくいのでプログラミングの際はPCとシリアル接続することにした。これならいつものPCでTeraTermから入力できてやりやすい。
と言う訳で、久々のBASICなので懐かしいHIT&BLOWを作ってみた。
昔のマイコンゲームと言えばまずこれだろう。
若者は知らないかもしれないのでルールを書くとだいたい次の通り。
- コンピュータが4桁の(各桁の数字が重複しない)数値をランダムに生成する。
これは現時点では表示されない。 - そしてプロンプトが出てきて人間がこれと思う4桁の数値を入力して当てていく。
- 数値を入力すると、コンピュータから次のヒントがでる。
・桁も数値も一致する事をHITと呼び、この数を表示する。
・桁は違うが数値が一致する事をBLOWと呼び、この数も表示する。 - たとえばコンピュータが用意した数値が1234だとして人間が1426と入力すると、HIT=1,BLOW=2というヒントが表示される。
- 要は入力した値に応じてHITとBLOWが表示され、このヒントを元に正解を推測していく。いかに少ない回数で当てるかを競うゲームなのだ。
なおIchigoJamに入っていたファームウェアバージョンは0.9.7で、このバージョンだとFOR文が使えずエラーとなるのでIFとGOTOでループを作った(さすがに大昔使ったTK-80BSでもFORは使えたが・・・)。 でも最新ファームならFORも可能だそうです。
リスト:
1 REM *** HIT & BLOW *** 5 I=0 10 IF I>3 THEN GOTO 70 20 [I]=RND(10) 29 J=0 30 if J>=I THEN GOTO 60 40 IF [J]=[I] THEN GOTO 20 50 J=J+1: GOTO 30 60 I=I+1: GOTO 10 70 REM print ">>>",[0],[1],[2],[3] 100 INPUT ">>>",A 110 [10]=A/1000 120 [11]=(A%1000)/100 130 [12]=(A%100)/10 140 [13]=A%10 150 REM print [10],[11],[12],[13] 200 H=0:B=0: 209 I=0 210 IF I>3 THEN GOTO 240 220 IF [I]=[I+10] THEN H=H+1 230 I=I+1: GOTO 210 240 IF H=4 THEN GOTO 1000 300 I=0 310 IF I>3 THEN GOTO 370 320 J=10 330 IF J>13 THEN GOTO 360 340 IF [I]=[J] THEN B=B+1 350 J=J+1: GOTO 330 360 I=I+1: GOTO 310 370 B=B-H 380 PRINT "HIT:",H,"BLOW",B 400 GOTO 100 1000 print "ANSWER>",[0],[1],[2],[3]