プチコンまとめWiki (初代/mkII)

投稿プログラム : 3D CAR RACE

2011年05月01日投稿 / 投稿者 : 下手な人 / タグ : 投稿プログラム ゲーム レースゲーム 初代対応 移植

概要

ベーマガ1983年8月号 熊谷 栄二さん投稿JR-100用「3D CAR RACE」の移植です。

※ プチコンmkII 専用に作り直された 3D CAR RACE Ver2.0 もあります。mkII の方はこちらをお楽しみください。

遊び方

  • デモ画面にてAボタンを押すことでゲームがスタートします。
  • ←→キーでマイカーを左右に動かします。
  • ジャマカーやガードレールに接触するとゲームオーバーです。

プログラムの説明

  • 機械語部分等については解析を行っていないため、オリジナルのプログラムと挙動が異なる可能性があります(スクロール速度が実機より速いようです。メインループ内のVSYNC値を3〜4程度にすると遊びやすくなるかもしれません)。
  • キャラクタの表示はコンソール画面にて行い、3つの部分下スクロールについては1つのサブルーチンにまとめました。
  • PCGデータについて。プチコン用に展開したデータをベタに置いているためリストが長くなってしまいました。すみません。
  • Ver1.2での表示にあわせ、30行目のPRINT文の最後に「◇」を追加してあります。
  • これを投稿したのは、Ver1.1以前のプチコンでは右下に文字表示したときにセミコロンの有無に関わらず改行スクロールしてしまうため、スクロールさせずに右下に任意の文字を表示させる方法を紹介したいと思ったからです。Ver1.2へのアップデートにより、そうした対策は不要となったので対策用の処理(具体的にはキャラコード0へのCHRSET)は省くことができます。

スクリーンショット・動画

DEMO.jpg

デモ画面

PLAY.jpg

プレイ画面

QR コード

プチコンmkII 向けの QR コードです。

PRG:3DCARRCH
1/32/33/3
qr0.pngqr1.pngqr2.png

