home *** CD-ROM | disk | FTP | other *** search
/ FreeWare Collection 3 / FreeSoftwareCollection3pd199x-jp.img / kxc / basic386 / ns / ns.bas next >
BASIC Source File  |  1980-01-02  |  11KB  |  401 lines

  1. 1000 '=============================================
  2. 1010 '=  Night Striker ver 1.0  =
  3. 1020 '=    copy free : programed by K.OKAMOTO    =
  4. 1030 '=============================================
  5. 1040 CLEAR
  6. 1050 GOSUB *INIT
  7. 1060 ' << main >>
  8. 1070 *MAIN
  9. 1080 '自機移動
  10. 1090 I=PAD(1)
  11. 1100 XV=((I<9 AND I>5 AND X>16)-(I<5 AND I>1 AND X<207))*12
  12. 1110 YV=(((I=1 OR I=2 OR I=8) AND Y>16)-(I<7 AND I>3 AND Y<192))*12
  13. 1120 X=X+XV:Y=Y+YV
  14. 1130 TRG=PTRIG(1)
  15. 1140 IF TRG<>0 THEN GOSUB *GUN
  16. 1150 SPRITE 6,0,XV,YV
  17. 1160 '自弾移動
  18. 1170  FOR A=0 TO 2
  19. 1180   IF GUN_F(A)=0 THEN 1260
  20. 1190   GUN_Y(A)=GUN_Y(A)-24
  21. 1200   IF GUN_Y(A)<=0 THEN GUN_F(A)=0:SPRITE 0,A*2+4,0:GOTO 1260
  22. 1210   SPRITE 6,A*2+4,0,-24
  23. 1220   IF P=7 THEN 1260
  24. 1230    FOR B=0 TO 3
  25. 1240     IF GUN_Y(A)>EN_Y(B)-20 AND GUN_Y(A)<EN_Y(B)+20 THEN GOSUB *KILLD
  26. 1250    NEXT
  27. 1260 NEXT
  28. 1270 '
  29. 1280 ' << enemy >>
  30. 1290 GOSUB *ENEMY
  31. 1300 ' << tama >>
  32. 1310 GOSUB *TAMA
  33. 1320 ' << bos >>
  34. 1330 IF G_OVER=0 THEN  *MAIN
  35. 1340 END
  36. 1350 ' << enemy >>
  37. 1360 *ENEMY
  38. 1370 IF EN_T<=0 THEN *ENE_INIT
  39. 1380 EN_T=EN_T-1
  40. 1390 '
  41. 1400 ON P GOSUB *P1,*P2,*P3,*P4,*P5,*P6,*P7,*P8
  42. 1410 '
  43. 1420 RETURN 
  44. 1430 '
  45. 1440 *P1
  46. 1450   FOR A=0 TO 3
  47. 1460     IF EN_F(A)>0 AND EN_F(A)<20 THEN GOSUB *DETH:GOTO 1480
  48. 1470     SPRITE 6,20+A*4,0,6:EN_Y(A)=EN_Y(A)+6
  49. 1480   NEXT
  50. 1490 RETURN
  51. 1500 '
  52. 1510 *P2
  53. 1520 IF EN_T<40 THEN *P21
  54. 1530   FOR A=0 TO 3
  55. 1540     IF EN_F(A)>0 AND EN_F(A)<20 THEN GOSUB *DETH:GOTO 1560
  56. 1550     SPRITE 6,20+A*4,0,-3:EN_Y(A)=EN_Y(A)-3
  57. 1560   NEXT
  58. 1570 RETURN
  59. 1580 '
  60. 1590 *P21
  61. 1600 A=0
  62. 1610 IF EN_F(A)>0 THEN GOSUB *DETH:GOTO 1640
  63. 1620 SPRITE 6,20+A*4,1,-3
  64. 1630 EN_X(A)=EN_X(A)+1:EN_Y(A)=EN_Y(A)-3
  65. 1640 A=1
  66. 1650 IF EN_F(A)>0 THEN GOSUB *DETH:GOTO 1680
  67. 1660 SPRITE 6,20+A*4,1,-3
  68. 1670 EN_X(A)=EN_X(A)+1:EN_Y(A)=EN_Y(A)-3
  69. 1680 A=2
  70. 1690 IF EN_F(A)>0 THEN GOSUB *DETH:GOTO 1720
  71. 1700 SPRITE 6,20+A*4,-1,-3
  72. 1710 EN_X(A)=EN_X(A)-1:EN_Y(A)=EN_Y(A)-3
  73. 1720 A=3
  74. 1730 IF EN_F(A)>0 THEN GOSUB *DETH:GOTO 1760
  75. 1740 SPRITE 6,20+A*4,-1,-3
  76. 1750 EN_X(A)=EN_X(A)-1:EN_Y(A)=EN_Y(A)-3
  77. 1760 RETURN
  78. 1770 '
  79. 1780 *P3
  80. 1790 IF EN_T<25 THEN *P31
  81. 1800 A=0
  82. 1810 IF EN_F(A)>0 THEN GOSUB *DETH:GOTO 1840
  83. 1820 SPRITE 6,20+A*4,6,6
  84. 1830 EN_X(A)=EN_X(A)+6:EN_Y(A)=EN_Y(A)+6
  85. 1840 A=1
  86. 1850 IF EN_F(A)>0 THEN GOSUB *DETH:GOTO 1880
  87. 1860 SPRITE 6,20+A*4,6,6
  88. 1870 EN_X(A)=EN_X(A)+6:EN_Y(A)=EN_Y(A)+6
  89. 1880 A=2
  90. 1890 IF EN_F(A)>0 THEN GOSUB *DETH:GOTO 1920
  91. 1900 SPRITE 6,20+A*4,-6,6
  92. 1910 EN_X(A)=EN_X(A)-6:EN_Y(A)=EN_Y(A)+6
  93. 1920 A=3
  94. 1930 IF EN_F(A)>0 THEN GOSUB *DETH:GOTO 1960
  95. 1940 SPRITE 6,20+A*4,-6,6
  96. 1950 EN_X(A)=EN_X(A)-6:EN_Y(A)=EN_Y(A)+6
  97. 1960 RETURN
  98. 1970 *P31
  99. 1980   FOR A=0 TO 3
  100. 1990     IF EN_F(A)>0 AND EN_F(A)<20 THEN GOSUB *DETH:GOTO 2010
  101. 2000     SPRITE 6,20+A*4,0,8:EN_Y(A)=EN_Y(A)+8
  102. 2010   NEXT
  103. 2020 RETURN
  104. 2030 '
  105. 2040 *P4
  106. 2050 '
  107. 2060   FOR A=0 TO 3
  108. 2070     IF EN_F(A)>0 AND EN_F(A)<20 THEN GOSUB *DETH:GOTO 2110
  109. 2080     B=(EN_X(A)>X)-(EN_X(A)<X)
  110. 2090     SPRITE 6,20+A*4,8*B,6
  111. 2100     EN_X(A)=EN_X(A)+8*B:EN_Y(A)=EN_Y(A)+6
  112. 2110   NEXT
  113. 2120 RETURN
  114. 2130 '
  115. 2140 *P5
  116. 2150 '
  117. 2160 IF EN_T=<20 THEN *P51
  118. 2170   FOR A=0 TO 3
  119. 2180     IF EN_F(A)>0 AND EN_F(A)<20 THEN GOSUB *DETH:GOTO 2230
  120. 2190     B=(EN_X(A)>X)-(EN_X(A)<X)
  121. 2200     C=(EN_Y(A)>Y)-(EN_Y(A)<Y)
  122. 2210     SPRITE 6,20+A*4,2*B,2*C
  123. 2220     EN_X(A)=EN_X(A)+2*B:EN_Y(A)=EN_Y(A)+2*C
  124. 2230   NEXT
  125. 2240 RETURN
  126. 2250 '
  127. 2260 *P51
  128. 2270   FOR A=0 TO 3
  129. 2280     IF EN_F(A)>0 AND EN_F(A)<20 THEN GOSUB *DETH:GOTO 2320
  130. 2290     B=(240-EN_Y(A))*.2!
  131. 2300     EN_Y(A)=EN_Y(A)+B
  132. 2310     SPRITE 6,20+A*4,0,B
  133. 2320   NEXT
  134. 2330 RETURN
  135. 2340 '
  136. 2350 *P6
  137. 2360 IF (INT(EN_T/5) AND 1)=0 THEN *P61
  138. 2370 A=0
  139. 2380 IF EN_F(A)>0 THEN GOSUB *DETH:GOTO 2410
  140. 2390 SPRITE 6,20+A*4,20,6
  141. 2400 EN_X(A)=EN_X(A)+20:EN_Y(A)=EN_Y(A)+6
  142. 2410 A=1
  143. 2420 IF EN_F(A)>0 THEN GOSUB *DETH:GOTO 2450
  144. 2430 SPRITE 6,20+A*4,20,6
  145. 2440 EN_X(A)=EN_X(A)+20:EN_Y(A)=EN_Y(A)+6
  146. 2450 A=2
  147. 2460 IF EN_F(A)>0 THEN GOSUB *DETH:GOTO 2490
  148. 2470 SPRITE 6,20+A*4,-20,6
  149. 2480 EN_X(A)=EN_X(A)-20:EN_Y(A)=EN_Y(A)+6
  150. 2490 A=3
  151. 2500 IF EN_F(A)>0 THEN GOSUB *DETH:GOTO 2530
  152. 2510 SPRITE 6,20+A*4,-20,6
  153. 2520 EN_X(A)=EN_X(A)-20:EN_Y(A)=EN_Y(A)+6
  154. 2530 RETURN
  155. 2540 '
  156. 2550 *P61
  157. 2560 A=0
  158. 2570 IF EN_F(A)>0 THEN GOSUB *DETH:GOTO 2600
  159. 2580 SPRITE 6,20+A*4,-20,6
  160. 2590 EN_X(A)=EN_X(A)-20:EN_Y(A)=EN_Y(A)+6
  161. 2600 A=1
  162. 2610 IF EN_F(A)>0 THEN GOSUB *DETH:GOTO 2640
  163. 2620 SPRITE 6,20+A*4,-20,6
  164. 2630 EN_X(A)=EN_X(A)-20:EN_Y(A)=EN_Y(A)+6
  165. 2640 A=2
  166. 2650 IF EN_F(A)>0 THEN GOSUB *DETH:GOTO 2680
  167. 2660 SPRITE 6,20+A*4,20,6
  168. 2670 EN_X(A)=EN_X(A)+20:EN_Y(A)=EN_Y(A)+6
  169. 2680 A=3
  170. 2690 IF EN_F(A)>0 THEN GOSUB *DETH:GOTO 2720
  171. 2700 SPRITE 6,20+A*4,20,6
  172. 2710 EN_X(A)=EN_X(A)+20:EN_Y(A)=EN_Y(A)+6
  173. 2720 RETURN
  174. 2730 '
  175. 2740 *P7
  176. 2750 IF B_H<=0 THEN GOSUB *LDETH:GOTO 2860
  177. 2760 EN_T=EN_T+1
  178. 2770    FOR A=0 TO 2
  179. 2780     IF GUN_Y(A)>EN_Y(0) AND GUN_Y(A)<EN_Y(0)+40 THEN GOSUB *LKILLD
  180. 2790    NEXT
  181. 2800 B=(EN_X(0)>X)-(EN_X(0)<X)
  182. 2810 C=(EN_Y(0)>Y)-(EN_Y(0)<Y)
  183. 2820 SPRITE 6,20,B,C
  184. 2830   FOR A=0 TO 3
  185. 2840     EN_X(A)=EN_X(A)+B:EN_Y(A)=EN_Y(A)+C
  186. 2850   NEXT
  187. 2860 RETURN
  188. 2870 '
  189. 2880 *ENE_INIT
  190. 2890 'count=count+1:p=M(COUNT)
  191. 2900 P=P+1:IF P=8 THEN P=1
  192. 2910 '
  193. 2920 ON P GOSUB *I1,*I2,*I3,*I1,*I5,*I3,*I7,*I8
  194. 2930 '
  195. 2940 RETURN
  196. 2950 '
  197. 2960 *I1
  198. 2970 EN_T=40:EN_C=3:EN_ST=53:TA_L=30:TA_SP=12:TA_T=21
  199. 2980  FOR A=0 TO 3
  200. 2990    EN_F(A)=0
  201. 3000    EN_X(A)=INT(69*A):EN_Y(A)=0
  202. 3010    DEF SPRITE 1,A*4+20,(EN_X(A),EN_Y(A)),4*4,2,2
  203. 3020    SPRITE 0,A*4+20,1
  204. 3030  NEXT
  205. 3040 RETURN
  206. 3050 '
  207. 3060 *I2
  208. 3070 EN_T=80:EN_C=3:EN_ST=54:TA_L=10:TA_SP=6:TA_T=42
  209. 3080 EN_X(0)= 16:EN_Y(0)=240
  210. 3090 EN_X(1)= 56:EN_Y(1)=240
  211. 3100 EN_X(2)=167:EN_Y(2)=240
  212. 3110 EN_X(3)=207:EN_Y(3)=240
  213. 3120  FOR A=0 TO 3
  214. 3130    EN_F(A)=0
  215. 3140    DEF SPRITE 1,A*4+20,(EN_X(A),EN_Y(A)),12*4,2,2
  216. 3150    SPRITE 0,A*4+20,1
  217. 3160  NEXT
  218. 3170 RETURN
  219. 3180 '
  220. 3190 *I3
  221. 3200 EN_T=40:EN_C=3:EN_ST=52:TA_L=50:TA_SP=16:TA_T=16
  222. 3210 EN_X(0)= 16:EN_Y(0)=0
  223. 3220 EN_X(1)= 56:EN_Y(1)=0
  224. 3230 EN_X(2)=167:EN_Y(2)=0
  225. 3240 EN_X(3)=207:EN_Y(3)=0
  226. 3250 FOR A=0 TO 3
  227. 3260    EN_F(A)=0
  228. 3270    DEF SPRITE 1,A*4+20,(EN_X(A),EN_Y(A)),8*4,2,2
  229. 3280    SPRITE 0,A*4+20,1
  230. 3290 NEXT
  231. 3300 RETURN
  232. 3310 '
  233. 3320 *I5
  234. 3330 EN_T=60:EN_C=3:EN_ST=54:TA_L=20:TA_SP=6:TA_T=42
  235. 3340 EN_X(0)= 16:EN_Y(0)= 16
  236. 3350 EN_X(1)=207:EN_Y(1)= 16
  237. 3360 EN_X(2)= 16:EN_Y(2)=208
  238. 3370 EN_X(3)=207:EN_Y(3)=208
  239. 3380 FOR A=0 TO 3
  240. 3390    EN_F(A)=0
  241. 3400    DEF SPRITE 1,A*4+20,(EN_X(A),EN_Y(A)),12*4,2,2
  242. 3410    SPRITE 0,A*4+20,1
  243. 3420 NEXT
  244. 3430 RETURN
  245. 3440 '
  246. 3450 *I7
  247. 3460 EN_T=30:EN_C=0:EN_ST=54:TA_L=40:TA_SP=12:TA_T=21:B_H=40
  248. 3470   FOR A=0 TO 3
  249. 3480     EN_X(A)=96:EN_Y(A)=240
  250. 3490     EN_F(A)=0
  251. 3500   NEXT
  252. 3510 DEF SPRITE 1,20,(EN_X(0)-16,EN_Y(0)-16),16*4,4,3
  253. 3520 SPRITE 0,20,1
  254. 3530 RETURN
  255. 3540 '
  256. 3550 '
  257. 3560 *DETH
  258. 3570 IF EN_F(A)>=20 THEN RETURN
  259. 3580 EN_Y(A)=EN_Y(A)+6:EN_F(A)=EN_F(A)+1
  260. 3590 SPRITE 6,A*4+20,0,6
  261. 3600 IF EN_F(A)=5  THEN DEF SPRITE 1,A*4+20,(EN_X(A),EN_Y(A)),36*4,2,2
  262. 3610 IF EN_F(A)=10 THEN DEF SPRITE 1,A*4+20,(EN_X(A),EN_Y(A)),40*4,2,2
  263. 3620 IF EN_F(A)=15 THEN DEF SPRITE 1,A*4+20,(EN_X(A),EN_Y(A)),44*4,2,2
  264. 3630 IF EN_F(A)=20 THEN SPRITE 0,A*4+20,0:RETURN
  265. 3640 SPRITE 0,A*4+20,1 '爆発
  266. 3650 RETURN
  267. 3660 '
  268. 3670 *LDETH
  269. 3680   FOR A=0 TO 3
  270. 3690     GOSUB *DETH
  271. 3700   NEXT
  272. 3710 RETURN
  273. 3720 '
  274. 3730 ' << gun >>  弾はキャラクタ-4より2*1が3つ
  275. 3740 *GUN
  276. 3750 A=0
  277. 3760   WHILE A<=2
  278. 3770     IF GUN_F(A)<>0 THEN 3800
  279. 3780     DEF SPRITE 1,A*2+4,(X,Y),48*4,2,1:SPRITE 0,A*2+4,1:'自機弾
  280. 3790     GUN_X(A)=X:GUN_Y(A)=Y:GUN_F(A)=1:A=2
  281. 3800     A=A+1
  282. 3810   WEND
  283. 3820 RETURN
  284. 3830 '
  285. 3840 *KILLD
  286. 3850 IF GUN_X(A)<=EN_X(B)-25 OR GUN_X(A)>=EN_X(B)+25 THEN RETURN
  287. 3860 IF EN_F(B)<>0  THEN RETURN
  288. 3870 IF GUN_F(A)<>1  THEN RETURN
  289. 3880 EN_F(B)=1
  290. 3890 DEF SPRITE 1,B*4+20,(EN_X(B),EN_Y(B)),32*4,2,2
  291. 3900 SPRITE 0,B*4+20,1 '爆発
  292. 3910 SPRITE 0,A*2+4,0:GUN_F(A)=0  '弾は消える
  293. 3920 RETURN
  294. 3930 '
  295. 3940 *LKILLD
  296. 3950 IF GUN_X(A)<=EN_X(0)-40 OR GUN_X(A)>=EN_X(0)+40 THEN RETURN
  297. 3960 IF GUN_F(A)<>1  THEN RETURN
  298. 3970 IF GUN_Y(A)<EN_Y(0)+20 THEN 4010
  299. 3980 DEF SPRITE 1,A*4+4,(GUN_X(A),GUN_Y(A)),50*4,2,1
  300. 3990 SPRITE 0,A*2+4,1
  301. 4000 RETURN
  302. 4010 SPRITE 0,A*2+4,0:GUN_F(A)=0  '弾は消える
  303. 4020 B_H=B_H-1
  304. 4030 IF B_H>0  THEN RETURN
  305. 4040 SPRITE 0,20,0
  306. 4050   FOR A=0 TO 3
  307. 4060     DEF SPRITE 1,A*4+20,(EN_X(A),EN_Y(A)),32*4,2,2
  308. 4070     B=RND(1)*32-16:C=RND(1)*32-16:EN_F(A)=1
  309. 4080     SPRITE 0,A*4+20,1 '爆発
  310. 4090     SPRITE 6,A*4+20,B,C
  311. 4100     EN_X(A)=EN_X(A)+B:EN_Y(A)=EN_Y(A)+C
  312. 4110  '   IF EN_X(A)<0 THEN EN_X(A)=0
  313. 4120  '   IF EN_Y(A)<0 THEN EN_Y(A)=0
  314. 4130   NEXT
  315. 4140 RETURN
  316. 4150 '
  317. 4160 *TAMA
  318. 4170 IF RND(1)*100<TA_L THEN GOSUB *SHOT
  319. 4180  FOR A=0 TO 7
  320. 4190   IF TA_F(A)<=0 THEN 4260
  321. 4200   TA_X(A)=TA_X(A)+TA_XV(A)
  322. 4210   TA_Y(A)=TA_Y(A)+TA_YV(A)
  323. 4220   TA_F(A)=TA_F(A)-1
  324. 4230   IF TA_F(A)<=0 THEN SPRITE 0,A+12,0:GOTO 4260
  325. 4240   SPRITE 6,A+12,TA_XV(A),TA_YV(A)
  326. 4250   IF TA_X(A)>X-10 AND TA_X(A)<X+10 THEN GOSUB *TAMA1
  327. 4260  NEXT
  328. 4270 RETURN
  329. 4280 '
  330. 4290 *TAMA1
  331. 4300 IF TA_Y(A)<=Y-10 OR TA_Y(A)>=Y+10 THEN RETURN
  332. 4310 DEF SPRITE 1,0,(X,Y),32*4,2,2
  333. 4320 SPRITE 0,0,1
  334. 4330 G_OVER=1
  335. 4340 FOR A=0 TO 15000:NEXT
  336. 4350 RETURN
  337. 4360 '
  338. 4370 *SHOT
  339. 4380 B=INT(RND*4)
  340. 4390 IF EN_F(B)<>0 THEN RETURN
  341. 4400 A=0
  342. 4410   WHILE A<=7
  343. 4420     IF TA_F(A)<>0 THEN 4510
  344. 4430     DEF SPRITE 1,A+12,(EN_X(B)+8,EN_Y(B)+8),EN_ST*4,1,1
  345. 4440     SPRITE 0,A+12,1:'敵機弾
  346. 4450     XX!=X-EN_X(B):YY!=Y-EN_Y(B)
  347. 4460     XX!=XX!+(XX!=0):YY!=YY!+(YY!=0) '0除算防止
  348. 4470     LL!=SQR(XX!^2+YY!^2)/TA_SP
  349. 4480     TA_XV(A)=XX!/LL!:TA_YV(A)=YY!/LL!
  350. 4490     IF EN_ST=52 THEN TA_XV(A)=0:TA_YV(A)=16
  351. 4500     TA_X(A)=EN_X(B):TA_Y(A)=EN_Y(B):TA_F(A)=TA_T:A=7
  352. 4510     A=A+1
  353. 4520   WEND
  354. 4530 RETURN
  355. 4540 ' << init >>
  356. 4550 '
  357. 4560 *INIT
  358. 4570 CLS
  359. 4580 COLOR 7,0,0
  360. 4590 DEFINT A-W
  361. 4600 DIM SPR(255),GUN_X(3),GUN_Y(3),GUN_F(3)
  362. 4610 '<< def sprite >>
  363. 4620 PRINT "パタ-ンは定義済ですか"
  364. 4630 INPUT "(Y/N) ",A$
  365. 4640 SCREEN @1
  366. 4650 GOSUB *OPENING
  367. 4660 IF A$="Y" OR A$="y" THEN  4820
  368. 4670 SYMBOL (50,140),"だいぶお待ち下さい",1,1,3,,,6
  369. 4680 OPEN "I",#1,"NS.PTN"
  370. 4690 DEF SPRITE 99,0
  371. 4700   FOR A=0 TO 63
  372. 4710     FOR B=0 TO 15
  373. 4720      INPUT #1,A$
  374. 4730       FOR C=0 TO 15
  375. 4740         D=VAL("&H"+MID$(A$,C*4+1,4))
  376. 4750         IF D=0 THEN D=-32768
  377. 4760         SPR(B*16+C)=D
  378. 4770       NEXT
  379. 4780     NEXT
  380. 4790    DEF SPRITE 0,A*4,SPR,1
  381. 4800   NEXT
  382. 4810 CLOSE
  383. 4820 SPRITE ON
  384. 4830 SPRITE SCREEN (32,0)
  385. 4840 DEF SPRITE 1,0,(111,120),0,2,2:SPRITE 0,0,1:'自機
  386. 4850 X=111:Y=120
  387. 4860 FOR A=0 TO 20000 :NEXT
  388. 4870 CLS
  389. 4880 '
  390. 4890 RETURN
  391. 4900 '
  392. 4910 '
  393. 4920 ' << opening >>
  394. 4930 *OPENING
  395. 4940 CLS
  396. 4950 SYMBOL (50,50),"Night",2,2,1,,,6
  397. 4960 SYMBOL (50,90),"Striker",2,2,2,,,6
  398. 4970 SYMBOL (50,130),"<< FREE WEAR SAMPL GAME >>",1,1,7,,,6
  399. 4980 FOR A=0 TO 20000 :NEXT
  400. 4990 RETURN
  401.