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

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

パンくずリスト

2011年05月01日投稿 / 投稿者 : 名無しさん / タグ : 投稿プログラム ゲーム レースゲーム 初代対応 移植

概要

ベーマガ1983年8月号 熊谷 栄二さん投稿JR-100用「3D CAR RACE」の移植その2です(2画面なのでDSです)。
その3、その4と続き、Wikiが「3D CAR RACE」で埋まることを願って・・・。

ゲーム内容

デモ画面でАを押すとゲーム開始、Бを押すと終了です。
←→でマイカー移動です。ジャマカーやガードレールにぶつかるとゲームオーバーです。

オリジナルとの違い

  • 2画面(正直、あまり意味はない)
  • スクロールとマイカー移動がスムーズ(Фでゲーム開始すると、キャラクタ単位になります)
  • 進むにつれて難易度(ジャマカーの数)が上がる
  • 処理が倍くらい速い(12行目の1を2にすると、実機と同じくらいの速度になります)
  • その他、細かい所(気にしない)

プログラムについて

オリジナルは、GOTO文も少なく、よくできたプログラムでした。
マシン語で、未使用箇所($3049〜$3059)があったり冗長な処理もありますが。
道路とジャマカーがBG0、ガードレールの外がBG1、マイカーとディーゼルカーがスプライトです。
のフォントがJR-100とプチコンで違います。JR-100のフォントにしてます。
スコアなど、BG上にコンソールを重ねると見にくいので、BGF0を少しいじってます。デモ画面から終了すると元に戻ります。

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

raceds.jpg

QR コード

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

PRG:3DCARRC
1/42/4
qr0.pngqr1.png
3/44/4
qr2.pngqr3.png