プログラムリスト

  1. CLEAR
  2. VISIBLE 1,1,0,0,0,0
  3. CLS
  4. DIM V$(24)
  5. DIM V0$(24),V1$(24)
  6. DIM V2$(24),V3$(24)
  7. GOSUB @SETCHR
  8. GOTO @DEMO
  9. @START
  10. D=1:E=3:C=0:X=16
  11. FOR I=0 TO 23
  12.  V0$(I)=”┯├┼├”
  13.  V1$(I)=”┯”
  14.  V2$(I)=”━◇◇◇◇◇◇◇◇◇◇◇◇◇◇┏”
  15.  V3$(I)=”┯┠┯━”
  16. NEXT I
  17. FOR I=0 TO 22
  18.  FOR J=23 TO 1 STEP −1
  19.   V$(J)=V$(J−1)
  20.   LOCATE 0,J:PRINT V$(J);
  21.  NEXT J
  22.  V$(0)=”◇┏┯├┼├┠┯━◇◇◇◇◇◇◇◇◇◇◇◇◇◇┏┯┠┠┯┠┯━◇”
  23.  VSYNC 1
  24. NEXT I
  25. LOCATE 0,23
  26. PRINT ”◇┏┯├┼├┠┯━◇◇◇◇◇◇◇◇◇◇◇◇◇◇┏┯┠┠┯┠┯━◇”;
  27. CHRSET ”BGF0”,0,C1$
  28. LOCATE 0,0
  29. PRINT ”SCORE;       HIGH;              ”;
  30. LOCATE 18,0:PRINT H
  31. @MAIN
  32. B=BUTTON()
  33. X=X−(B==4)+(B==8)
  34. FOR I=1 TO D
  35.  GOSUB @PRCSCRD
  36. NEXT I
  37. M0$=MID$(V2$(16),X−8,2)
  38. M1$=MID$(V2$(17),X−8,2)
  39. IF M0$!=”◇◇” GOTO @CRUSH
  40. IF M1$!=”◇◇” GOTO @CRUSH
  41. C=C+1:C1=C%E
  42. LOCATE 6,0:PRINT C
  43. IF C1==0 THEN GOSUB @PRTECARM
  44. IF C3==1 THEN V1$(2)=”┨”
  45. IF C4==5 THEN V3$(2)=”┴┴┴┷”
  46. C2=C%100:C3=C%6:C4=C%8
  47. IF (C2>=75) AND (C2<90) THEN BEEP 1
  48. V0$(0)=” ◇◇◇”
  49. IF (C2<75) OR (C2>=80) THEN V0$(0)=”┯├┼├”
  50. @SKP01
  51. GOSUB @PRCSCRDA
  52. IF (C2>74) AND (C2<79) THEN V0$(1)=” ◇○◇”
  53. VSYNC 1
  54. GOSUB @PRTSCR
  55. GOTO @MAIN
  56. @CRUSH
  57. LOCATE X,16:PRINT ”┛┫”;
  58. LOCATE X−1,16:PRINT ”┬┴┣┗”;
  59. LOCATE X−1,17:PRINT ”┗┛┓┏”;
  60. LOCATE X,18:PRINT ”┴┛”;
  61. BEEP 13:VSYNC 60
  62. @GOVER
  63. LOCATE 0,19
  64. PRINT ”YOUR SCORE ”;C;”POINTS!!”
  65. IF H>=C GOTO @GOVER0
  66. H=C
  67. PRINT ”YOUR HIGH SCORE!!”
  68. FOR I=0 TO 2
  69.  BEEP 2
  70.  VSYNC 5
  71. NEXT I
  72. @GOVER0
  73. LOCATE 18,0:PRINT H
  74. VSYNC 60
  75. @DEMO
  76. V$(23)=”◇┏┯├┼├┠┯━◇◇◇◇◇◇◇◇◇◇◇◇◇◇┏┯┠┠┯┠┯━◇”
  77. CHRSET ”BGF0”,0,C0$
  78. LOCATE 0,23:PRINT V$(23);
  79. @DEMO0
  80. B=BUTTON()
  81. IF (B AND 16) GOTO @START
  82. C=C+1:C1=C%3
  83. IF C1==0 THEN GOSUB @PRTECAR
  84. FOR I=0 TO 22
  85.  V$(I)=V$(I+1)
  86. NEXT I
  87. V$(23)=”                                ”
  88. FOR I=0 TO 23
  89.  LOCATE 0,I:PRINT V$(I);
  90. NEXT I
  91. IF C>32766 THEN C=0
  92. LOCATE 23,0:PRINT ”PLAY→[А]”;
  93. VSYNC 1
  94. GOTO @DEMO0
  95. @SETCHR
  96. FOR I=0 TO 7
  97.  READ A$:C0$=C0$+A$
  98. NEXT I
  99. FOR I=0 TO 7
  100.  READ A$:C1$=C1$+A$
  101. NEXT I
  102. CHRSET ”BGF0”,&H80,C1$
  103. FOR I=&H81 TO &H93
  104.  D$=””
  105.  FOR J=0 TO 7
  106.   READ A$:D$=D$+A$
  107.  NEXT J
  108.  CHRSET ”BGF0”,I,D$
  109. NEXT I
  110. RETURN
  111. @PRTECAR
  112. R=RND(13)+9
  113. T$=V$(21)
  114. T1$=MID$(T$,0,R)+”┗┣”
  115. T2$=MID$(T$,R+2,30−R)
  116. V$(21)=T1$+T2$
  117. T$=V$(22)
  118. T1$=MID$(T$,0,R)+”┻╋”
  119. T2$=MID$(T$,R+2,30−R)
  120. V$(22)=T1$+T2$
  121. RETURN
  122. @PRTECARM
  123. R=RND(13)+1
  124. T$=V2$(2)
  125. T1$=MID$(T$,0,R)+”┗┣”
  126. T2$=MID$(T$,R+2,14−R)
  127. V2$(2)=T1$+T2$
  128. T$=V2$(3)
  129. T1$=MID$(T$,0,R)+”┻╋”
  130. T2$=MID$(T$,R+2,14−R)
  131. V2$(3)=T1$+T2$
  132. RETURN
  133. @PRCSCRD
  134. FOR I_=23 TO 1 STEP −1
  135.  V2$(I_)=V2$(I_−1)
  136. NEXT I_
  137. RETURN
  138. @PRCSCRDA
  139. FOR I_=23 TO 2 STEP −1
  140.  V0$(I_)=V0$(I_−2)
  141.  V1$(I_)=V1$(I_−2)
  142.  V3$(I_)=V3$(I_−2)
  143. NEXT I_
  144. V0$(1)=V0$(0)
  145. V1$(1)=V1$(0)
  146. V3$(1)=V3$(0)
  147. RETURN
  148. @PRTSCR
  149. FOR I_=1 TO 23
  150.  LOCATE 0,I_
  151.  PRINT ”◇┏”;V0$(I_);
  152.  PRINT ”┠”;V1$(I_);V2$(I_);
  153.  PRINT ”┯┠┠”;V3$(I_);
  154.  IF I_==16 THEN LOCATE X,16:PRINT ”┓┛”;
  155.  IF I_==17 THEN LOCATE X,17:PRINT ”┳┫”;
  156. NEXT I_
  157. RETURN
  158. @DT0
  159. ’00(0)
  160. DATA ”00000000”,”00000000”
  161. DATA ”00000000”,”00000000”
  162. DATA ”00000000”,”00000000”
  163. DATA ”00000000”,”00000000”
  164. ’00(1)&80
  165. DATA ”0F0F0F0F”,”F0F0F0F0”
  166. DATA ”0F0F0F0F”,”F0F0F0F0”
  167. DATA ”0F0F0F0F”,”F0F0F0F0”
  168. DATA ”0F0F0F0F”,”F0F0F0F0”
  169. ’81
  170. DATA ”0F000FFF”,”F000FFF0”
  171. DATA ”0F000FFF”,”F000FFF0”
  172. DATA ”0F000FFF”,”000FFFF0”
  173. DATA ”000FFFFF”,”0000FFF0”
  174. ’82
  175. DATA ”FFFFFFFF”,”FFFFFFFF”
  176. DATA ”FFFFFFFF”,”FFFFFFFF”
  177. DATA ”FFFFFFFF”,”FFFFFFFF”
  178. DATA ”FFFFFFFF”,”FFFFFFFF”
  179. ’83
  180. DATA ”000FFF0F”,”00F0FF00”
  181. DATA ”0000FFFF”,”0000FFFF”
  182. DATA ”000FFF00”,”00F0FF0F”
  183. DATA ”000FFF00”,”00F0FF0F”
  184. ’84
  185. DATA ”0F0000FF”,”F0000F0F”
  186. DATA ”0F00F00F”,”F000F00F”
  187. DATA ”0F00FFFF”,”F000F000”
  188. DATA ”0000FF00”,”0000F0FF”
  189. ’85
  190. DATA ”FFFFFF00”,”FFFFF0F0”
  191. DATA ”FFFFF00F”,”FFFFF00F”
  192. DATA ”0000FFFF”,”0000000F”
  193. DATA ”000000FF”,”FFFFFF0F”
  194. ’86
  195. DATA ”0F00000F”,”F000F00F”
  196. DATA ”0F00FFFF”,”F000FFFF”
  197. DATA ”0F00FFF0”,”F000F000”
  198. DATA ”0000FFF0”,”0000F0FF”
  199. ’87
  200. DATA ”FFFFF000”,”FFFFF00F”
  201. DATA ”FFFFFFFF”,”FFFFFFFF”
  202. DATA ”00000FFF”,”0000000F”
  203. DATA ”000000FF”,”FFFFFF0F”
  204. ’88
  205. DATA ”0000F0FF”,”0000F0FF”
  206. DATA ”0000F0FF”,”0000FF00”
  207. DATA ”0000F000”,”F000FFF0”
  208. DATA ”0F00FFFF”,”F0000FFF”
  209. ’89
  210. DATA ”FFFFFF0F”,”FFFFFF0F”
  211. DATA ”FFFFFF0F”,”000000FF”
  212. DATA ”0000000F”,”00000FFF”
  213. DATA ”FFFFFFFF”,”FFFFFFF0”
  214. ’8A
  215. DATA ”0000F0FF”,”0000F0FF”
  216. DATA ”0000F0FF”,”0000FFF0”
  217. DATA ”0000FF00”,”0000FFF0”
  218. DATA ”0F00FFFF”,”F0000FFF”
  219. ’8B
  220. DATA ”FFFFFF0F”,”FFFFFF0F”
  221. DATA ”FFFFFF0F”,”000000FF”
  222. DATA ”0000000F”,”00000FFF”
  223. DATA ”FFFFFFFF”,”FFFFFFF0”
  224. ’8C
  225. DATA ”0FF00FF0”,”00FF00FF”
  226. DATA ”F00FF00F”,”FF00FF00”
  227. DATA ”0FF00FF0”,”00FF00FF”
  228. DATA ”F00FF00F”,”FF00FF00”
  229. ’8D
  230. DATA ”0F000F00”,”F000F000”
  231. DATA ”000F000F”,”00F000F0”
  232. DATA ”0F000F00”,”F000F000”
  233. DATA ”000F000F”,”00F000F0”
  234. ’8E
  235. DATA ”0F000F00”,”F000F000”
  236. DATA ”0000FFFF”,”0000FFF0”
  237. DATA ”00000000”,”0FFFFFF0”
  238. DATA ”000F000F”,”00F000F0”
  239. ’8F
  240. DATA ”0F0F0F0F”,”00FFF0F0”
  241. DATA ”0FFFFF0F”,”FF000FF0”
  242. DATA ”FF000FFF”,”0FFFFF00”
  243. DATA ”00FFF00F”,”F0F0F0F0”
  244. ’90
  245. DATA ”0F000F00”,”00000000”
  246. DATA ”00000000”,”00000000”
  247. DATA ”00000000”,”00000000”
  248. DATA ”00000000”,”00F000F0”
  249. ’91
  250. DATA ”F0FFFFFF”,”FFFF00FF”
  251. DATA ”FFF00FF0”,”0F00FF00”
  252. DATA ”FFFFF00F”,”FFFF00F0”
  253. DATA ”0F0F0F0F”,”F0F0F0F0”
  254. ’92
  255. DATA ”FF0FF0FF”,”000FF000”
  256. DATA ”000FF000”,”000FF000”
  257. DATA ”F00FF0F0”,”000FFF0F”
  258. DATA ”F00FF0F0”,”000FF000”
  259. ’93
  260. DATA ”0FF00000”,”00000FF0”
  261. DATA ”00FF0000”,”00000000”
  262. DATA ”F0F0F0F0”,”0F0F0F0F”
  263. DATA ”F0F0F0F0”,”00000000”

