2013年01月22日

DPC-100プログラム・地底探検ゲーム

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


 DPC-100のプログラムで、とりあえずゲームとして動くものを作ったので掲載。
 80年代のパソコン雑誌「マイコンBASICマガジン」のプログラムコーナーで、よくゲームの題材に使われたような、延々と下に進み続ける「地底探検ゲーム」というものを思い出して、それらしいものを。
 それも、iPhoneだからできるものとして。

地底探検ゲーム
110 STRING BAR
120 LV=10
130 SC=0
140 WHILE 1
150 HX=RANDOM()*13
160 WHILE 1
170 X=6-CLAMP(ACCEL(1)*LV,-6,6)
180 Y=CLAMP(ACCEL(0)*LV,-5,4)
190 IF X==HX THEN CH='*' ELSE CH='O'
200 GOSUB SUB
210 IF Y<-3 THEN BREAK
220 WEND
230 IF X!=HX THEN BREAK
240 SC+=1
250 CH='_'
260 GOSUB SUB
270 WAIT(0.5,0)
280 WEND
290 I=0
300 WHILE I<20
310 CH=(1&I^1)*'*'+(1&I)*'X'
320 GOSUB SUB
330 WAIT(0.1,0)
340 I+=1
350 WEND
360 END
370 SUB:
380 BAR=FILLSTR(0,13,' ')
390 BAR=SETCHAR(X,CH,BAR)
400 PRINTF("%s%d",BAR,SC)
410 RETURN

20130122-02.jpg

 プログラムを動かした所。
 右端がスコア、真ん中の「O」がプレイヤーで、iPhone本体を左右に傾けると、プレイヤーも左右に転がるように動くが、

20130122-03.jpg

 ある場所で「*」の表示になって下に進める事を示す。ここで本体を手前に傾けると、ボールが落ちるように進んで1点入る。落ちる事ができる場所はランダム。
 それ以外の場所で落とすとミスで即ゲームオーバー、そこまでのスコアを競うというもの。
 だから、プログラム開始時に本体を立てていると即ゲームオーバーになるので、画面を水平にしてから起動が必要。

 でもこれ、下に傾けようとしたら、微妙に左右に動いてミスが多い。これをゲームとして面白いと見るか、まだまだ調整が必要か。

プログラム解説

 変数としては、
SC:スコア
X:プレイヤーX座標
Y:本体の傾き
LV:傾きの感度
HX:穴(通れる場所)の座標
CH:表示するキャラクター
BAR:表示用
I:ループ用

 Xを動かしながら、XとHXが合えばキャラクターを変えて表示、傾けた時にXとHXが同じなら1点、違っていればループを抜けてゲームオーバーという処理。
 表示キャラクターをCHに入れてサブルーチンに飛ばすようにしているが、書いておいた方がいいのが310行、

CH=(1&I^1)*'*'+(1&I)*'X'

 Iが0〜20でループ中、この計算をしてその都度表示サブルーチンに飛ばす。
 以前にも書いた、「1&I」のAND演算によってIは0か1を算出。更にそれを「^1」でXOR演算、つまり0と1を反転する。これによって、

I(1&I^1)(1&I)
偶数10
奇数01

 この数値が得られるので、Iによって「*」と「X」の文字が交互に入れ替わる処理ができる。
 これを使えば、キャラクターの点滅なども簡単にできるので、結構汎用性はあると思う。

(2013/01/25 追記)
 プログラム解説を追加。

(2013/01/26 追記)
 修正版を作成。
DPC-100のバージョンアップとプログラム改良



タグ:DPC-100 iPhone

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

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

×

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