home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FreeWare Collection 3
/
FreeSoftwareCollection3pd199x-jp.img
/
kxc
/
basic386
/
ns
/
ns.bas
next >
Wrap
BASIC Source File
|
1980-01-02
|
11KB
|
401 lines
1000 '=============================================
1010 '= Night Striker ver 1.0 =
1020 '= copy free : programed by K.OKAMOTO =
1030 '=============================================
1040 CLEAR
1050 GOSUB *INIT
1060 ' << main >>
1070 *MAIN
1080 '自機移動
1090 I=PAD(1)
1100 XV=((I<9 AND I>5 AND X>16)-(I<5 AND I>1 AND X<207))*12
1110 YV=(((I=1 OR I=2 OR I=8) AND Y>16)-(I<7 AND I>3 AND Y<192))*12
1120 X=X+XV:Y=Y+YV
1130 TRG=PTRIG(1)
1140 IF TRG<>0 THEN GOSUB *GUN
1150 SPRITE 6,0,XV,YV
1160 '自弾移動
1170 FOR A=0 TO 2
1180 IF GUN_F(A)=0 THEN 1260
1190 GUN_Y(A)=GUN_Y(A)-24
1200 IF GUN_Y(A)<=0 THEN GUN_F(A)=0:SPRITE 0,A*2+4,0:GOTO 1260
1210 SPRITE 6,A*2+4,0,-24
1220 IF P=7 THEN 1260
1230 FOR B=0 TO 3
1240 IF GUN_Y(A)>EN_Y(B)-20 AND GUN_Y(A)<EN_Y(B)+20 THEN GOSUB *KILLD
1250 NEXT
1260 NEXT
1270 '
1280 ' << enemy >>
1290 GOSUB *ENEMY
1300 ' << tama >>
1310 GOSUB *TAMA
1320 ' << bos >>
1330 IF G_OVER=0 THEN *MAIN
1340 END
1350 ' << enemy >>
1360 *ENEMY
1370 IF EN_T<=0 THEN *ENE_INIT
1380 EN_T=EN_T-1
1390 '
1400 ON P GOSUB *P1,*P2,*P3,*P4,*P5,*P6,*P7,*P8
1410 '
1420 RETURN
1430 '
1440 *P1
1450 FOR A=0 TO 3
1460 IF EN_F(A)>0 AND EN_F(A)<20 THEN GOSUB *DETH:GOTO 1480
1470 SPRITE 6,20+A*4,0,6:EN_Y(A)=EN_Y(A)+6
1480 NEXT
1490 RETURN
1500 '
1510 *P2
1520 IF EN_T<40 THEN *P21
1530 FOR A=0 TO 3
1540 IF EN_F(A)>0 AND EN_F(A)<20 THEN GOSUB *DETH:GOTO 1560
1550 SPRITE 6,20+A*4,0,-3:EN_Y(A)=EN_Y(A)-3
1560 NEXT
1570 RETURN
1580 '
1590 *P21
1600 A=0
1610 IF EN_F(A)>0 THEN GOSUB *DETH:GOTO 1640
1620 SPRITE 6,20+A*4,1,-3
1630 EN_X(A)=EN_X(A)+1:EN_Y(A)=EN_Y(A)-3
1640 A=1
1650 IF EN_F(A)>0 THEN GOSUB *DETH:GOTO 1680
1660 SPRITE 6,20+A*4,1,-3
1670 EN_X(A)=EN_X(A)+1:EN_Y(A)=EN_Y(A)-3
1680 A=2
1690 IF EN_F(A)>0 THEN GOSUB *DETH:GOTO 1720
1700 SPRITE 6,20+A*4,-1,-3
1710 EN_X(A)=EN_X(A)-1:EN_Y(A)=EN_Y(A)-3
1720 A=3
1730 IF EN_F(A)>0 THEN GOSUB *DETH:GOTO 1760
1740 SPRITE 6,20+A*4,-1,-3
1750 EN_X(A)=EN_X(A)-1:EN_Y(A)=EN_Y(A)-3
1760 RETURN
1770 '
1780 *P3
1790 IF EN_T<25 THEN *P31
1800 A=0
1810 IF EN_F(A)>0 THEN GOSUB *DETH:GOTO 1840
1820 SPRITE 6,20+A*4,6,6
1830 EN_X(A)=EN_X(A)+6:EN_Y(A)=EN_Y(A)+6
1840 A=1
1850 IF EN_F(A)>0 THEN GOSUB *DETH:GOTO 1880
1860 SPRITE 6,20+A*4,6,6
1870 EN_X(A)=EN_X(A)+6:EN_Y(A)=EN_Y(A)+6
1880 A=2
1890 IF EN_F(A)>0 THEN GOSUB *DETH:GOTO 1920
1900 SPRITE 6,20+A*4,-6,6
1910 EN_X(A)=EN_X(A)-6:EN_Y(A)=EN_Y(A)+6
1920 A=3
1930 IF EN_F(A)>0 THEN GOSUB *DETH:GOTO 1960
1940 SPRITE 6,20+A*4,-6,6
1950 EN_X(A)=EN_X(A)-6:EN_Y(A)=EN_Y(A)+6
1960 RETURN
1970 *P31
1980 FOR A=0 TO 3
1990 IF EN_F(A)>0 AND EN_F(A)<20 THEN GOSUB *DETH:GOTO 2010
2000 SPRITE 6,20+A*4,0,8:EN_Y(A)=EN_Y(A)+8
2010 NEXT
2020 RETURN
2030 '
2040 *P4
2050 '
2060 FOR A=0 TO 3
2070 IF EN_F(A)>0 AND EN_F(A)<20 THEN GOSUB *DETH:GOTO 2110
2080 B=(EN_X(A)>X)-(EN_X(A)<X)
2090 SPRITE 6,20+A*4,8*B,6
2100 EN_X(A)=EN_X(A)+8*B:EN_Y(A)=EN_Y(A)+6
2110 NEXT
2120 RETURN
2130 '
2140 *P5
2150 '
2160 IF EN_T=<20 THEN *P51
2170 FOR A=0 TO 3
2180 IF EN_F(A)>0 AND EN_F(A)<20 THEN GOSUB *DETH:GOTO 2230
2190 B=(EN_X(A)>X)-(EN_X(A)<X)
2200 C=(EN_Y(A)>Y)-(EN_Y(A)<Y)
2210 SPRITE 6,20+A*4,2*B,2*C
2220 EN_X(A)=EN_X(A)+2*B:EN_Y(A)=EN_Y(A)+2*C
2230 NEXT
2240 RETURN
2250 '
2260 *P51
2270 FOR A=0 TO 3
2280 IF EN_F(A)>0 AND EN_F(A)<20 THEN GOSUB *DETH:GOTO 2320
2290 B=(240-EN_Y(A))*.2!
2300 EN_Y(A)=EN_Y(A)+B
2310 SPRITE 6,20+A*4,0,B
2320 NEXT
2330 RETURN
2340 '
2350 *P6
2360 IF (INT(EN_T/5) AND 1)=0 THEN *P61
2370 A=0
2380 IF EN_F(A)>0 THEN GOSUB *DETH:GOTO 2410
2390 SPRITE 6,20+A*4,20,6
2400 EN_X(A)=EN_X(A)+20:EN_Y(A)=EN_Y(A)+6
2410 A=1
2420 IF EN_F(A)>0 THEN GOSUB *DETH:GOTO 2450
2430 SPRITE 6,20+A*4,20,6
2440 EN_X(A)=EN_X(A)+20:EN_Y(A)=EN_Y(A)+6
2450 A=2
2460 IF EN_F(A)>0 THEN GOSUB *DETH:GOTO 2490
2470 SPRITE 6,20+A*4,-20,6
2480 EN_X(A)=EN_X(A)-20:EN_Y(A)=EN_Y(A)+6
2490 A=3
2500 IF EN_F(A)>0 THEN GOSUB *DETH:GOTO 2530
2510 SPRITE 6,20+A*4,-20,6
2520 EN_X(A)=EN_X(A)-20:EN_Y(A)=EN_Y(A)+6
2530 RETURN
2540 '
2550 *P61
2560 A=0
2570 IF EN_F(A)>0 THEN GOSUB *DETH:GOTO 2600
2580 SPRITE 6,20+A*4,-20,6
2590 EN_X(A)=EN_X(A)-20:EN_Y(A)=EN_Y(A)+6
2600 A=1
2610 IF EN_F(A)>0 THEN GOSUB *DETH:GOTO 2640
2620 SPRITE 6,20+A*4,-20,6
2630 EN_X(A)=EN_X(A)-20:EN_Y(A)=EN_Y(A)+6
2640 A=2
2650 IF EN_F(A)>0 THEN GOSUB *DETH:GOTO 2680
2660 SPRITE 6,20+A*4,20,6
2670 EN_X(A)=EN_X(A)+20:EN_Y(A)=EN_Y(A)+6
2680 A=3
2690 IF EN_F(A)>0 THEN GOSUB *DETH:GOTO 2720
2700 SPRITE 6,20+A*4,20,6
2710 EN_X(A)=EN_X(A)+20:EN_Y(A)=EN_Y(A)+6
2720 RETURN
2730 '
2740 *P7
2750 IF B_H<=0 THEN GOSUB *LDETH:GOTO 2860
2760 EN_T=EN_T+1
2770 FOR A=0 TO 2
2780 IF GUN_Y(A)>EN_Y(0) AND GUN_Y(A)<EN_Y(0)+40 THEN GOSUB *LKILLD
2790 NEXT
2800 B=(EN_X(0)>X)-(EN_X(0)<X)
2810 C=(EN_Y(0)>Y)-(EN_Y(0)<Y)
2820 SPRITE 6,20,B,C
2830 FOR A=0 TO 3
2840 EN_X(A)=EN_X(A)+B:EN_Y(A)=EN_Y(A)+C
2850 NEXT
2860 RETURN
2870 '
2880 *ENE_INIT
2890 'count=count+1:p=M(COUNT)
2900 P=P+1:IF P=8 THEN P=1
2910 '
2920 ON P GOSUB *I1,*I2,*I3,*I1,*I5,*I3,*I7,*I8
2930 '
2940 RETURN
2950 '
2960 *I1
2970 EN_T=40:EN_C=3:EN_ST=53:TA_L=30:TA_SP=12:TA_T=21
2980 FOR A=0 TO 3
2990 EN_F(A)=0
3000 EN_X(A)=INT(69*A):EN_Y(A)=0
3010 DEF SPRITE 1,A*4+20,(EN_X(A),EN_Y(A)),4*4,2,2
3020 SPRITE 0,A*4+20,1
3030 NEXT
3040 RETURN
3050 '
3060 *I2
3070 EN_T=80:EN_C=3:EN_ST=54:TA_L=10:TA_SP=6:TA_T=42
3080 EN_X(0)= 16:EN_Y(0)=240
3090 EN_X(1)= 56:EN_Y(1)=240
3100 EN_X(2)=167:EN_Y(2)=240
3110 EN_X(3)=207:EN_Y(3)=240
3120 FOR A=0 TO 3
3130 EN_F(A)=0
3140 DEF SPRITE 1,A*4+20,(EN_X(A),EN_Y(A)),12*4,2,2
3150 SPRITE 0,A*4+20,1
3160 NEXT
3170 RETURN
3180 '
3190 *I3
3200 EN_T=40:EN_C=3:EN_ST=52:TA_L=50:TA_SP=16:TA_T=16
3210 EN_X(0)= 16:EN_Y(0)=0
3220 EN_X(1)= 56:EN_Y(1)=0
3230 EN_X(2)=167:EN_Y(2)=0
3240 EN_X(3)=207:EN_Y(3)=0
3250 FOR A=0 TO 3
3260 EN_F(A)=0
3270 DEF SPRITE 1,A*4+20,(EN_X(A),EN_Y(A)),8*4,2,2
3280 SPRITE 0,A*4+20,1
3290 NEXT
3300 RETURN
3310 '
3320 *I5
3330 EN_T=60:EN_C=3:EN_ST=54:TA_L=20:TA_SP=6:TA_T=42
3340 EN_X(0)= 16:EN_Y(0)= 16
3350 EN_X(1)=207:EN_Y(1)= 16
3360 EN_X(2)= 16:EN_Y(2)=208
3370 EN_X(3)=207:EN_Y(3)=208
3380 FOR A=0 TO 3
3390 EN_F(A)=0
3400 DEF SPRITE 1,A*4+20,(EN_X(A),EN_Y(A)),12*4,2,2
3410 SPRITE 0,A*4+20,1
3420 NEXT
3430 RETURN
3440 '
3450 *I7
3460 EN_T=30:EN_C=0:EN_ST=54:TA_L=40:TA_SP=12:TA_T=21:B_H=40
3470 FOR A=0 TO 3
3480 EN_X(A)=96:EN_Y(A)=240
3490 EN_F(A)=0
3500 NEXT
3510 DEF SPRITE 1,20,(EN_X(0)-16,EN_Y(0)-16),16*4,4,3
3520 SPRITE 0,20,1
3530 RETURN
3540 '
3550 '
3560 *DETH
3570 IF EN_F(A)>=20 THEN RETURN
3580 EN_Y(A)=EN_Y(A)+6:EN_F(A)=EN_F(A)+1
3590 SPRITE 6,A*4+20,0,6
3600 IF EN_F(A)=5 THEN DEF SPRITE 1,A*4+20,(EN_X(A),EN_Y(A)),36*4,2,2
3610 IF EN_F(A)=10 THEN DEF SPRITE 1,A*4+20,(EN_X(A),EN_Y(A)),40*4,2,2
3620 IF EN_F(A)=15 THEN DEF SPRITE 1,A*4+20,(EN_X(A),EN_Y(A)),44*4,2,2
3630 IF EN_F(A)=20 THEN SPRITE 0,A*4+20,0:RETURN
3640 SPRITE 0,A*4+20,1 '爆発
3650 RETURN
3660 '
3670 *LDETH
3680 FOR A=0 TO 3
3690 GOSUB *DETH
3700 NEXT
3710 RETURN
3720 '
3730 ' << gun >> 弾はキャラクタ-4より2*1が3つ
3740 *GUN
3750 A=0
3760 WHILE A<=2
3770 IF GUN_F(A)<>0 THEN 3800
3780 DEF SPRITE 1,A*2+4,(X,Y),48*4,2,1:SPRITE 0,A*2+4,1:'自機弾
3790 GUN_X(A)=X:GUN_Y(A)=Y:GUN_F(A)=1:A=2
3800 A=A+1
3810 WEND
3820 RETURN
3830 '
3840 *KILLD
3850 IF GUN_X(A)<=EN_X(B)-25 OR GUN_X(A)>=EN_X(B)+25 THEN RETURN
3860 IF EN_F(B)<>0 THEN RETURN
3870 IF GUN_F(A)<>1 THEN RETURN
3880 EN_F(B)=1
3890 DEF SPRITE 1,B*4+20,(EN_X(B),EN_Y(B)),32*4,2,2
3900 SPRITE 0,B*4+20,1 '爆発
3910 SPRITE 0,A*2+4,0:GUN_F(A)=0 '弾は消える
3920 RETURN
3930 '
3940 *LKILLD
3950 IF GUN_X(A)<=EN_X(0)-40 OR GUN_X(A)>=EN_X(0)+40 THEN RETURN
3960 IF GUN_F(A)<>1 THEN RETURN
3970 IF GUN_Y(A)<EN_Y(0)+20 THEN 4010
3980 DEF SPRITE 1,A*4+4,(GUN_X(A),GUN_Y(A)),50*4,2,1
3990 SPRITE 0,A*2+4,1
4000 RETURN
4010 SPRITE 0,A*2+4,0:GUN_F(A)=0 '弾は消える
4020 B_H=B_H-1
4030 IF B_H>0 THEN RETURN
4040 SPRITE 0,20,0
4050 FOR A=0 TO 3
4060 DEF SPRITE 1,A*4+20,(EN_X(A),EN_Y(A)),32*4,2,2
4070 B=RND(1)*32-16:C=RND(1)*32-16:EN_F(A)=1
4080 SPRITE 0,A*4+20,1 '爆発
4090 SPRITE 6,A*4+20,B,C
4100 EN_X(A)=EN_X(A)+B:EN_Y(A)=EN_Y(A)+C
4110 ' IF EN_X(A)<0 THEN EN_X(A)=0
4120 ' IF EN_Y(A)<0 THEN EN_Y(A)=0
4130 NEXT
4140 RETURN
4150 '
4160 *TAMA
4170 IF RND(1)*100<TA_L THEN GOSUB *SHOT
4180 FOR A=0 TO 7
4190 IF TA_F(A)<=0 THEN 4260
4200 TA_X(A)=TA_X(A)+TA_XV(A)
4210 TA_Y(A)=TA_Y(A)+TA_YV(A)
4220 TA_F(A)=TA_F(A)-1
4230 IF TA_F(A)<=0 THEN SPRITE 0,A+12,0:GOTO 4260
4240 SPRITE 6,A+12,TA_XV(A),TA_YV(A)
4250 IF TA_X(A)>X-10 AND TA_X(A)<X+10 THEN GOSUB *TAMA1
4260 NEXT
4270 RETURN
4280 '
4290 *TAMA1
4300 IF TA_Y(A)<=Y-10 OR TA_Y(A)>=Y+10 THEN RETURN
4310 DEF SPRITE 1,0,(X,Y),32*4,2,2
4320 SPRITE 0,0,1
4330 G_OVER=1
4340 FOR A=0 TO 15000:NEXT
4350 RETURN
4360 '
4370 *SHOT
4380 B=INT(RND*4)
4390 IF EN_F(B)<>0 THEN RETURN
4400 A=0
4410 WHILE A<=7
4420 IF TA_F(A)<>0 THEN 4510
4430 DEF SPRITE 1,A+12,(EN_X(B)+8,EN_Y(B)+8),EN_ST*4,1,1
4440 SPRITE 0,A+12,1:'敵機弾
4450 XX!=X-EN_X(B):YY!=Y-EN_Y(B)
4460 XX!=XX!+(XX!=0):YY!=YY!+(YY!=0) '0除算防止
4470 LL!=SQR(XX!^2+YY!^2)/TA_SP
4480 TA_XV(A)=XX!/LL!:TA_YV(A)=YY!/LL!
4490 IF EN_ST=52 THEN TA_XV(A)=0:TA_YV(A)=16
4500 TA_X(A)=EN_X(B):TA_Y(A)=EN_Y(B):TA_F(A)=TA_T:A=7
4510 A=A+1
4520 WEND
4530 RETURN
4540 ' << init >>
4550 '
4560 *INIT
4570 CLS
4580 COLOR 7,0,0
4590 DEFINT A-W
4600 DIM SPR(255),GUN_X(3),GUN_Y(3),GUN_F(3)
4610 '<< def sprite >>
4620 PRINT "パタ-ンは定義済ですか"
4630 INPUT "(Y/N) ",A$
4640 SCREEN @1
4650 GOSUB *OPENING
4660 IF A$="Y" OR A$="y" THEN 4820
4670 SYMBOL (50,140),"だいぶお待ち下さい",1,1,3,,,6
4680 OPEN "I",#1,"NS.PTN"
4690 DEF SPRITE 99,0
4700 FOR A=0 TO 63
4710 FOR B=0 TO 15
4720 INPUT #1,A$
4730 FOR C=0 TO 15
4740 D=VAL("&H"+MID$(A$,C*4+1,4))
4750 IF D=0 THEN D=-32768
4760 SPR(B*16+C)=D
4770 NEXT
4780 NEXT
4790 DEF SPRITE 0,A*4,SPR,1
4800 NEXT
4810 CLOSE
4820 SPRITE ON
4830 SPRITE SCREEN (32,0)
4840 DEF SPRITE 1,0,(111,120),0,2,2:SPRITE 0,0,1:'自機
4850 X=111:Y=120
4860 FOR A=0 TO 20000 :NEXT
4870 CLS
4880 '
4890 RETURN
4900 '
4910 '
4920 ' << opening >>
4930 *OPENING
4940 CLS
4950 SYMBOL (50,50),"Night",2,2,1,,,6
4960 SYMBOL (50,90),"Striker",2,2,2,,,6
4970 SYMBOL (50,130),"<< FREE WEAR SAMPL GAME >>",1,1,7,,,6
4980 FOR A=0 TO 20000 :NEXT
4990 RETURN