CHECKER FLAG (ひとことコメント)

この作品に対するコメントがあれば一言どうぞ。(作品に直接関係ない質問や雑談は掲示板へ)

  • 投稿者 : 11月11日に行われるアップデートにより挙動が変わると思われる箇所を修整しました。具体的には86行目と97行目のセミコロンの削除です。 (2011/11/10 (木) 20:24:42)
  • 投稿者 : プチコンVer1.2にて確認したところ修整内容が適切でないことが確認されたため、リストを再度修正しました。削除したセミコロンを元に戻し、30行のプリント文の内容を変更しました。 (2011/11/11 (金) 20:30:11)
  • 名無しさん : どこが3D何だろう (2012/02/18 (土) 23:00:43)
  • 名無しさん : 確かに。 (2012/02/19 (日) 00:41:05)
  • 超初心者 : ↑いやそれいったら643Dとかどこが3Dなのってなるから (2012/03/23 (金) 20:37:33)
  • 超初心者 : でもなんで3Dっていうんだろう?じぶんでもきにしちゃいました。 (2012/03/23 (金) 20:41:57)
  • 名無しさん : 白と黒のたった2色の荒い画面でも、陰影をつけることで、当時としては結構立体感のある絵を表現しているからと思わます。元が29年前なので今流行ってる(てた?)3Dとはだいぶ言葉の感覚が違うのですよ。 (2012/03/24 (土) 02:28:35)
  • 名無しさん : 超初心者様へ (2012/04/05 (木) 12:45:20)
  • 名無しさん : ポリゴンとかを使って、色々な角度から色々な画像がみえるものを、3Dと言うのだよ。 (2012/04/05 (木) 12:47:51)
  • 名無しさん : あと錯覚的に見えるものも、3Dと言うのだよ (2012/04/05 (木) 12:49:11)
  • 超初心者 : ヘーよく知ってますねー (2012/04/05 (木) 14:31:37)
  • 名無しさん : そうでしょ   ふふふ (2012/04/08 (日) 21:35:10)
  • 名無しさん : QRコードほしい もう… こんな無理だよ… (2012/04/09 (月) 14:13:17)
  • プチコンまとめWiki管理人 : QRコードアップしときますね (2012/04/10 (火) 08:52:32)
  • 名無しさん : ありがとうございます (2012/04/10 (火) 13:45:36)

表示モード : [ スマホ・3DS対応表示 | クラシック表示 ]
PukiWiki 1.4.7 Copyright © 2001-2006 PukiWiki Developers Team. License is GPL. Based on "PukiWiki" 1.3 by yu-ji
ページの処理時間 : 0.147 秒 | このページの最終更新 : 2022/09/20 (火) 12:44:03 (565d) | ログイン
Copyright(C) 2011-2014 プチコンまとめWiki ◆1sxkymI8ji30