プチコンmkII

  1. ’┌──────────────────┐
  2. ’│GAME5             │
  3. ’│ カクトウ ケ゛ーム        │
  4. ’└──────────────────┘
  5. GOSUB @INIT
  6. @START
  7. GOSUB @TITLE
  8. ’--- MAIN
  9. @MAIN
  10. INOT=(I+1)%2        ’アイテノ ID
  11. NNOT=AN+INOT        ’アイテノ スフ゜ライトNO.
  12. XNOT=SPGETV(NNOT,VX)
  13. N=AN+I
  14. GOSUB @VPOP
  15. X1=1-(I*2)
  16. BT=0
  17. IF I==0 THEN BT=BUTTON()
  18. IF I==1 AND RND(2)==0 THEN BT=POW(2,RND(8))
  19. GOSUB @JUMP
  20. GOSUB @PUNCH
  21. GOSUB @DAMAGE
  22. IF (BT AND 1) THEN KEN=16
  23. IF (BT AND 2) THEN KEN=40
  24. IF (BT AND 4) THEN X=X-1
  25. IF (BT AND 8) THEN X=X+1
  26. IF ABS(X-XNOT)<128 THEN X=X-X1 ’チカツ゛キスキ゛
  27. IF X<32  THEN X=32
  28. IF X>224 THEN X=224
  29. SPOFS N,X,Y
  30. GOSUB @HITCHK
  31. GOSUB @VPUSH
  32. VSYNC 1
  33. IF HP<=0 THEN @GOVER
  34. I=(I+1)%2
  35. GOTO @MAIN
  36. ’--- シュウリョウ
  37. @GOVER
  38. BGMSTOP
  39. SPCHR AN+I,320+16*2
  40. A=0
  41. A1=-1
  42. IF I==1 THEN A1=-A1
  43. @GOVER2
  44. A=A+A1
  45. SPANGLE AN+I,A
  46. VSYNC 1
  47. IF A>=-45 AND A<=45 THEN @GOVER2
  48. BGMPLAY 4
  49. WAIT 180
  50. GOTO @START
  51. ’---テ゛-タ ヨミコミ
  52. @VPOP
  53. X  =SPGETV(N,VX)
  54. Y  =SPGETV(N,VY)
  55. HP =SPGETV(N,VHP)
  56. JMP=SPGETV(N,VJMP)
  57. PCH=SPGETV(N,VPCH)
  58. KEN=SPGETV(N,VKEN)
  59. DMG=SPGETV(N,VDMG)
  60. RETURN
  61. ’---テ゛-タ カクノウ
  62. @VPUSH
  63. SPSETV N,VX  ,X
  64. SPSETV N,VY  ,Y
  65. SPSETV N,VHP ,HP
  66. SPSETV N,VJMP,JMP
  67. SPSETV N,VPCH,PCH
  68. SPSETV N,VKEN,KEN
  69. SPSETV N,VDMG,DMG
  70. RETURN
  71. ’--- シ゛ャンフ゜ 
  72. @JUMP
  73. IF JMP THEN @JUMP2
  74. IF DMG THEN RETURN
  75. IF Y<JY THEN Y=Y+JMPMAX
  76. IF Y>JY THEN Y=JY:JMP=0
  77. IF (BT AND 16) THEN @JUMP3
  78. RETURN
  79. ’--- シ゛ャンフ゜ スタ-ト
  80. @JUMP3
  81. JMP=JMPMAX
  82. ’BEEP 8
  83. RETURN
  84. ’--- シ゛ャンフ゜ チュウ
  85. @JUMP2
  86. Y=Y+(JMPHF-JMP)
  87. JMP=JMP-0.5
  88. IF JMP<0 THEN JMP=0
  89. RETURN
  90. ’--- アタリハンテイ
  91. @HITCHK
  92. X2=X1*80
  93. IF PCH<PCHHF THEN X2=X2/2
  94. KX=X+X2        ’ケン ノ サ゛ヒョウ
  95. KY=Y+KEN
  96. SPOFS BN+I,KX,KY
  97. IF SPCHK(CN+I)==0 THEN SPOFS CN+I,999,999
  98. IF DMG THEN RETURN
  99. IF PCH<PCHHF THEN RETURN
  100. IF ABS(KX-XNOT)>64 THEN RETURN
  101. DMGNOT=SPGETV(NNOT,VDMG)
  102. IF DMGNOT THEN RETURN  ’アイテカ゛ タ゛メーシ゛チュウ
  103. KENNOT=SPGETV(NNOT,VKEN)
  104. IF ABS(KEN-KENNOT)<8 THEN @DEFEND
  105. SPSETV NNOT,VDMG,8  ’コウケ゛キ ヒット
  106. RETURN
  107. ’--- ホ゛ウキ゛ョ サレタ
  108. @DEFEND
  109. SPOFS CN+I,KX,KY
  110. KX2=KX+RND(60)-30
  111. KY2=KY+RND(60)-30
  112. PCH=PCHMAX/2
  113. SPOFS CN+I,KX2,KY2,40
  114. BEEP 8
  115. RETURN
  116. ’--- タ゛メーシ゛
  117. @DAMAGE
  118. IF DMG==0 THEN RETURN
  119. X=X-X1
  120. DMG=DMG-1
  121. IF DMG THEN RETURN
  122. HP=HP-1
  123. IF HP<0 THEN HP=0
  124. GOSUB @PRTHP2
  125. RETURN
  126. ’--- コウケ゛キ
  127. @PUNCH
  128. IF PCH THEN @PUNCH2
  129. IF DMG THEN RETURN
  130. IF (BT AND 32)==0 THEN RETURN
  131. PCH=PCHMAX
  132. BEEP 1
  133. SPCHR N,320+16
  134. RETURN
  135. ’--- コウケ゛キ チュウ
  136. @PUNCH2
  137. X=X+(PCH-PCHHF)*X1
  138. IF PCH<PCHHF THEN SPCHR N,320
  139. PCH=PCH-1
  140. IF PCH<0 THEN PCH=0
  141. RETURN
  142. ’--- タイリョク ヒョウシ゛
  143. @PRTHP
  144. HX=(I*16)+2
  145. COLOR 0
  146. LOCATE HX,0
  147. PRINT NAM$(I)
  148. COLOR 4
  149. FOR TMP=0 TO 10
  150.  LOCATE TMP+HX,1 
  151.  PRINT ”┿”;
  152. NEXT
  153. @PRTHP2
  154. HX=(I*16)+2
  155. COLOR 13
  156. FOR TMP=10 TO HP STEP -1
  157.  LOCATE TMP+HX,1 
  158.  PRINT ”┿”;
  159. NEXT
  160. RETURN
  161. ’--- ショキカ
  162. @INIT
  163. CLEAR
  164. ACLS
  165. PRINT ”         ショキカ チュウ”
  166. DIM NAM$(2)
  167. NAM$(0)=”YOU”
  168. NAM$(1)=”CPU”
  169. PAL=2
  170. C2=0
  171. JIMEN=20
  172. JY=JIMEN*8-64
  173. AN=4  ’カラタ゛ スフ゜ライトNO.
  174. BN=2  ’フ゛キ スフ゜ライトNO.
  175. CN=0  ’ヒハ゛ナ スフ゜ライトNO.
  176. JMPMAX=10
  177. PCHMAX=9
  178. PCHHF=FLOOR(PCHMAX/2)
  179. JMPHF=FLOOR(JMPMAX/2)
  180. NUM=64:GOSUB @CHRZOOM
  181. NUM=81:GOSUB @CHRZOOM
  182. NUM=88:GOSUB @CHRZOOM
  183. NUM=16:GOSUB @CHRZOOM
  184. W=64  ’キャラクタ サイス゛
  185. H=64
  186. VX=0   ’サ゛ヒョウ
  187. VY=1   ’
  188. VHP=2  ’タイリョク
  189. VJMP=3 ’シ゛ャンフ゜
  190. VPCH=4 ’ハ゜ンチ
  191. VKEN=5 ’ケン ノ イチ
  192. VDMG=6 ’タ゛メーシ゛
  193. FOR I=0 TO 1
  194.  N=AN+I
  195.  PAL=2+(I*2)
  196.  SPSET N,320,PAL,I,0,1,W,H
  197.  SPHOME N,W/2,H/2
  198.  SPSCALE N,200
  199.  N=BN+I
  200.  SPSET N,368,PAL,I,0,1,W,H
  201.  SPHOME N,W/2,H/2
  202.  SPSCALE N,100
  203.  N=CN+I
  204.  SPSET N,20,PAL,I,0,1
  205.  SPHOME N,8,8
  206.  SPSCALE N,200
  207.  SPANIM N,4,20
  208. NEXT
  209. ’--- ハイケイ
  210. GCLS
  211. GPAGE 0
  212. FOR Y=0 TO JY-1
  213.  C=242+(5*Y/JY)
  214.  GLINE 0,Y,255,Y,C
  215. NEXT
  216. J=0
  217. FOR Y=JY TO 191
  218.  J=FLOOR(4*(Y-JY)/(191-JY))+1
  219.  C = 247-(J*36)-(J*6)
  220.  GLINE 0,Y,255,Y,C
  221. NEXT
  222. Y=JY
  223. C=0
  224. FOR J=0 TO 13
  225.  GLINE 0,Y,255,Y,C
  226.  Y=Y+J
  227. NEXT
  228. FOR X=0 TO 128 STEP 10
  229.  GLINE 128+X,JY,128+X*5,191,C
  230.  GLINE 128-X,JY,128-X*5,191,C
  231. NEXT
  232. RETURN
  233. ’--- キャラクタヲ カクタ゛イ
  234. @CHRZOOM
  235. GCLS
  236. C1=(NUM % 64)*4
  237. S$=”SPU”+STR$(FLOOR(NUM/64))
  238. ’--- GPUTCHR
  239. FOR Y=0 TO 8*4 STEP 8*4
  240.  FOR X=0 TO 8*4 STEP 8*4
  241.   GPUTCHR X,Y,S$,C1,PAL,4
  242.   C1=C1+1
  243.  NEXT
  244. NEXT
  245. ’--- CHRSET
  246. FOR SY=0 TO 63 STEP 8
  247.  FOR SX=0 TO 63 STEP 8
  248.   BF$=””
  249.   FOR Y=0 TO 7
  250.    FOR X=0 TO 7
  251.     COL=GSPOIT(SX+X,SY+Y)
  252.     BF$=BF$+HEX$(COL AND &HF)
  253.    NEXT
  254.   NEXT
  255.   CHRSET ”SPU5”,C2,BF$
  256.   C2=C2+1
  257.  NEXT
  258. NEXT
  259. RETURN
  260. ’--- タイトル
  261. @TITLE
  262. BGMSTOP
  263. CLS
  264. FOR I=0 TO 1
  265.  N=AN+I
  266.  X=((128+64)*I)+32
  267.  Y=JY
  268.  HP=11
  269.  KEN=16
  270.  DMG=0
  271.  PCH=0
  272.  SPOFS N,X,Y
  273.  SPCHR N,320
  274.  GOSUB @VPUSH
  275.  SPOFS BN+I,999,999
  276.  SPOFS CN+I,999,999
  277. NEXT
  278. WAIT 20
  279. COLOR 0
  280. RESTORE @TITLE2
  281. Y=3
  282. @TITLE1
  283. READ A$
  284. IF A$==”END” THEN @TITLE3
  285. GOSUB @PNTSUB
  286. Y=Y+1
  287. GOTO @TITLE1
  288. @TITLE2
  289. DATA ” ┿   ┝┿┿ ┿   ┿ ”
  290. DATA ”┿┿┿┿ ┸ ┿ ┿蒻 ┿┿┿”
  291. DATA ” ┿ ┿  ┝┸ ┿┥ ┿ ┿”
  292. DATA ”┝┸┝┸ ┝┸  ┿   ┝┸”
  293. DATA ””
  294. DATA ” ┝┸ ┫     ┝┸ ”
  295. DATA ”┝┿┿┿     ┝┸  ”
  296. DATA ”┸ ┿  ┿┿┿ ┿  ┿”
  297. DATA ” ┝┸      ┿┿┿┿”
  298. DATA ”KAKUTOU GAME”
  299. DATA ””
  300. DATA ”HOW TO PLAY”
  301. DATA ””
  302. DATA ”[A]BUTTON:シ゛ャンフ゜”
  303. DATA ”[B]BUTTON:コウケ゛キ”
  304. DATA ”[←→]BUTTON:イト゛ウ”
  305. DATA ”[↑↓]BUTTON:ケン カマエ”
  306. DATA ””
  307. DATA ”PUSH ANY BUTTON”
  308. DATA ””
  309. DATA ”END”
  310. ’--- オシ゛キ゛
  311. @TITLE3
  312. A=0
  313. A1=1
  314. @TITLE4
  315. A=A+A1
  316. IF A<=0 OR A>=30 THEN A1=-A1
  317. SPANGLE AN+0,A
  318. SPANGLE AN+1,-A
  319. VSYNC 2
  320. BT=BUTTON()
  321. IF BT==0 THEN @TITLE4
  322. SPANGLE AN+0,0
  323. SPANGLE AN+1,0
  324. CLS
  325. J=20
  326. FOR I=0 TO 8
  327.  BEEP 58
  328.  WAIT J+5
  329.  J=J/2
  330. NEXT
  331. FOR I=0 TO 1
  332.  GOSUB @PRTHP
  333. NEXT
  334. BGMPLAY 1
  335. I=0
  336. RETURN
  337. ’--- モシ゛ ヒョウシ゛
  338. @PNTSUB2
  339. COLOR 3
  340. @PNTSUB3
  341. Y=96/8
  342. @PNTSUB
  343. X=16-(LEN(A$)/2)
  344. LOCATE X,Y
  345. PRINT A$
  346. RETURN
  347. ’┌─────────────────────────┐
  348. ’│オワリ                      │
  349. ’└─────────────────────────┘