TREASURE TRAIL by jojo3

再生

 なかなか気の抜けないスリリングなアクションレースゲームだ。
 基本は十字ボタン左右で移動、レンガブロックをかわしながら、黄色に輝くお宝を取ってスコアを上げること。
 しかしこのマシンの燃費の悪さがクセモノ。だんだん減っていく画面上部の燃料メーターが「E」になってしまうとゲームオーバーだ。緑色のFマークを取って、燃料をコマメに補給しておこう。
 もちろんレンガブロックに当たってもゲームオーバー。厳しい条件下で、何点まで得点できるか挑戦だ!

作ったのはこの人

jojo3

なんとはるばる日本を縦断して札幌でプログラムを通信してくれたのがこの人。

もちろん本題は夫婦のご旅行ながら、その行動力には脱帽! BASICがなんだか分からない奥様は濃い会話にあきれながら、楽しそうに見守ってくださいました。


 CHECK POiNT 

神崎
はるばる遠方からスマイルブームまで届けに来てくれたプログラムだよ。

ワンパク
いよいよ何でもアリになってきたな、オイ! これだけ長いキョリを移動して短い通信範囲まで来るとか、なんだかよくわからねえがロックじゃねえか!

博士
ロックの定義はともかく、プログラムもなかなか凝っておるぞ。夜間運転の設定で、プレイヤーのライトの範囲外は暗くなるように描いているんじゃな。初期ウルテ●マを思わせる工夫じゃわい。

インテリ
160行以降で色を調整しているけど、難しいようでABS関数を使って意外とシンプル。自分のプログラムにも応用しやすいんじゃないかな。

