ゼロヨン de GO!

2009年3月3日

ポケコンでゼロヨンができます。といっても、ただ速く走ればいいというものでもありません。タイトルを見ればわかるように、停止位置できちんと止まらなければなりません。あなたは私のハイスコア(398)を超えることができるでしょうか?

入力方法

FX-890Pやその互換機で動作するBASICプログラムです。適当なPエリアを一つとF9を使用します。 まず、F・COMでF9をNEWしてください。[MENU]→[1]→(F9にカーソルをあわせる)→[N]→「Y」とすればNEWされます。次に[MENU]→[2]→[SHIFT]+(プログラムエリアの番号)として、

NEW

とすれば、プログラムエリアが初期化されます。続けてプログラムリストを打ち込んでください。長い行がありますが、プログラム中で速度をかせぐためなので、がんばって打ち込んでください。150行の最後のPRINT文の「o」は「アルファベット小文字のオー」です。 入力が終わったら、外部記憶装置などに保存しておきましょう。

走り方

プログラムをRUNすると、タイトルが表示されます。上から2行目にはハイスコアも表示されます。スペースキーを押すとゲーム画面が表示されます。 ゲーム画面では、左上のライトが3つ点燈したらスタートです。[1]から[5]までが車の各ギアに相当します。まずは[1]を押し続けて発進してください。走り出したらすばやく[2]を押して加速チェンジします。また速度が増えたら[3]速に入れます。その調子で加速していってください。ボタンを押している間はそのギアで走っていることになります。速度に応じた加速度を計算していますので、きちんと加速チェンジしていかないといいスコアは出ません。 ブレーキは[0]です。コース上に印がついているところが400mですので、できるだけ400mの近くで停止してください。ただし、400mに達する前に停止してしまうと得点になりませんので注意してください。 走った距離は400mに近ければ近いほど、かかった時間は短ければ短いほどスコアは高くなります。ハイスコアを記録するとネームエントリーの特権があります。 スペースキーでリトライです。

プログラムについて

ハイスコア記録用にファイルエリアを操作しています。気になる方は参考になさってください。

参考文献

工学社:Z-1/FX-890P活用研究

変数表

I    ループ変数
K    キー入力用
P    ハイスコア
Q    車移動用
S    スコア
V    速度
X    車のX座標
A$    タイトル表示用
C$    車表示用
N$    ハイスコア(名前)
T$    プログラムタイトル

プログラムリスト

100 'ゼロヨン デ GO! by ABCP
110 CLS:CLEAR:DEFSEG=0:C$="060F17263E262626160F0706":FOR I=1 TO 12:C$="0"+C$+"0":NEXT:T$="ZERO4"
120 LOCATE 5,0:PRINT REV" ゼ ロ ヨ ン デ    G O ! ":LOCATE 9,3:PRINT "PUSH SPACE KEY";
130 RESTORE#("F9"):RESTORE# T$,1,GOTO 240:READ# T$,N$,P:A$="HIGH SCORE:"+STR$(P)+" by "+N$:LOCATE (32-LEN(A$)),1:PRINT A$
140 IF INKEY$<>" " THEN 140
150 CLS:DRAW (0,13)-(185,13):DRAW (0,25)-(185,25):DRAW (145,10)-(145,13):DRAW (145,28)-(145,25):MODE 50,(0,0)-(41,8):PRINT USING " o o o  HS:### SC:  0";P
160 MODE 50,(0,0)-(41,8):FOR I=0 TO 1:DEFCHR$(252+I)=MID$(C$,I*12+13,12):LOCATE I,2:PRINT CHR$(252+I);:NEXT:DEFCHR$(255)="9CBEBEBE9C8":FOR I=0 TO 2:WAIT 10:LOCATE I*2+1,0:PRINT CHR$(255):NEXT:V=0:X=0:TIMER=0
170 K=ASC(INKEY$)-48
180 IF (K=1)*(V<20) THEN V=V+(-V*V+9*V+10)/20 ELSE IF (K=2)*(V<40) THEN V=V+(-V*V+40*V)/70 ELSE IF (K=3)*(V<80) THEN V=V+(-V*V+80*V)/250 ELSE IF (K=4)*(V<200) THEN V=V+(-V*V+200*V)/3500 ELSE IF K=5 THEN V=V+(-V*V+250*V)/5000 ELSE V=V-1:IF K=0 THEN V=V*.85
190 V=V+(V<0)*V:X=X+V/8:Q=2*((X\3) MOD 6):DEFCHR$(252)=MID$(C$,13-Q,12):DEFCHR$(253)=MID$(C$,25-Q,12):DEFCHR$(254)=MID$(C$,37-Q,12):LOCATE X\18,2:PRINT CHR$(29)" "CHR$(252)CHR$(253)CHR$(254):IF (X<500)*(X>0)*(V<>0) THEN 170 ELSE IF X=0 THEN 170
200 S=500-TIMER-INT(X-400):IF (X<400)+(S<0) THEN S=0
210 POKE 6005,39:LOCATE 18,0:PRINT USING "###";S:POKE 6005,7
220 IF P<S THEN LOCATE 22,0:INPUT N$:RESTORE#:RESTORE# T$:WRITE# T$,LEFT$(N$,10),S:P=S
230 IF INKEY$<>" " THEN 230 ELSE 150
240 WRITE# T$,"ABCP",300:GOTO 130

このカテゴリのページ

コメント

コメント(0件)

コメントする

トラックバック

トラックバック(0件)

トラックバック先

当サイトについて

栃木県宇都宮市在住のWeb屋さんのブログ。サイト設計からコーディング、プログラミングまで幅広く担当します。Web標準,WordPress,jQueryあたりに興味があります。≫PROFILE

Get Adobe Flash playerPlugin by wpburn.com wordpress themes