2013年02月24日

DPC-100プログラム・金庫破りゲーム

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


 iPhoneのポケコンアプリ、DPC-100のバージョンアップで、今度はLEDライトが使えるようになった。
 これで、iPhoneの制御を自由に簡単にできるアプリの一つになった気がする。

 そこで、早速LEDライトを使ってゲームを作ってみた。
 タイトルとしては金庫破りゲーム。泥棒になった気分で、金庫のダイヤルを回して開けようという、本当のお遊び。

20130224-01.jpg20130224-02.jpg

 起動すると、コンパスの機能を安定させるために3秒待ってもらうが、新バージョンでは「RUN...」と出るようになったんだな。
 その後、矢印と数字が出る。

20130224-03.jpg

 ここでは、iPhone本体を金庫のダイヤルと見立てて、その方向に回すとダイヤルが動く。その角度は数値で表示。
 回す時、本体は水平でも垂直でも同様に回す事が可能。

 ゆっくり回し続けると、どこかで一瞬LEDライトがフラッシュするが、金庫のロックが1段階開いた信号。

20130224-04.jpg

 すると、矢印は逆方向になるので、またその方向に回す。

20130224-05.jpg

 これを5回繰り返したら金庫が開いて、かかった時間が表示される。この早さを競うもよし、金庫破りの気分を味わうもよし。

 でもこれ、一気に素早く回してしまうと位置がずれて開けられなくなってしまう。言ってみればバグだけど、逆にゆっくり回さないと開けられないので、そのまま残しておいた。

 また、これって別に、開いた信号はLEDじゃなくて音でもいいのでは?と思った方、違う。
 新機能を使ってみたかったのもあるけれど、これを、部屋の電気を消して暗闇でやったら、まさに金庫破りの気分が味わえる!

 まあ、iPhoneの機能を実にアホな遊びに使ってみましたと言う事。

金庫破りゲーム
110 // ** INITIALIZE **
120 SCHVOLUME(0,15)
130 LOCATION(1)
140 WAIT(3.0,0)
150 C2=0
160 C3=0
170 PM=0
180 ST=SYSCLOCK()
190 I=0
200 GOSUB CRESET
210 WHILE I<5
220 // ** UNLOCK SET **
230 OP=RANDOM()*270
240 OP+=90
250 OP*=(PM*2-1)
260 OP+=C3
270 // ** MAIN LOOP **
280 WHILE C3!=OP
290 C2=COMPASS(0)
300 IF C1!=C2 GOSUB TSOUND
310 C4=ABS(C3)
320 C4%=360
330 CH=(1&PM^1)*237+(1&PM)*238
340 PRINTF("%c %d",CH,C4)
350 FREE C4
360 FREE CH
370 WEND
380 // ** UNLOCK **
390 GOSUB CRESET
400 TORCH(1)
410 WAIT(0.05,0)
420 TORCH(0)
430 PM^=1
440 I+=1
450 WEND
460 // ** OPEN **
470 CT=SYSCLOCK()-ST
480 CM=CT/60
490 CT=CT-CM*60
500 PRINTF("TIME %d:%d OPEN!!",CM,CT)
510 FOR I=0 TO 3
520 SYSBEEP(1)
530 WAIT(1.0,0)
540 NEXT
550 EXIT(0)
560 // ** SUB **
570 @TSOUND
580 SCHSTATE(0,1)
590 SCHNOTE(0,100)
600 WAIT(0.01,0)
610 SCHSTATE(0,0)
620 GOSUB CRESET
630 RETURN
640 @CRESET
650 C2+=(C2-C1<-180)*360
660 C2-=(C2-C1>180)*360
670 C3+=C2-C1
680 C1=COMPASS(0)
690 RETURN
 変数は、
C1:現在の角度
C2:角度検知用
C3:累積角度
C4:画面表示用角度(0〜360度の表示)
PM:ダイヤルを回す方向(0 or 1)
OP:ロックが開く角度
ST:開始時間
CT:終了時間
CM:終了時間・分の単位(表示用)
CH:左右矢印表示用
I:ループ用

サブルーチンは、
@TSOUND:ダイヤル回転音
@CRESET:角度計算用

 本体の角度を取得する方法として、コンパス機能「COMPASS(0)」を使っているが、以前ブログに書いた、コンパス機能の検証Linkを使っている。
 C1に今の角度、C2に移動検知用の角度を入れて、C2に変化があったら音を鳴らすと共にC3に加算していく。
 それによって、C3には累積された角度が入るので、360を越えた角度や、極端な話、10回転して3600度も判別可能になる。

 ロックが開く角度は、一度ランダムの数値0〜269を出して、それに90を足せば90〜359の数値に、更に方向を示すPMを計算すれば+か-の方向が決まる計算。

 ブログに掲載する時に毎回、変数とサブルーチンを表記するのは、作った後で無駄が無いか、自分で再確認するため。だから、これを書いてから色々と見つけて修正する事も多い。
 それに、コンパス機能の検証についての記事は、今回早速使えたり、ブログに残しておくと色々と役に立つ。

 しかしiPhoneって、本体を垂直に立ててもちゃんと方角を傾けた角度として検知してくれるのは面白い。色々と使い道がありそう。



タグ:DPC-100 iPhone

posted by 司隆 at 10:59 | Comment(2) | Computer
この記事へのコメント
50秒で金庫開きましたがどうなんでしょうか?
Posted by さく at 2013年02月28日 20:47
さくさん
私もそれくらいですね。
早開けを目指すのも面白いです。
Posted by 司 隆 at 2013年02月28日 21:06
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

×

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