2013年01月30日

DPC-100プログラム・カーリング風ゲーム

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


 iPhoneのポケコンアプリ、DPC-100のゲーム、今度はウィンタースポーツで知られる、氷の上で石を滑らせる、カーリングを作ってみた、
 と言っても、実際のカーリングとルールが全く違うので、その気分を味わえる「カーリング風ゲーム」という事で。

20130130-01.jpg

 起動した所。左端にあるのが自分の動かす「ストーン」、右にあるのが的、カーリングでは円の中心を「ティー」と言うが、ストーンを滑らせてティーの位置に止めるゲーム。
 画面を指で押しながら、左から右にスライドして離すと、スライドした長さに応じてストーンが動き出す。
 ティーの位置はランダムで表示するとか、この時点ですでにカーリングではないが。

20130130-02.jpg20130130-03.jpg

 止めた画面と失敗した画面。ストーンがティーに止まったら1点加算される。

20130130-04.jpg

 10回投げたらスコアが、全て成功したらパーフェクトと出て終了。

リストとプログラム解説

カーリング風ゲーム
110 PW=50
120 SC=0
130 SP=0
140 WHILE SP<10
150 PRINTF("SHOT:%d",SP+1)
160 WAIT(1.0,0)
170 X=0
180 TX=(RANDOM()*9+6)*PW
190 CH='@'
200 GOSUB SSUB
210 WHILE TOUCH(-1,0)<1
220 WEND
230 X1=TOUCH(1,0)
240 WHILE 1
250 IF TOUCH(-1,0)==0 THEN BREAK
260 X2=TOUCH(1,0)
270 WEND
280 X1=CLAMP(X2-X1,50,700)
290 I=1
300 WHILE I<X1
310 X=CLAMP(X+X1/I,0,15*PW)
320 GOSUB SSUB
330 WAIT(0.05,0)
340 IF X>=15*PW THEN BREAK
350 I+=5
360 WEND
370 IF TX/PW==X/PW GOSUB HIT ELSE GOSUB MISS
380 GOSUB SSUB
390 WAIT(1.0,0)
400 SP+=1
410 WEND
420 IF SC==SP THEN PRINTF("PERFECT!!") ELSE PRINTF("SCORE:%d",SC)
430 WAIT(2.0,0)
440 EXIT(0)
450 HIT:
460 CH='*'
470 GOSUB SSUB
480 SC+=1
490 RETURN
500 MISS:
510 CH='X'
520 GOSUB SSUB
530 RETURN
540 SSUB:
550 STRING BAR
560 BAR=FILLSTR(0,16,' ')
570 BAR=SETCHAR(TX/PW,'O',BAR)
580 BAR=SETCHAR(X/PW,CH,BAR)
590 PRINTF("%s",BAR)
600 FREE BAR
610 RETURN

 変数としては、
PW:移動倍率
SC:スコア
SP:投数
X:ストーンの座標
TX:ティー(的)の座標
X1:タップを始めた位置、スライドの移動量
X2:タップを離した位置、
CH:表示するキャラクター
BAR:表示用
I:ループ用

 サブルーチンは、
HIT:成功した時の処理ルーチン
MISS:ミスした時の処理ルーチン
SSUB:表示用ルーチン

 処理としては、ストーンを動かして止めて同じ座標か見るのを10回繰り返す。と一言で言い切れるが、ストーンの動きに少し凝って、ストーンに加速度を付けて、ゆっくり速度を落として止まる動きにしてみた。
 その処理が310行。

310     X=CLAMP(X+X1/I,0,15*PW)

 X1がスライドした長さ、それをループ用の変数Iで割る事によって、Iが増えるごとにだんだん加算する数値が減っていく、つまり速度がゆっくりになっていく。それをXにどんどん足していけばいい。
 その移動量は、350行にあるIの増数、110行にあるPWで調整している。この数値を変えれば挙動を変えられる。

 ゲームとしては、カーリングのストーンを滑らせる感覚で、指を左から右に滑らせて動かすイメージで作ったけど、プログラム的には「押した位置と離した位置の差を検出」しているだけ。
 だから、一度右にスライドして戻してから離す、長い事押しっぱなしで離しても動作してしまう。これを処理しようと思ったらまた長くなるのでやめといた。

 このゲーム、作ってみて、自分でも結構楽しめているという。



タグ:DPC-100 iPhone

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

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

×

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