2013年01月21日

iPhone用ポケコンアプリ・DPC-100

 iPhoneでなかなか面白いアプリが出たので、早速購入して使ってみた。

20130121-01.jpg

DPC-100 of DETUNE

往年の「ポケコン」がiOSアプリで復活(ITmedia ニュース記事)

 画面やニュース記事を見てもらえれば分かるが、あのポケットコンピューターがiPhoneアプリとして登場した。

 ポケットコンピューター(ポケコン)とは、液晶画面の1行のみ、表示も文字のみというあまりに簡易的ながら、BASICを使ったプログラムが作れる、文字通りポケットタイプのパソコン。
 80年代を中心に、安価で手軽なプログラム入門機として普及し、今でも技術計算などで使用している人も少なくない。
 私も当時のBASICプログラムを打ち込んでいた世代として、無性にやりたくなって購入。

 制作元の公式にはBASICリファレンスのページがあるので、使用できるコマンドなどはこちらを参照。

DPC Series Basic Reference

 でも、現在配信されているVer.1.0.0はこのリファレンスより更に古いらしく、文字コードでもカナが使えないなど未対応が多い。

早速プログラム2本

 とりあえず、これでできる範囲で、iPhone独自の機能を使ったプログラムを作ってみた。

20130121-02.jpg
タッチパネルに応じて棒の長さが伸縮
10 LOOP:
20 X=(TOUCH(0,0)+480)/50
30 IF X==X2 GOTO LOOP
40 PRINT FILLSTR(0,X,'-'),
50 X2=X
60 GOTO LOOP
 画面をタッチする位置によって、棒の長さが伸縮するプログラム。

 iPhoneのタッチパネルの位置を検出する命令「TOUCH(ID,PARA)」で、Xは-480〜+480の数値が取得できるので、これを16桁の液晶に納める計算が20行目。
 30行のIF文は、「数値が変わらない限り(触れてないなど)は表示せずに待ってる」ためのもの。これをしないと延々と単滅したような表示がされるので。


20130121-03.jpg
本体を傾けると球が動く
10 LOOP:
20 X=16-(ACCEL(1)+1)*8
30 IF X==X2 GOTO LOOP
40 PRINT FILLSTR(0,X,' ');"O",
50 X2=X
60 GOTO LOOP
 本体を傾けると、それに応じて画面の球が動くプログラム。

 本体のジャイロセンサーを検知する命令「ACCEL(PARA)」で、数値は-1.000000〜+1.000000と小数で得られるので、それを16桁に納める計算が20行。

PC連携や気付いた点など

 こう言うプログラム、タッチパネルのキーボードだけでは面倒なので、PCから転送できないかと思ったら、方法はあった。

BASICリファレンス「LOAD」の項目

 この方法で、iTunes経由でPCと連係してデータ転送も可能。

 また、今の時点で気付いた欠点としては、
  • 計算式で、()が増えるなど複雑になるとアプリが落ちる。そのため、計算式もある程度分けないといけない。
  • 行の最後に「;」「,」を入れてしまう(「GOTO LOOP;」など)と、エラーが出ずにプログラムが止まる。STOPで停止可能。
  • C言語と互換のある「PRINTF」命令は、必ず改行されたり「¥」を使った制御ができない。
  • カナ文字と共にグラフィック文字も使えない、コードが合わない(現在のバージョンのみと思われる)。
  • Bluetoothキーボードが使えない。
 中でも、キーボードに対応していないのは残念。

ポケコンの魅力

 ポケコンの面白さは、パソコンと違って1行しか表示できないが、逆にその少なさを利用したプログラムやゲームも作れる、そんな制限された中で工夫する面白さがあった。
 今回のアプリで、その面白さを改めて味わう事ができた。

 今はポケコンとしてもまだまだ制限が多いけど、これからバージョンアップする期待も含めて、色々と楽しめそうなアプリだと思う。

(追記)
 最初、複数の文字を表示するのにFOR〜NEXTを使っていたけど、後で調べたら、指定した数の文字を表示する命令「FILLSTR」がある事を知ったので、大幅にリスト短縮。

(2013/01/22 追記)
 DPC-100のプログラムを含めて、まとめを掲載。

BASIC・マクロ等プログラムまとめ



タグ:iPhone DPC-100

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

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

×

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