プチコンmkII

  1. ’┌──────────────┐
  2. ’│DOT-RACER v1.1│
  3. ’└──────────────┘
  4. VISIBLE 1,1,0,0,0,1
  5. CLS:COLOR 0
  6. GPAGE 0:GCOLOR 0:GCLS
  7. CLEAR
  8. DIM MYCHR$(4),VX(4),VY(4),CL(4)
  9. DATA ”Ь”,1,0,14
  10. DATA ”Э”,0,1,8
  11. DATA ”Ю”,-1,0,7
  12. DATA ”Ы”,0,-1,3
  13. FOR I=0 TO 3
  14.  READ MYCHR$(I),VX(I),VY(I),CL(I)
  15.  VX(I)=SGN(VX(I))
  16.  VY(I)=SGN(VY(I))
  17.  PRINT MYCHR$(I),VX(I),VY(I)
  18. NEXT
  19. ’---
  20. DIM E(16,16)
  21. _X=0:_Y=1:_C=2:_D=3
  22. _W=4:_WM=5
  23. ’---
  24. FL=0:RQ=FL:BGMW=FALSE
  25. GOSUB @TITINIT
  26. ’---
  27. @LOOP
  28.  OLDB=B:B=BUTTON()
  29.  ’
  30.  GOSUB @FLOW
  31.  ’
  32.  VSYNC 1
  33. GOTO @LOOP
  34. END
  35. ’───────────────────────────
  36. @FLOW ’カ゛メンセンイ
  37. ’───────────────────────────
  38. IF RQ==FL GOTO @FLJUMP
  39. IF BGMW AND BGMCHK() THEN RETURN
  40. BGMW=FALSW
  41. ’--- アタラシイ カ゛メンヘ
  42. ON RQ GOSUB @TITINIT,@SSINIT,@GAMEINIT,@GOVINIT,@SCINIT
  43. FL=RQ
  44. ’--- カ゛メンコ゛トノショリヘ
  45. @FLJUMP
  46. ON FL GOTO @TIT,@SSTART,@GAME,@GOVER,@SCLEAR
  47. RETURN
  48. ’───────────────────────────
  49. ’───────────────────────────
  50. @ANYBUT
  51. R=FALSE
  52. IF OLDB THEN RETURN
  53. IF B==0 THEN RETURN
  54. R=TRUE
  55. RETURN
  56. ’---
  57. @SE
  58. P=(128/23)*X
  59. V=(100/23)*Y+27
  60. BEEP B,F,V,P
  61. RETURN
  62. ’───────────────────────────
  63. @TIT
  64. ’───────────────────────────
  65. GOSUB @TITPUT
  66. GOSUB @ANYBUT
  67. IF R==FALSE THEN RETURN
  68. BGMSTOP
  69. RQ=1
  70. RETURN
  71. ’---
  72. @TITINIT
  73. CLS:BGMPLAY 14
  74. STG=0
  75. @TITPUT
  76. I=(C/4) AND 7
  77. IF I>3 THEN I=7-I
  78. COLOR CL(I):C=C+1
  79. X=6:Y=8
  80. LOCATE X,Y+0:PRINT”┣┫┳┏┗╋┏ ┻┏┓┗┫┳┏━┣┏┻┏┓”
  81. LOCATE X,Y+1:PRINT”┛┻┻ ┛┻ ┏┻┠━┯┨┻  ┣┏┻┠━”
  82. LOCATE X,Y+2:PRINT”┯┗┃┠━┻  ┻┃┓┛┻┃┠┓┯┠┻┃┓”
  83. COLOR 9:X=8:Y=Y+7
  84. LOCATE X,Y:PRINT”PUSH ANY BUTTON!”
  85. COLOR 2:X=4:Y=Y+5
  86. LOCATE X,Y:PRINT”(C)2011 SmileBoom Co.Ltd.”
  87. RETURN
  88. ’───────────────────────────
  89. @SSTART
  90. ’───────────────────────────
  91. W=W-1:IF W<0 GOTO @_SIEND
  92. GOSUB @ANYBUT
  93. IF R==FALSE THEN RETURN
  94. @_SIEND
  95. RQ=2
  96. RETURN
  97. ’---
  98. @SSINIT
  99. CLS:BGMSTOP
  100. X=13:Y=11:W=60*1
  101. LOCATE X,Y:PRINT”Ready?”
  102. RETURN
  103. ’───────────────────────────
  104. @SCLEAR
  105. ’───────────────────────────
  106. GOSUB @ANYBUT
  107. IF R==FALSE THEN RETURN
  108. RQ=3
  109. RETURN
  110. @SCINIT
  111. CLS:BGMPLAY 9
  112. X=13:Y=11:W=60*1
  113. LOCATE X,Y:PRINT”CLEAR!”
  114. RETURN
  115. ’───────────────────────────
  116. @GOVER
  117. ’───────────────────────────
  118. GLINE MX*8,MY*8,RND(256),RND(256),RND(256)
  119. GCIRCLE MX*8,MY*8,RND(100)+2,RND(256)
  120. IF BGMCHK() THEN RETURN
  121. GOSUB @ANYBUT
  122. IF R==FALSE THEN RETURN
  123. GCLS
  124. RQ=0
  125. RETURN
  126. ’---
  127. @GOVINIT
  128. CLS:BGMPLAY 6:BGMW=TRUE
  129. X=11:Y=11
  130. LOCATE X,Y:PRINT”GAME OVER”
  131. RETURN
  132. ’───────────────────────────
  133. @GAME
  134. ’───────────────────────────
  135. GOSUB @MYCAR
  136. GOSUB @ENEMY
  137. GOSUB @PUTSCO
  138. IF DOT==0 GOTO @MYCLR
  139. RETURN
  140. ’---
  141. @MYCAR
  142. MW=MW+1
  143. IF MW<WMAX THEN RETURN
  144. MW=0
  145. LOCATE MX,MY:PRINT” ”
  146. @_MYRETRY
  147. X=MX+VX(MD):Y=MY+VY(MD):D=MD
  148. IF MS THEN MS=FALSE:GOTO @_MYSVEC
  149. ’--- ニュウリョクカクニン
  150. GOSUB @GETVEC
  151. ’---
  152. @_MYSVEC
  153. X=X+KX:Y=Y+KY
  154. GOSUB @CHKDOT
  155. IF C==ASC(”Е”) GOTO @DEAD
  156. IF R GOTO @_MYMOVE
  157. ’--- ホウコウチョウセイ
  158. MD=D
  159. GOTO @_MYRETRY
  160. ’--- イト゛ウ
  161. @_MYMOVE
  162. IF C!=ASC(”・”) GOTO @_MYMOV2
  163. ’--- ト゛ットケ゛ット
  164. B=62:F=-4000:GOSUB @SE
  165. DOT=DOT-1
  166. SCO=SCO+10
  167. GOSUB @SPDUP
  168. ’---
  169. @_MYMOV2
  170. MX=X:MY=Y
  171. GOSUB @PUTMCAR
  172. RETURN
  173. ’---
  174. @MYCLR
  175. BEEP 32
  176. STG=STG+1
  177. IF STG==4 THEN RQ=4:RETURN
  178. ’---
  179. BGMPLAY 4
  180. BGMW=TRUE
  181. RQ=1
  182. RETURN
  183. ’---
  184. @GETVEC
  185. KX=0:KY=0:
  186. IF B==1 THEN KY=-1:O=3
  187. IF B==2 THEN KY=1:O=1
  188. IF B==4 THEN KX=-1:O=2
  189. IF B==8 THEN KX=1:O=0
  190. ’---
  191. IF D==O GOTO @GVOFF
  192. O=O+2:O=O AND 3
  193. IF D==O GOTO @GVOFF
  194. ’---
  195. OX=X+KX:OY=Y+KY
  196. C=CHKCHR(OX,OY)
  197. MS=TRUE
  198. IF C==ASC(”・”) THEN RETURN
  199. IF C==ASC(” ”) THEN RETURN
  200. @GVOFF
  201. KX=0:KY=0:MS=FALSE
  202. RETURN
  203. ’---
  204. @SPDUP
  205. WMAX=WMAX-0.05
  206. IF WMAX<0.01 THEN WMAX=0.01
  207. RETURN
  208. ’---
  209. @DEAD
  210. BEEP 55,-2000
  211. RQ=3
  212. RETURN
  213. ’---
  214. @ENEMY
  215. IF ECNT==0 THEN RETURN
  216. FOR I=0 TO ECNT-1
  217.  WM=E(I,_WM)
  218.  W=E(I,_W):W=W+1
  219.  IF W<WM GOTO @_ESKIP
  220.  W=0
  221. @_ERETRY
  222.  X=E(I,_X):Y=E(I,_Y):D=E(I,_D)
  223.  LOCATE X,Y:PRINT CHR$(E(I,_C))
  224.  X=X+VX(D):Y=Y+VY(D)
  225.  GOSUB @CHKDOT
  226.  IF R GOTO @_EMOVE
  227.  E(I,_D)=D
  228.  GOTO @_ERETRY
  229. @_EMOVE
  230.  E(I,_X)=X:E(I,_Y)=Y
  231.  E(I,_C)=CHKCHR(X,Y)
  232.  GOSUB @PUTENE
  233. @_ESKIP
  234.  E(I,_W)=W
  235. NEXT
  236. RETURN
  237. ’---
  238. @CHKDOT
  239. C=CHKCHR(X,Y):R=TRUE
  240. IF C==ASC(”・”) THEN RETURN
  241. IF C==ASC(” ”) THEN RETURN
  242. D=D-1:D=D AND 3
  243. R=FALSE
  244. RETURN
  245. ’---
  246. @PUTSCO
  247. X=25:Y=2
  248. LOCATE X,Y:PRINT”     ”
  249. LOCATE X,Y:PRINT SCO
  250. Y=Y+3
  251. LOCATE X,Y:PRINT”     ”
  252. LOCATE X,Y:PRINT WTOP-WMAX
  253. Y=Y+3
  254. LOCATE X,Y:PRINT”     ”
  255. LOCATE X,Y:PRINT DOT
  256. RETURN
  257. ’---
  258. @GAMEINIT
  259. CLS
  260. BGMPLAY 13
  261. ’---
  262. COLOR 7
  263. X=24:Y=1
  264. LOCATE X,Y:PRINT”SCORE”;
  265. Y=Y+3
  266. LOCATE X,Y:PRINT”SPEED”;
  267. Y=Y+3
  268. LOCATE X,Y:PRINT”REST”;
  269. LOCATE 0,23:PRINT”STAGE:”;
  270. PRINT STG+1;
  271. COLOR 0
  272. ’---
  273. MW=0:WTOP=8:WMAX=WTOP
  274. MS=FALSE
  275. SCO=0
  276. ’---
  277. @STAGE1
  278. ’---
  279. DATA”┌─────────────────────┐”
  280. DATA”│・・・・・・・・・・・・・・・・・・・・・│”
  281. DATA”│・┌───────   ───────┐・│”
  282. DATA”│・│・・・・・・・・・・・・・・・・・│・│”
  283. DATA”│・│・┌─────   ─────┐・│・│”
  284. DATA”│・│・│・・・・・・・・・・・・・│・│・│”
  285. DATA”│・│・│・┌───   ───┐・│・│・│”
  286. DATA”│・│・│・│・・・・・・・・・│・│・│・│”
  287. DATA”│・│・│・│・┌─   ─┐・│・│・│・│”
  288. DATA”│・│・│・│・│・・・・・│・│・│・│・│”
  289. DATA”│・ ・ ・ ・ ・┌─┐・ ・ ・ ・ ・│”
  290. DATA”│・ ・ ・ ・ ・│Ч│・ ・ ・ ・ ・│”
  291. DATA”│・ ・ ・ ・ ・└─┘・ ・ ・ ・ ・│”
  292. DATA”│・│・│・│・│・・・・・│・│・│・│・│”
  293. DATA”│・│・│・│・└─   ─┘・│・│・│・│”
  294. DATA”│・│・│・│・・・・・・・・・│・│・│・│”
  295. DATA”│・│・│・└───   ───┘・│・│・│”
  296. DATA”│・│・│・・・・・・・・・・・・・│・│・│”
  297. DATA”│・│・└─────   ─────┘・│・│”
  298. DATA”│・│・・・・・・・・・・・・・・・・・│・│”
  299. DATA”│・└───────   ───────┘・│”
  300. DATA”│・・・・・・・・・・ ・・・・・・・・・・│”
  301. DATA”└─────────────────────┘”
  302. DATA 11,21,0
  303. DATA 3
  304. DATA 11,1,2
  305. DATA 11,5,2
  306. DATA 11,7,2
  307. ’---
  308. RESTORE @STAGE1
  309. FOR I=0 TO 22
  310.  READ C$
  311.  LOCATE 0,I
  312.  PRINT C$
  313. NEXT
  314. ’--- ト゛ットヲカソ゛エル
  315. DOT=0
  316. FOR Y=0 TO 22
  317.  FOR X=0 TO 22
  318.   IF CHKCHR(X,Y)==ASC(”・”) THEN DOT=DOT+1
  319.  NEXT
  320. NEXT
  321. ’--- シ゛フ゛ン
  322. READ MX,MY,MD
  323. GOSUB @PUTMCAR
  324. ’--- テキノハッセイ
  325. READ ECNT
  326. ECNT=STG
  327. IF STG==0 THEN RETURN
  328. FOR I=0 TO ECNT-1
  329.  READ X,Y,D
  330.  E(I,_X)=X:E(I,_Y)=Y:E(I,_D)=D
  331.  E(I,_C)=CHKCHR(X,Y)
  332.  E(I,_WM)=4+RND(60)
  333.  GOSUB @PUTENE
  334. NEXT
  335. ’---
  336. RETURN
  337. ’---
  338. @PUTMCAR
  339. LOCATE MX,MY
  340. PRINT MYCHR$(MD)
  341. RETURN
  342. ’---
  343. @PUTENE
  344. LOCATE E(I,_X),E(I,_Y)
  345. PRINT ”Е”
  346. RETURN