2013年01月31日

DPC-100プログラム・ハイパーオリンピック

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


 iPhoneのポケコンアプリ、DPC-100のゲームを作ったが、80年代にゲーマーだった人なら、タイトルだけでもう説明不要だと思う、ハイパーオリンピックの100m走。
 最初、画面を連打するゲームを作ってみたいなと考えていたら、もうハイパーオリンピックしか頭に思い浮かばなかったから。

20130131-01.jpg

 プログラムを起動した所。
 まずは右の数字がカウントダウンされるので、0になったらスタート。

20130131-02.jpg20130131-03.jpg

 ゲーム中は右にタイムが表示されている中、画面をひたすらタップで連打。右端のゴールへ向かう。右の画面がゴールした所。

 ハイパーオリンピックとは言え、iPhoneの画面なので定規は使えない(使ったら壊れます)。でも、画面端を利用したらコスリはできる。
 自分でケイレンやピアノ撃ちでやってみて、だいたい10秒くらいになったので、ハイパーオリンピックらしいかなと思う。

プログラムリストと解説

ハイパーオリンピック
110 FM=1
120 CH=128
130 REAL DT=3.0
140 WHILE DT>0
150 GOSUB SSUB
160 WAIT(1.0,0)
170 DT-=1
180 WEND
190 REAL ST=SYSCLOCK()
200 WHILE FM<=200
210 DT=SYSCLOCK()-ST
220 GOSUB SSUB
230 IF (FM&1)==(TOUCH(-1,0)&1) THEN FM+=1
240 WEND
250 CH='*'
260 GOSUB SSUB
270 WAIT(2.0,0)
280 EXIT(0)
290 SSUB:
300 STRING BAR
310 FC=FM/20
320 BAR=FILLSTR(0,FC,132)
330 BAR+=FILLSTR(FC+1,11-FC,' ')
340 BAR=SETCHAR(FC,(FM-FC*20)/4+128,BAR)
350 BAR=SETCHAR(10,CH,BAR)
360 PRINTF("%s%2.2f",BAR,DT)
370 FREE BAR
380 RETURN

 変数は、
FM:距離
FC:距離・表示用
ST:開始時間
DT:表示タイム
CH:ゴールのキャラクター
BAR:表示用

 タイムを表示する方法として、「SYSCLOCK()」の命令を使っているが、これはシステム時間を表示するもので、0から開始する事ができない。
 そのため、スタートした瞬間の時間をSTに入れて、現在の時間との差を表示するようにしている。

 連打するために「一度押してから離したら1m走る」という処理をしているのが、200〜220行のメインループ。
 走った距離FMは、「押して離す」を100回で終わるようにするため、200までにする。それをを1でAND演算したら、「1、2、3」に対して「1、0、1」になる。それとタッチの数値が同じかを見るという処理。

 また、タッチの数値も同じくAND演算する事によって、指を2本以上タップしても1か0の数値になって反応するようにしている。
 これは、両手でたくさん連打したら、より速く走るようにしたかったからw

 距離をグラフのように表示する方法としては、10m単位の数値FCの数だけ「■」を表示してから、1m単位を端に対応するキャラクターで出している。

 この後、ハイパーオリンピックの他の競技は、たぶん作らないw


(2013/02/01 追記)
 メインのループで、ループ変数Iを無くすなどの短縮と、タップを指2本以上にも対応。



タグ:DPC-100 iPhone

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

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

×

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