2013年02月11日

DPC-100プログラム・BHクイズ

 この記事も含めて、まとめはこちらLink


 昔作ったものを思い出したので、iPhoneのポケコンアプリ、DPC-100で作ってみた。

 2009年に大人の科学マガジンで、アセンブラでプログラムを組めるワンボードマイコン、「4ビットマイコン」というのが出ていた。

大人の科学マガジン Vol.24 4ビットマイコン

 当時はこれで色々とプログラムを作っていたが、その一つをブログに書いたのがこれ。

GMC-4プログラム・BHクイズ

 BHとは「Binary(2進数)・Hexadecimal(16進数)」の略を名付けてみたもの。
 このマイコンで表示される2進数と16進数のLEDを使った、アセンブラの簡単なプログラムだったが、これをDPC-100でも作ってみた。
 これって、移植と言うべきか。

20130211-01.jpg

 プログラムを起動した所。画面の左に2進数が表示されているので、16進数ではいくつになるか答えていく。
 例えばこの画面では2進数で「0110」なので、16進数では「6」が正解。

 iPhoneの画面を指でスライドすると、右の数値が0〜fと16進数で表示されるので、もう1本の指でタップすると選ぶ。
 正解・不正解をビープ音で知らせながら、右端の残りタイムが0になるまで次々と問題が出る。

20130211-02.jpg

 時間が0になれば正解数を表示して終了。

プログラムリストと解説

BHクイズ
110 TIS=SYSCLOCK()
120 SC=0
130 TIN=1
140 GOSUB NSET
150 WHILE TIN>0
160 TIN=60+TIS-SYSCLOCK()
170 TN=CLAMP((TOUCH(0,0)+430)/40,0,15)
180 PRINTF("%s%c %x | %d",BAR,28,TN,TIN)
190 IF TOUCH(-1,0)>1 GOSUB JUDGE
200 WEND
210 PRINTF("SCORE:%d",SC)
220 WAIT(2.0,0)
230 EXIT(0)
240 @JUDGE
250 IF TN==BN GOSUB OK ELSE SYSBEEP(6)
260 WAIT(0.5,0)
270 GOSUB NSET
280 RETURN
290 @OK
300 SYSBEEP(2)
310 SC+=1
320 RETURN
330 @NSET
340 BN=RANDOM()*16
350 B2=BN
360 STRING BAR
370 FOR I=4 TO 0 STEP -1
380 PW=POW(2,I-1)
390 SPRINTF(BAR,"%s%d ",BAR,B2>=PW)
400 B2-=PW*(B2>=PW)
410 NEXT
420 RETURN
 変数は、
TIS:開始時間
TIN:現在の時間
SC:正解数
TN:選んでいる数値
BN:問題の数値
B2:問題の数値・2進数変換用
I:ループ用
BAR:表示用

 サブルーチンは、
JUDGE:正解・不正解の判定
OK:正解の処理
NSET:出題の処理

 以前もやったけど、システム時間を表示する「SYSCLOCK()」を使って残り時間を表示するが、開始時にTISに入れてから、ゲーム中はそれと現在の時間+60との差を求めれば、60秒の残り時間を表示できる。

 サブルーチンNSETでランダムの数値を2進数に変換しているが、2のI乗と比較してそれ以上あったら計算というもの。

 しかし、4ビットマイコンで作った当時は、表示も限られた中でとりあえず作れるものをやってみたが、今回は時間制限とスコアを追加して、あの時に出来なかった、ゲームらしいものがようやく出来た感じ。

 と共に、更に発展して、8桁の2進数を左右2本の指で合わせて答えていくものを作ってみようかと思ったが、TOUCH()関数では2本それぞれの座標が読み取れなかったので断念した。



タグ:DPC-100 iPhone

posted by 司隆 at 16:30 | Comment(0) | Computer
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

×

この広告は180日以上新しい記事の投稿がないブログに表示されております。