TREASURE TRAIL by jojo3

再生

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

作ったのはこの人

jojo3

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

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


 CHECK POiNT 

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

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

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

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

プログラムリスト

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