2013年01月26日

DPC-100のバージョンアップとプログラム改良

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


20130126-01.jpg

 iPhoneのポケコンアプリ、DPC-100が1.0.2にバージョンアップされた。
 と言う事で、今までできなかった事や前回制作したものを修正してみた。

 今回の修正で思ったのは、このアプリはまさにメモリとの戦いという感じ。ここを上手く調整しながら作っていく必要があるかもしれない。

波がスクロール

 前回書いた、数値の増減Linkのキャラ変更版。
 そもそもこのプログラムは、これがやりたかったから作ったけど、今回のバージョンアップでグラフックキャラも表示可能になったので、ようやく実現できた。

20130126-02.jpg
波がスクロール
110 STRING BAR
120 SC=133
130 MAX=6
140 WHILE 1
150 IN=0
160 I=0
170 WHILE I<MAX*2
180 BAR=""
190 JN=IN
200 J=0
210 WHILE J<16
220 BAR+=FILLSTR(0,1,SC+JN)
230 JN-=(1&((I+J)/MAX))*2-1
240 J+=1
250 WEND
260 PRINTF(BAR)
270 WAIT(0.2,0)
280 IN-=(1&(I/MAX))*2-1
290 I+=1
300 WEND
310 WEND

ボールキャッチゲーム改良版

 また、バージョンアップのためではないけど、今まで作成したゲームの改良。
 まずボールキャッチゲームLink、追加したのは、

  • 回数の設定。3回ミスするとゲームオーバー
  • 点数が上がるごとにスピードアップ

 前回の日記で、アプリが落ちるためにスピードアップを追加できないと書いたが、このバージョンでも同じく落ちたw
 それで色々試していたら、どうも変数の中で使わないものを「FREE」命令で一度消してやると、ある程度メモリが解放されるので追加できる事が分かった。
 と言う事で、表示用サブルーチンやループなどで、終わったらすぐ「FREE」で消すようにした。これでかなり解放されるらしい。

ボールキャッチゲーム改良版
110 REAL BW=0.2
120 SC=0
130 LE=2
140 WHILE LE>-1
150 PRINTF("LEFT:%d",LE)
160 WAIT(1.0,0)
170 WHILE 1
180 BX=6
190 I=0
200 WHILE I<4
210 CH=(1&I^1)*'.'+(1&I)*' '
220 GOSUB SUB
230 WAIT(0.3,0)
240 I+=1
250 WEND
260 TX=5
270 I=0
280 WHILE I<2
290 CH=(1&I^1)*'o'+(1&I)*'O'
300 CS=RANDOM()*2
310 CS=CS*2-1
320 J=0
330 WHILE J<3
340 BX+=CS
350 GOSUB SUB
360 WAIT(BW,0)
370 IF (TX>3)&(TOUCH(-1,0)==1) THEN TX=CLAMP((TOUCH(0,0)+480)/250,0,2)
380 J+=1
390 WEND
400 FREE J
410 I+=1
420 WEND
430 FREE I
440 IF BX!=TX*6 THEN BREAK
450 CH='#'
460 SC+=1
470 GOSUB SUB
480 WAIT(1.0,0)
490 BW=CLAMP(BW-0.01,0,0.2)
500 WEND
510 CH='X'
520 GOSUB SUB
530 WAIT(1.0,0)
540 LE-=1
550 BW=CLAMP(BW+0.1,0,0.2)
560 WEND
570 PRINTF("SCORE:%d",SC)
580 WAIT(2.0,0)
590 EXIT(0)
600 SUB:
610 STRING BAR
620 BAR=FILLSTR(0,13,' ')
630 BAR=SETCHAR(BX,CH,BAR)
640 PRINTF("%s%d",BAR,SC)
650 FREE BAR
660 RETURN

地底探検ゲーム改良版

 そして、地底探検ゲームLinkの改良。

  • 画面タップでプレイヤーが横に動かないようにした
  • 回数の設定。3回ミスするとゲームオーバー

 手前に傾けようとすると微妙に横に振れてミスになってしまい、これではゲームにならなかったので、画面タップしながらだと横に動かないようにした。今まで通りの操作ならタップしなければいい。
 更に3回ミスでゲームオーバーになるようにしたので、それなりにゲームらしくなった。

地底探検ゲーム改良版
110 SC=0
120 LE=2
130 WHILE LE>-1
140 PRINTF("LEFT:%d",LE)
150 WAIT(1.0,0)
160 WHILE 1
170 HX=RANDOM()*13
180 Y=0
190 WHILE Y>-4
200 IF TOUCH(-1,0)==0 THEN X=6-CLAMP(ACCEL(1)*15,-6,6)
210 Y=CLAMP(ACCEL(0)*10,-5,4)
220 IF X==HX THEN CH='*' ELSE CH='O'
230 GOSUB SUB
240 WEND
250 IF X!=HX THEN BREAK
260 SC+=1
270 CH='_'
280 GOSUB SUB
290 WAIT(0.5,0)
300 WEND
310 I=0
320 WHILE I<20
330 CH=(1&I^1)*'*'+(1&I)*'X'
340 GOSUB SUB
350 WAIT(0.1,0)
360 I+=1
370 WEND
380 LE-=1
390 WEND
400 PRINTF("SCORE:%d",SC)
410 WAIT(2.0,0)
420 EXIT(0)
430 SUB:
440 STRING BAR
450 BAR=FILLSTR(0,13,' ')
460 BAR=SETCHAR(X,CH,BAR)
470 PRINTF("%s%d",BAR,SC)
480 FREE BAR
490 RETURN


(2013/01/27 追記)
 DPC-100で、プログラム終了の命令は「END」ではなく「EXIT(0)」だった事に気付いたので修正。リストに「END」を書いて実行すると、エラーが出ずにスルーする。
 どうも今まで、最後のENDをスルーして一度サブルーチンまで実行という、マヌケな処理をしていたらしい。



タグ:DPC-100 iPhone

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

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

×

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