プログラムリスト

  1. ’ TREASURE TRAIL
  2. ’          (c) 2011,jojo3.
  3. ’ショキカ
  4. VISIBLE 1,1,0,0,0,1
  5. GPAGE 0
  6. CLEAR:BGMSTOP:VSYNC 10
  7. DIM SP(23),SI(23):HI=0
  8. RESTORE @CDATA
  9. READ CAR,WAL,FEL,DIA,LAR,RAR,DST
  10. ’メイン ル-フ゜
  11. @MAINLOOP
  12.  GOSUB @OPENING
  13.  GOSUB @PLAYING
  14.  GOSUB @ENDING
  15. GOTO @MAINLOOP
  16. ’オ-フ゜ニンク゛
  17. @OPENING
  18.  CLS:GCLS 0:COLOR 0
  19.  LOCATE  8, 9:PRINT ”TREASURE TRAIL”
  20.  LOCATE 10,16:PRINT ”HI:”;HI
  21.  LOCATE  9,18:PRINT ”HIT [START]”
  22.  LOCATE 10,14:PRINT CHR$(WAL);”...WALL”
  23.  LOCATE 10,11:COLOR 9:PRINT CHR$(CAR);”...YOU ”CHR$(LAR);CHR$(RAR)
  24.  LOCATE 10,12:COLOR 3:PRINT CHR$(DIA);”...100Pts.”
  25.  LOCATE 10,13:COLOR 4:PRINT CHR$(FEL);”...FUEL+50”
  26.  GOSUB @STWAIT
  27. RETURN
  28. ’START ホ゛タン マチ
  29. @STWAIT
  30.  F=BUTTON() AND 1024
  31.  ON F GOTO @STWAIT
  32. RETURN
  33. ’ケ゛-ム チュウ
  34. @PLAYING
  35.  CLS
  36.  GOSUB @PLAYINIT
  37.  BGMPLAY 13
  38. @PLAYLOOP
  39.  VSYNC 3
  40.  B=BUTTON()
  41.  PX=CX
  42.  GOSUB @MVLEFT
  43.  GOSUB @MVRIGHT
  44.  GOSUB @SCROLL
  45.  GOSUB @SCDRAW
  46.  GOSUB @HITTST
  47.  IF HI<SC THEN HI=SC
  48.  LOCATE PX,20:PRINT ” ”;
  49.  LOCATE CX,20:COLOR 9:PRINT CHR$(CAR);
  50.  ON ST GOTO @PLAYLOOP
  51. RETURN
  52. ’エンテ゛ィンク゛
  53. @ENDING
  54.  GOSUB @SCDRAW
  55.  BGMPLAY 6
  56.  GOSUB @CHKHI
  57.  LOCATE 10,12:COLOR 10
  58.  IF ST==2 THEN PRINT ”CRUSH WALL.”:BEEP 13
  59.  IF ST==1 THEN PRINT ”FUEL EMPTY.”:BEEP 15
  60.  LOCATE 11,10:COLOR 13:PRINT ”GAME OVER”
  61.  FOR I=1 TO 5
  62.   RESTORE @EDATA
  63.   FOR J=1 TO 4
  64.    VSYNC 5
  65.    READ RC
  66.    LOCATE CX,20:PRINT CHR$(RC);
  67.   NEXT J
  68.  NEXT I
  69. RETURN
  70. ’HI-SCOREハンテイ&ヒョウシ゛
  71. @CHKHI
  72.  IF SC<HI THEN RETURN
  73.  LOCATE 8,14:COLOR 12:PRINT ”YOU ARE THE TOP”
  74. RETURN
  75. ’ヒットテスト
  76. @HITTST
  77.  CK=CHKCHR(CX,20)
  78.  IF CK==WAL THEN ST=2
  79.  GOSUB @FUELUP
  80.  GOSUB @COINUP
  81.  IF FL<=0 THEN ST=1
  82. RETURN
  83. ’ネンリョウUP
  84. @FUELUP
  85.  IF CK!=FEL THEN RETURN
  86.  SI(20)=DST
  87.  BEEP 5
  88.  FL=FL+50
  89.  IF FL>150 THEN FL=150
  90. RETURN
  91. ’オカネUP
  92. @COINUP
  93.  IF CK!=DIA THEN RETURN
  94.  SI(20)=DST
  95.  BEEP 7
  96.  SC=SC+100
  97. RETURN
  98. ’イト゛ウ・ミキ゛
  99. @MVRIGHT
  100.  IF (B AND 8)==0 THEN RETURN
  101.  CX=CX+1
  102.  IF CX>31 THEN CX=31
  103. RETURN
  104. ’イト゛ウ・ヒタ゛リ
  105. @MVLEFT
  106.  IF (B AND 4)==0 THEN RETURN
  107.  CX=CX-1
  108.  IF CX<0 THEN CX=0
  109. RETURN
  110. ’フ゜レイ・ショキカ
  111. @PLAYINIT
  112.  FOR I=0 TO 22
  113.   SP(I)=0:SI(I)=&H20
  114.  NEXT I
  115.  CX=15:FL=100:SC=0:ST=0
  116. RETURN
  117. ’スクロ-ル
  118. @SCROLL
  119.  FOR I=22 TO 1 STEP -1
  120.   LOCATE SP(I),I:PRINT ” ”;
  121.   SP(I)=SP(I-1):SI(I)=SI(I-1)
  122.   GOSUB @SETCOLOR
  123.   LOCATE SP(I),I:PRINT CHR$(SI(I));
  124.  NEXT I
  125.  SP(0)=RND(32):R=RND(100)
  126.  SI(0)=WAL
  127.  IF R >= 80 THEN SI(0)=DIA
  128.  IF R >= 90 THEN SI(0)=FEL
  129.  FL=FL-1:SC=SC+1
  130. RETURN
  131. ’イロ・セッテイ
  132. ’  ヒント:クライ イロ ノ モノ ハ トレナイ・アタラナイ
  133. @SETCOLOR
  134.  DF=20-I:DARK=0
  135.  IF DF<0 THEN DARK=1
  136.  IF ABS(SP(I)-CX)>DF THEN DARK=1
  137.  IF DARK==1 THEN @DARKCOL
  138.  IF SI(I)==WAL THEN COLOR 0
  139.  IF SI(I)==DIA THEN COLOR 3
  140.  IF SI(I)==FEL THEN COLOR 4
  141.  RETURN
  142. @DARKCOL
  143.  IF SI(I)==WAL THEN COLOR 14
  144.  IF SI(I)==DIA THEN COLOR 7
  145.  IF SI(I)==FEL THEN COLOR 5
  146. RETURN
  147. ’スコア ルイ・ヒ゛ョウカ゛
  148. @SCDRAW
  149.  COLOR 0
  150.  LOCATE 0,0:PRINT ”SC:”;SC
  151.  LOCATE 9,0:PRINT ”HI:”;HI
  152.  GFILL 160+FL/2,0,235,8,&H50
  153.  GCOLOR &H0B
  154.  IF FL<50 THEN GCOLOR &H02
  155.  GFILL 160,0,160+FL/2,8
  156.  LOCATE 19,0:PRINT ”E”
  157.  LOCATE 30,0:PRINT ”F”
  158.  GCOLOR 0
  159. RETURN
  160. @CDATA ’キャラクタ-
  161.  DATA &HEC,&H03,&H46,&HF2,&H1D,&H1C,&H2E
  162. @EDATA ’マワル・クルマ
  163.  DATA &HEC,&HED,&HEE,&HEF
  164. END