なかなか気の抜けないスリリングなアクションレースゲームだ。
基本は十字ボタン左右で移動、レンガブロックをかわしながら、黄色に輝くお宝を取ってスコアを上げること。
しかしこのマシンの燃費の悪さがクセモノ。だんだん減っていく画面上部の燃料メーターが「E」になってしまうとゲームオーバーだ。緑色のFマークを取って、燃料をコマメに補給しておこう。
もちろんレンガブロックに当たってもゲームオーバー。厳しい条件下で、何点まで得点できるか挑戦だ!
jojo3
なんとはるばる日本を縦断して札幌でプログラムを通信してくれたのがこの人。
もちろん本題は夫婦のご旅行ながら、その行動力には脱帽! BASICがなんだか分からない奥様は濃い会話にあきれながら、楽しそうに見守ってくださいました。
ABS
関数を使って意外とシンプル。自分のプログラムにも応用しやすいんじゃないかな。
- ’
- ’ TREASURE TRAIL
- ’ (c) 2011,jojo3.
- ’
- ’ショキカ
- VISIBLE 1,1,0,0,0,1
- GPAGE 0
- CLEAR:BGMSTOP:VSYNC 10
- DIM SP(23),SI(23):HI=0
- RESTORE @CDATA
- READ CAR,WAL,FEL,DIA,LAR,RAR,DST
- ’
- ’メイン ル-フ゜
- ’
- @MAINLOOP
- GOSUB @OPENING
- GOSUB @PLAYING
- GOSUB @ENDING
- GOTO @MAINLOOP
- ’
- ’オ-フ゜ニンク゛
- ’
- @OPENING
- CLS:GCLS 0:COLOR 0
- LOCATE 8, 9:PRINT ”TREASURE TRAIL”
- LOCATE 10,16:PRINT ”HI:”;HI
- LOCATE 9,18:PRINT ”HIT [START]”
- LOCATE 10,14:PRINT CHR$(WAL);”...WALL”
- LOCATE 10,11:COLOR 9:PRINT CHR$(CAR);”...YOU ”CHR$(LAR);CHR$(RAR)
- LOCATE 10,12:COLOR 3:PRINT CHR$(DIA);”...100Pts.”
- LOCATE 10,13:COLOR 4:PRINT CHR$(FEL);”...FUEL+50”
- GOSUB @STWAIT
- RETURN
- ’
- ’START ホ゛タン マチ
- ’
- @STWAIT
- F=BUTTON() AND 1024
- ON F GOTO @STWAIT
- RETURN
- ’
- ’ケ゛-ム チュウ
- ’
- @PLAYING
- CLS
- GOSUB @PLAYINIT
- BGMPLAY 13
- @PLAYLOOP
- VSYNC 3
- B=BUTTON()
- PX=CX
- GOSUB @MVLEFT
- GOSUB @MVRIGHT
- GOSUB @SCROLL
- GOSUB @SCDRAW
- GOSUB @HITTST
- IF HI<SC THEN HI=SC
- LOCATE PX,20:PRINT ” ”;
- LOCATE CX,20:COLOR 9:PRINT CHR$(CAR);
- ON ST GOTO @PLAYLOOP
- RETURN
- ’
- ’エンテ゛ィンク゛
- ’
- @ENDING
- GOSUB @SCDRAW
- BGMPLAY 6
- GOSUB @CHKHI
- LOCATE 10,12:COLOR 10
- IF ST==2 THEN PRINT ”CRUSH WALL.”:BEEP 13
- IF ST==1 THEN PRINT ”FUEL EMPTY.”:BEEP 15
- LOCATE 11,10:COLOR 13:PRINT ”GAME OVER”
- FOR I=1 TO 5
- RESTORE @EDATA
- FOR J=1 TO 4
- VSYNC 5
- READ RC
- LOCATE CX,20:PRINT CHR$(RC);
- NEXT J
- NEXT I
- RETURN
- ’
- ’HI-SCOREハンテイ&ヒョウシ゛
- ’
- @CHKHI
- IF SC<HI THEN RETURN
- LOCATE 8,14:COLOR 12:PRINT ”YOU ARE THE TOP”
- RETURN
- ’
- ’ヒットテスト
- ’
- @HITTST
- CK=CHKCHR(CX,20)
- IF CK==WAL THEN ST=2
- GOSUB @FUELUP
- GOSUB @COINUP
- IF FL<=0 THEN ST=1
- RETURN
- ’
- ’ネンリョウUP
- ’
- @FUELUP
- IF CK!=FEL THEN RETURN
- SI(20)=DST
- BEEP 5
- FL=FL+50
- IF FL>150 THEN FL=150
- RETURN
- ’
- ’オカネUP
- ’
- @COINUP
- IF CK!=DIA THEN RETURN
- SI(20)=DST
- BEEP 7
- SC=SC+100
- RETURN
- ’
- ’イト゛ウ・ミキ゛
- ’
- @MVRIGHT
- IF (B AND 8)==0 THEN RETURN
- CX=CX+1
- IF CX>31 THEN CX=31
- RETURN
- ’
- ’イト゛ウ・ヒタ゛リ
- ’
- @MVLEFT
- IF (B AND 4)==0 THEN RETURN
- CX=CX-1
- IF CX<0 THEN CX=0
- RETURN
- ’
- ’フ゜レイ・ショキカ
- ’
- @PLAYINIT
- FOR I=0 TO 22
- SP(I)=0:SI(I)=&H20
- NEXT I
- CX=15:FL=100:SC=0:ST=0
- RETURN
- ’
- ’スクロ-ル
- ’
- @SCROLL
- FOR I=22 TO 1 STEP -1
- LOCATE SP(I),I:PRINT ” ”;
- SP(I)=SP(I-1):SI(I)=SI(I-1)
- GOSUB @SETCOLOR
- LOCATE SP(I),I:PRINT CHR$(SI(I));
- NEXT I
- SP(0)=RND(32):R=RND(100)
- SI(0)=WAL
- IF R >= 80 THEN SI(0)=DIA
- IF R >= 90 THEN SI(0)=FEL
- FL=FL-1:SC=SC+1
- RETURN
- ’
- ’イロ・セッテイ
- ’ ヒント:クライ イロ ノ モノ ハ トレナイ・アタラナイ
- @SETCOLOR
- DF=20-I:DARK=0
- IF DF<0 THEN DARK=1
- IF ABS(SP(I)-CX)>DF THEN DARK=1
- IF DARK==1 THEN @DARKCOL
- IF SI(I)==WAL THEN COLOR 0
- IF SI(I)==DIA THEN COLOR 3
- IF SI(I)==FEL THEN COLOR 4
- RETURN
- @DARKCOL
- IF SI(I)==WAL THEN COLOR 14
- IF SI(I)==DIA THEN COLOR 7
- IF SI(I)==FEL THEN COLOR 5
- RETURN
- ’
- ’スコア ルイ・ヒ゛ョウカ゛
- ’
- @SCDRAW
- COLOR 0
- LOCATE 0,0:PRINT ”SC:”;SC
- LOCATE 9,0:PRINT ”HI:”;HI
- GFILL 160+FL/2,0,235,8,&H50
- GCOLOR &H0B
- IF FL<50 THEN GCOLOR &H02
- GFILL 160,0,160+FL/2,8
- LOCATE 19,0:PRINT ”E”
- LOCATE 30,0:PRINT ”F”
- GCOLOR 0
- RETURN
- ’
- @CDATA ’キャラクタ-
- DATA &HEC,&H03,&H46,&HF2,&H1D,&H1C,&H2E
- ’
- @EDATA ’マワル・クルマ
- DATA &HEC,&HED,&HEE,&HEF
- END