プログラムリスト

  1. GOSUB @INIT
  2. GOTO @DEMO
  3. @START
  4. BEEP 39
  5. GOSUB @BGDISP
  6. CLS:E=6:C=0:X=16:P=0
  7. LOCATE 24,0:PRINT ”HIGH”
  8. LOCATE 24,1:PRINT H
  9. LOCATE 24,2:PRINT ”SCORE”
  10. CNT=MAINCNTL
  11. @LOOP
  12. IF MAINCNTL−CNT<1 THEN @LOOP
  13. CNT=MAINCNTL
  14. GOSUB @SCRDOWN
  15. IF POSC==0 THEN XX=0:BTN=BUTTON()
  16. IF BTN AND 4 THEN XX=XX−2:IF XX<=−8 THEN X=X−1:XX=0
  17. IF BTN AND 8 THEN XX=XX+2:IF XX>= 8 THEN X=X+1:XX=0
  18. SPPAGE 1:SPOFS 12,X*8+XX*R,128
  19. IF POSC!=0 THEN @NEXT1
  20. BGREAD(0,X  ,POS+40),CHR0,DMY0,DMY1,DMY2
  21. BGREAD(0,X+1,POS+40),CHR1,DMY0,DMY1,DMY2
  22. BGREAD(0,X  ,POS+41),CHR2,DMY0,DMY1,DMY2
  23. BGREAD(0,X+1,POS+41),CHR3,DMY0,DMY1,DMY2
  24. IF CHR0!=1 OR CHR1!=1 OR CHR2!=1 OR CHR3!=1 THEN @GAMEOVER
  25. C=C+1:LOCATE 24,3:PRINT C
  26. IF (C%200)==0 THEN E=E−1:IF E<3 THEN E=3
  27. IF (C%E  )==0 THEN GOSUB @JAMACAR
  28. IF (C%100)==0 THEN GOSUB @TRAIN
  29. IF SPCHK(0)==TRUE THEN BEEP 0,−3000
  30. @NEXT1
  31. IF POSC!=0 THEN GOSUB @HYOSHIKI
  32. IF (POSC%4)==2 THEN GOSUB @DENCHU
  33. GOTO @LOOP
  34. @SCRDOWN
  35. POSC=POSC+2:IF POSC<8 THEN @SCRDOWN1
  36. FOR P=0 TO 1
  37.  BGPAGE P
  38.  FOR I=9 TO 22
  39.   BGPUT 0,I,POS−3,1,0,0,0
  40.  NEXT I
  41. NEXT P
  42. POSC=0:POS=POS−1
  43. @SCRDOWN1
  44. IF POS<0 THEN POS=POS+64
  45. BGPAGE 0:BGOFS 0,0,POS*8−POSC*R
  46. BGPAGE 1:BGOFS 0,0,(POS+24)*8−POSC*R
  47. RETURN
  48. @JAMACAR
  49. JX=RND(13)+9
  50. FOR P=0 TO 1
  51.  BGPAGE P
  52.  BGPUT 0,JX  ,POS−2,4,0,0,0
  53.  BGPUT 0,JX+1,POS−2,5,0,0,0
  54.  BGPUT 0,JX  ,POS−1,6,0,0,0
  55.  BGPUT 0,JX+1,POS−1,7,0,0,0
  56. NEXT P
  57. RETURN
  58. @TRAIN
  59. FOR P=0 TO 1
  60.  SPPAGE P
  61.  FOR I=0 TO 5
  62.   FOR J=0 TO 1
  63.    SPOFS I*2+J,J*16+16,I*16−P*192−96
  64.    SPOFS I*2+J,J*16+16,I*16−P*192+384,180
  65.   NEXT J
  66.  NEXT I
  67. NEXT P
  68. RETURN
  69. @HYOSHIKI
  70. FOR P=0 TO 1
  71.  BGPAGE P
  72.  FOR I=0 TO 2
  73.   BGPUT 1,7,(HY+I*16  )%48, 9,0,0,0
  74.   BGPUT 1,7,(HY+I*16+1)%48,13,0,0,0
  75.  NEXT I
  76. NEXT P
  77. HY=HY+1:IF HY>47 THEN HY=0
  78. RETURN
  79. @DENCHU
  80. FOR P=0 TO 1
  81.  BGPAGE P
  82.  FOR I=0 TO 1
  83.   DY0=(DY+I*24  )%48
  84.   BGPUT 1,27,DY0, 9,0,0,0
  85.   BGPUT 1,28,DY0, 8,0,0,0
  86.   BGPUT 1,29,DY0, 9,0,0,0
  87.   BGPUT 1,30,DY0, 2,0,0,0
  88.   DY0=(DY+I*24+1)%48
  89.   BGPUT 1,27,DY0,15,0,0,0
  90.   BGPUT 1,28,DY0,15,0,0,0
  91.   BGPUT 1,29,DY0,15,0,0,0
  92.   BGPUT 1,30,DY0,14,0,0,0
  93.  NEXT I
  94. NEXT P
  95. DY=DY+1:IF DY>47 THEN DY=0
  96. RETURN
  97. @GAMEOVER
  98. SPPAGE 1:SPOFS 12,−99,0
  99. BGPAGE 1
  100. FOR I=0 TO 3
  101.  FOR J=0 TO 3
  102.   IF BK(J,I)>0 THEN BGPUT 0,X+J−1,POS+I+39,BK(J,I),0,0,0
  103.  NEXT J
  104. NEXT I
  105. FOR I=8 TO −4 STEP −1
  106.  BEEP 13,I*1000:VSYNC 5
  107. NEXT I
  108. PNLSTR 0,19,”YOUR SCORE ”+STR$(C)+”POINTS!!”,0
  109. IF H<C THEN H=C:PNLSTR 0,20,”YOUR HIGH SCORE!!”,0:BEEP 42
  110. LOCATE 24,1:PRINT H
  111. VSYNC 120
  112. @DEMO
  113. GOSUB @BGDISP
  114. VISIBLE 1,1,1,1,1,1
  115. @DEMOLOOP
  116. BTN=BUTTON()
  117. IF BTN AND 16 THEN R=1:GOTO @START
  118. IF BTN AND 32 THEN @EXIT
  119. IF BTN AND 64 THEN R=0:GOTO @START
  120. VSYNC 1
  121. C=C+1
  122. IF C%64==0 THEN CLS
  123. IF C%64==32 THEN LOCATE 24,0:PRINT ”PLAY→[А]”:LOCATE 24,1:PRINT ”EXIT→[Б]”
  124. IF C%12==0 THEN GOSUB @JAMADEMO
  125. GOSUB @SCRUP
  126. IF C>32766 THEN C=0
  127. GOTO @DEMOLOOP
  128. @SCRUP
  129. POSC=POSC+2:IF POSC<8 THEN @SCRUP1
  130. FOR P=0 TO 1
  131.  BGPAGE P
  132.  FOR I=9 TO 22
  133.   BGPUT 0,I,POS+50,1,0,0,0
  134.  NEXT I
  135. NEXT P
  136. POSC=0:POS=POS+1
  137. @SCRUP1
  138. IF POS>63 THEN POS=POS−64
  139. BGPAGE 0:BGOFS 0,0,POS*8+POSC*R
  140. BGPAGE 1:BGOFS 0,0,(POS+24)*8+POSC*R
  141. RETURN
  142. @JAMADEMO
  143. JX=RND(13)+9
  144. FOR P=0 TO 1
  145.  BGPAGE P
  146.  BGPUT 0,JX  ,POS+48,4,0,0,0
  147.  BGPUT 0,JX+1,POS+48,5,0,0,0
  148.  BGPUT 0,JX  ,POS+49,6,0,0,0
  149.  BGPUT 0,JX+1,POS+49,7,0,0,0
  150. NEXT P
  151. RETURN
  152. @EXIT
  153. FOR P=0 TO 1
  154.  BGPAGE P:SPPAGE P
  155.  CHRINIT ”BGF0”
  156.  SPCLR
  157. NEXT P
  158. VISIBLE 1,1,0,0,1,1
  159. CLS
  160. END
  161. @INIT
  162. VISIBLE 1,1,0,0,1,1
  163. CLEAR:COLOR 0:CLS:R=1
  164. PNLTYPE ”OFF”
  165. FOR P=0 TO 1
  166.  BGPAGE P:SPPAGE P:GPAGE P
  167.  GCLS 0:SPCLR
  168.  BGCLIP 0,0,31,23
  169.  CHRINIT ”BGF0”
  170.  FOR I=0 TO 255
  171.   COLINIT ”BG”,I
  172.   COLINIT ”SP”,I
  173.   COLINIT ”GRP”,I
  174.  NEXT I
  175. NEXT P
  176. FOR I=0 TO 3
  177.  ICONCLR I
  178. NEXT I
  179. DIM CH$(24),SP$(5),NO(13),BK(4,4)
  180. Z$=”00000000”
  181. CH$(0)=Z$+Z$+Z$+Z$+Z$+Z$+Z$+Z$
  182. CH$(23)=CH$(0)
  183. FOR I=1 TO 22
  184.  READ F$:CH$(I)=””
  185.  FOR J=0 TO 7
  186.   FT=VAL(”&H”+MID$(F$,J*2,2))
  187.   BIT=&H80
  188.   FOR K=0 TO 7
  189.    IF (FT AND BIT)>0 THEN CH$(I)=CH$(I)+”F”
  190.    IF (FT AND BIT)<1 THEN CH$(I)=CH$(I)+”E”
  191.    BIT=BIT/2
  192.   NEXT K
  193.  NEXT J
  194. NEXT I
  195. FOR I=0 TO 4
  196.  READ SP$(I)
  197. NEXT I
  198. FOR I=0 TO 12
  199.  READ NO(I)
  200. NEXT I
  201. FOR I=0 TO 3
  202.  FOR J=0 TO 3
  203.   READ BK(J,I)
  204.  NEXT J
  205. NEXT I
  206. S$=”SPU0”
  207. FOR P=0 TO 1
  208.  BGPAGE P:SPPAGE P
  209.  FOR I=0 TO 19
  210.   CHRSET ”BGU0”,I,CH$(I)
  211.  NEXT I
  212.  FOR I=0 TO 4
  213.   FOR J=0 TO 3
  214.    CHRSET S$,I*4+J,CH$(VAL(MID$(SP$(I),J,1))+16)
  215.   NEXT J
  216.  NEXT I
  217.  FOR I=0 TO 12
  218.   SPSET I,NO(I),0,0,0,1
  219.   SPOFS I,−99,0
  220.  NEXT I
  221.  S$=”SPS0”
  222. NEXT P
  223. GOSUB @BGFFONT
  224. RETURN
  225. @BGDISP
  226. POS=0:POSC=0:HY=0:DY=5
  227. FOR P=0 TO 1
  228.  BGPAGE P
  229.  FOR I=0 TO 31
  230.   BG=VAL(”&H”+MID$(”00000000011111111111111000000000”,I,1))
  231.   FOR J=0 TO 63
  232.    BGPUT 0,I,J,BG,0,0,0
  233.   NEXT J
  234.   BG=VAL(”&H”+MID$(”139BCB89200000000000000398898921”,I,1))
  235.   FOR J=0 TO 23
  236.    BGPUT 1,I,J+P*24,BG,0,0,0
  237.   NEXT J
  238.  NEXT I
  239.  BGOFS 0,0,P*192
  240.  BGOFS 1,0,P*192
  241. NEXT P
  242. RETURN
  243. @BGFFONT
  244. FOR I=&H01 TO &H5D
  245.  CHRREAD(”BGF0”,I),S$
  246.  SN$=””
  247.  FOR J=0 TO 63
  248.   C$=MID$(S$,J,1)
  249.   IF C$==”0” THEN C$=”E”
  250.   SN$=SN$+C$
  251.  NEXT J
  252.  FOR P=0 TO 1
  253.   BGPAGE P
  254.   CHRSET ”BGF0”,I,SN$
  255.  NEXT P
  256. NEXT I
  257. RETURN
  258. DATA 55AA55AA55AA55AA
  259. DATA 478E478E471E1F0E
  260. DATA 1D2C0F0F1C2D1C2D
  261. DATA 41894F8F4E880E0B
  262. DATA F8F9FFFF070103FD
  263. DATA 0B0B0B0E0C0E4F87
  264. DATA FDFDFD030107FFFE
  265. DATA 663399CC663399CC
  266. DATA 4488112244881122
  267. DATA BFF3E64CF9F255AA
  268. DATA DB1818189A1D9A18
  269. DATA 60063000AA55AA00
  270. DATA 44880F0E007E1122
  271. DATA 553A7DC6C77C39AA
  272. DATA 4400000000000022
  273. DATA 438549894F880C0B
  274. DATA FCFAF9F90F0103FD
  275. DATA 0B0B0B0C088E4F87
  276. DATA FDFDFD030107FFFE
  277. DATA 0000000000000000
  278. DATA AA55AA55AA55AA55
  279. DATA 003C424242423C00
  280. DATA 0123,4545,5565,4577,5577
  281. DATA 1,2,1,2,1,2,1,2,1,2,3,4,0
  282. DATA 0,17,19,0,10,15,5,4
  283. DATA 4,17,16,3,0,15,17,0

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

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

  • タケポン : 入力しました。77行の「THE」→「THEN」みたいです。あとは大丈夫そうでした。 (2011/05/02 (月) 13:20:04)
  • もりちゃん : ありがとうございます。修正しました。机上デバッグはしてたんですが、やはり漏れはありますねえ。 (2011/05/02 (月) 19:41:16)
  • 下手な人 : 入力しました。まさかの2画面構成にびっくりです。 (2011/05/02 (月) 21:59:08)
  • 初心者 : 入力しました。オリジナルより、こっちがいいですね。(オリジナルを作った方、ゴメンナサイ) (2011/10/23 (日) 23:23:02)
  • 小6 : 入力しました。BGとスプライトをここまで使いこなせるなんて、素晴らしいです! (2011/10/24 (月) 17:00:06)
  • 小5 : 入力しました。面白いです。 (2012/02/11 (土) 14:11:58)
  • 小5 : 入力しました。面白いです。 (2012/02/11 (土) 14:11:59)
  • ぼく : ぼくも小6です。 (2012/02/16 (木) 23:51:54)
  • バイカウントメルビル : こういう業界(?)だと↑みたいな奴らがいてウザi(蹴 そういう話は別のとこでしてくれ。 (2012/02/17 (金) 18:08:27)
  • ぼく : そう?、じゃあ控えとこ。 (2012/02/19 (日) 00:43:37)
  • ぼく : 上の人逹も控えめに~~ (2012/02/19 (日) 00:45:52)
  • ウイング : 打つのメンド (2012/03/11 (日) 18:52:35)
  • 小5のすいせいキッズ : いま入力中ですあと1時間ぐらいでmk2よりできあがります (2012/03/17 (土) 14:40:29)
  • ぼくも、控えます。 : 小5のすいせいキッズ 反対でした。 (2012/03/17 (土) 17:44:05)
  • 小5のすいせいキッズ : 色々ありまして、いま相談中です。 まだ完成しません。 (2012/03/17 (土) 22:37:27)
  • 小3 : おもしれーー (2012/03/20 (火) 13:18:01)
  • 小1 : QRコードがほしい (2012/03/23 (金) 12:47:34)
  • 小1 : QRコードがほしい (2012/03/23 (金) 13:00:58)
  • ぷぎru : ↑うざw 打ち込めよ (2012/03/23 (金) 16:25:00)
  • 超初心者 : 打つの超大変そう (2012/03/23 (金) 20:40:17)
  • 名無しさん : 小1とかそういうやつら。たまにはQRに頼らず打て。QR作る側も大変なんだよ。そもそもプチコンは打ってそこから間違いを探すのが楽しいんじゃないの?プログラムをなめるなよ。 (2012/03/23 (金) 21:59:05)
  • 名無しさん : 1時間以上もかかるの!? 嘘でしょ!? (2012/04/05 (木) 12:10:13)
  • わぁぃ@ : ↑↑時代が違いますからね。いいんじゃないですか。 (2012/04/05 (木) 13:37:25)
  • 名無しさん : QR欲しいっていってるひとはプログラムリストをコピペしてPetitedtorに貼り付ければいいのでは? (2012/04/05 (木) 14:18:06)
  • 名無しさん : 現役プログラマには小1たちの心理が分からない ウザシ (2012/04/07 (土) 19:19:16)
  • 投稿者 : QRコード、誰か貼り付けてもいいですよ。 (2012/04/07 (土) 21:09:50)
  • プチコンまとめWiki管理人 : QRコードアップしときました。みなさんあんまりQRコードをクレクレしたり、QRコードを巡って喧嘩したりするのはお控えください。 (2012/04/10 (火) 08:51:26)
  • 名無しさん : 承知しました (2012/04/22 (日) 18:38:58)
  • バイカウントメルビル : !?ちょっと見ないうちに喧嘩が起きていたようだ・・・なんか悲しい (2012/04/23 (月) 00:59:27)
  • 名無しさん : だね (2012/04/30 (月) 16:26:02)
  • ウイングの友達 : ・・・。 (2012/05/05 (土) 11:32:06)
  • 名はあるが名無し : BGMつけた (2012/06/11 (月) 21:43:03)
  • 名無しさん : ハイスコアの保存・読みだし機能付けた (2012/07/08 (日) 18:45:03)
  • 名無し様 : 超スパゲティ状態wwwwww (2013/05/27 (月) 15:56:40)

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