Category Archives: IchigoJam

IchigoJamでHIT&BLOW

ブームに乗ってIchigoJamを買ってみた。

「こどもパソコン」というキャッチフレーズのIchigoJam
しかしこどもに渡さずオッサンが楽しんでいるのだ。

キットは下の写真の内容である。

IchigoJam1

IchigoJam キット

 

組み立てるとこんな感じ。電源をモバイルバッテリで供給しポータブルDVDプレーヤに出力したのでモバイルパソコンとなった。

IchigoJam2

IchigoJam 動作風景

しかし小さい画面ではやりにくいのでプログラミングの際はPCとシリアル接続することにした。これならいつものPCでTeraTermから入力できてやりやすい。

と言う訳で、久々のBASICなので懐かしいHIT&BLOWを作ってみた。
昔のマイコンゲームと言えばまずこれだろう。
若者は知らないかもしれないのでルールを書くとだいたい次の通り。

  1. コンピュータが4桁の(各桁の数字が重複しない)数値をランダムに生成する。
    これは現時点では表示されない。
  2. そしてプロンプトが出てきて人間がこれと思う4桁の数値を入力して当てていく。
  3. 数値を入力すると、コンピュータから次のヒントがでる。
    ・桁も数値も一致する事をHITと呼び、この数を表示する。
    ・桁は違うが数値が一致する事をBLOWと呼び、この数も表示する。
  4. たとえばコンピュータが用意した数値が1234だとして人間が1426と入力すると、HIT=1,BLOW=2というヒントが表示される。
  5. 要は入力した値に応じて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]