10 RANDOMIZE 20 RESTORE 6270 : GOSUB 6270 : RESTORE 30 ; CHR$(12)"\NSKAS INSTRUKTIONER (J/N)"; : GET \$ : IF \$="J" THEN GOSUB 6480 40 REM 50 REM 60 REM ***PROGRAM FOLLOWS*** 70 REM *** *** 80 DIM A(30,30),B(9) 90 ; CHR$(12);"VAD HETER DU ?" : ; 100 INPUTLINE N$ : N$=LEFT$(N$,LEN(N$)-2) 110 ; CHR$(12) 120 REM **SET UP AREA** 130 FOR I=1 TO 20 140 FOR J=1 TO 20 150 A(I,J)=0 160 NEXT J 170 NEXT I 180 REM **ISLAND** 190 RESTORE 6240 200 FOR X=7 TO 13 210 FOR Y=7 TO 12 220 READ A(X,Y) 230 NEXT Y 240 NEXT X 250 REM **SUB** 260 S1=10 : S2=10 270 A(S1,S2)=2 280 REM ***ENEMY SHIPS*** 290 S=INT(RND*16)+15 300 RESTORE 6060 310 FOR X=1 TO (INT(RND*4)+1)*2-1 320 READ D8,D9 330 NEXT X 340 FOR X=1 TO S 350 X1=INT(RND*20)+1 360 X2=INT(RND*20)+1 370 IF A(X1,X2)<>0 THEN 350 380 A(X1,X2)=3 390 NEXT X 400 ; "DU M]STE S[NKA ";S;" FIENDE SKEPP F\R" : ; "ATT VINNA ";N$;"." 410 REM ***HEADQUARTERS** 420 S3=INT(RND*20)+1 430 S4=INT(RND*20)+1 440 IF A(S3,S4)<>0 THEN 420 450 A(S3,S4)=4 460 REM **UNDERWATER MINES** 470 FOR X=1 TO INT(RND*8)+8 480 X1=INT(RND*20)+1 490 X2=INT(RND*20)+1 500 IF A(X1,X2)<>0 THEN 480 510 A(X1,X2)=5 520 NEXT X 530 REM ***SEA MONSTERS*** 540 FOR X=1 TO 4 550 X1=INT(RND*18)+2 560 X2=INT(RND*18)+2 570 IF A(X1,X2)<>0 THEN 550 580 A(X1,X2)=6 590 RESTORE 6060 600 FOR Y=1 TO INT(RND*8)+1 610 READ M1,M2 620 NEXT Y 630 NEXT X 640 REM **SET STARTING VALUES** 650 FOR I=1 TO 9 660 D(I)=0 670 NEXT I 680 C=30 690 P=6000 700 F=2500 710 T=10 720 M=3 730 D=100 740 D2=2 750 REM **COMAND SECTION** 760 ; : ; : ; "VAD [R DINA ORDER ";N$"?"; 770 ONERRORGOTO 770 780 GET \$ : IF \$="I" THEN GOSUB 6480 790 IF ASC(\$)<48 OR ASC(\$)>57 THEN 820 800 O=VAL(\$) : ; O 810 ON INT(O+1) GOTO 950,1600,2160,2620,3200,3360,3640,3820,4340,4590 820 ; CHR$(12%);"KOMMANDONA [R:" 830 ; " #0: F\RFLYTTNING" 840 ; " #1: RADAR" 850 ; " #2: TORPED AVFYRING" 860 ; " #3: POLARIS ROBOT AVFYRING" 870 ; " #4: DJUP[NDRING" 880 ; " #5: L[GES/SKADE RAPORT" 890 ; " #6: DOCKNING" 900 ; " #7: SABOTAGE" 910 ; " #8: ENERGI OMVANDLING" 920 ; " #9: GE UPP!!" 930 ; " 'I' INSTRUKTIONER" 940 GOTO 750 950 REM #0 : NAVIGATION 960 IF D(1)>=0 THEN 990 970 ; "MOTORERNA [R UNDER REPARATION ";N$;"." 980 GOTO 750 990 IF C>8 THEN 1020 1000 ; "DU HAR F\R LITE FOLK F\R ATT ANV[NDA MOTORERNA "N$"." 1010 GOTO 750 1020 D1=1-((.23+RND/10)*(-(D<=50))) 1030 GOSUB 6050 1040 ; "TILLG[NGLIG ENERGI=";P;"." : ; "HUR MYCKET ENERGI VILL DU ANV[NDA "N$"." 1050 ONERRORGOTO 1050 1060 INPUT P1 1070 IF P1<0 OR P1>P THEN 1040 1080 IF P1<=1000 THEN 1130 1090 IF RND(1)<.43 THEN 1130 1100 ; "REAKTORN SPR[NGS";N$;" !!! H\GKVARTERET" 1110 ; "VARNAR ALLA UB]TAR F\R DET RADIOAKTIVA OMR]DET !!!" 1120 GOTO 6140 1130 X=S1 1140 Y=S2 1150 Q1=1 1160 FOR X2=1 TO INT(INT(P1/100+.5)*D1+.5) 1170 IF X+X1>0 AND X+X1<21 AND Y+Y1<21 THEN 1200 1180 ; "DU KAN INTE L[MNA SPELPLANEN ";N$;"!!" 1190 GOTO 1260 1200 ON A(X+X1,Y+Y1)+1 GOTO 1210,1250,1550,1310,1360,1390,1410 1210 X=X+X1 1220 Y=Y+Y1 1230 P=P-100 1240 GOTO 1440 1250 ; "DU GICK N[STAN P] GRUND ";N$;"!" 1260 A(X,Y)=2 1270 A(S1,S2)=0 1280 S1=X 1290 S2=Y 1300 GOTO 4620 1310 IF D>50 THEN 1210 1320 ; "DU RAMMADE ETT SKEPP!! NI SJUNKER B]DA." 1330 S=S-1 1340 IF S=0 THEN 6200 1350 GOTO 6140 1360 IF D>50 THEN 1210 1370 ; "DU RAMMADE DITT H\GKVARTER NI SJUNKER B]DA TV] !!" 1380 GOTO 6140 1390 ; "DU HAR SPR[NGTS I SM]BITAR AV EN MINA" 1400 GOTO 6140 1410 IF RND(1)<.21 THEN 1550 1420 REM 1430 GOTO 6140 1440 REM **CHECK FOR NEARBY SEAMONSTERS 1450 FOR X3=X-2 TO X+2 1460 FOR Y3=X-2 TO X+2 1470 IF X3<1 OR X3>20 OR Y3<1 OR Y3>20 THEN 1530 1480 IF A(X,Y)<>6 THEN 1530 1490 IF RND(1)<.25 THEN 1520 1500 IF Q1=0 THEN 1530 1510 ; "DU HADE JUST ETT OTREVLIGT M\TE MED ETT SJ\ODJUR ";N$"." 1520 Q1=0 1530 NEXT Y3 1540 NEXT X3 1550 NEXT X2 1560 ; "F\RFLYTTNINGEN GENOMF\RD. KVARVARANDE ENERGI=";P;"." 1570 IF P>0 THEN 1260 1580 ; "ATOM REAKTORN HAR STANNAT! UB]TEN SJUNKER ,BES[TTNINGEN OMKOMMER." 1590 GOTO 6140 1600 REM ***N1 : SONAR*** 1610 IF D(2)>=0 THEN 1640 1620 ; "RADAREN [R UNDER REPARATION ";N$;"." 1630 GOTO 750 1640 IF C>5 THEN 1670 1650 ; "DU HAR F\R LITEN BES[TTNING F\R ATT KUNNA ANV[NDA RADAREN ";N$;"." 1660 GOTO 750 1670 ; "0=BILD 1=SKJUTRIKTNINGAR"; 1680 GET \$ : IF \$<>"0" AND \$<>"1" THEN 1680 ELSE O=VAL(\$) : ; O 1690 ON INT(O+1) GOTO 1710,1930 1700 GOTO 1670 1710 REM ***PRINT MAP *** 1720 PRINT CHR$(12) 1730 FOR X=1 TO 20 1740 FOR Y=1 TO 20 1750 DATA " ","**","X ","S ","H ","$ ","# " 1760 IF A(X,Y)<>0 THEN 1800 1770 IF X<>1 AND X<>20 AND Y<>1 AND Y<>20 THEN 1800 1780 PRINT ". "; 1790 GOTO 1870 1800 RESTORE 1750 1810 FOR X1=1 TO A(X,Y)+1 1820 READ A$ 1830 NEXT X1 1840 IF D<50 AND RND<.23 AND A(X,Y)<>1 AND A(X,Y)<>2 THEN 1780 1850 IF RND<.15 AND A(X,Y)>2 THEN 1780 1860 PRINT A$; 1870 NEXT Y 1880 REM 1890 NEXT X 1900 P=P-50 1910 IF P>0 THEN 750 1920 GOTO 1580 1930 REM ***DIRECTIONAL INFORMATION*** 1940 FOR I=1 TO 5 1950 B(I)=0 1960 NEXT I 1970 PRINT "RIKTNING ANTAL SKEPP AVST]ND" 1980 RESTORE 6060 1990 FOR X=1 TO 8 2000 READ X1,Y1 2010 X3=0 2020 FOR X4=1 TO 20 2030 IF S1+X1*X4<1 OR S1+X1*X4>20 OR S2+Y1*X4<1 OR S2+Y1*X4>20 THEN 2080 2040 IF A(S1+X1*X4,S2+Y1*X4)<>3 THEN 2070 2050 X3=X3+1 2060 B(X3)=X4 2070 NEXT X4 2080 IF X3=0 THEN 2140 2090 PRINT " ";X,X3, 2100 FOR X4=1 TO X3 2110 PRINT B(X4); 2120 NEXT X4 2130 PRINT 2140 NEXT X 2150 GOTO 1900 2160 REM *** #2 : TORPEDO CONTROL*** 2170 IF D(3)>=0 THEN 2200 2180 PRINT "TORPED TUBERNA [R UNDER REPARATION." 2190 GOTO 750 2200 IF C>=10 THEN 2230 2210 PRINT "DU HAR F\R F] BES[TTNINGSM[N F\R ATT KUNNA AVFYRA TORPEDER "N$"." 2220 GOTO 750 2230 IF T>0 THEN 2260 2240 PRINT "TORPEDERNA [R SLUT "N$"." 2250 GOTO 750 2260 IF B<2000 THEN 2300 2270 IF RND>.5 THEN 2300 2280 PRINT "TRYCKET VID AVFYRINGEN F]R UB]TEN ATT IMPLODERA.....DU KROSSAS!!" 2290 GOTO 6140 2300 GOSUB 6050 2310 X=S1 2320 Y=S2 2330 FOR X2=1 TO INT(7+5*(-(D>50))-RND*4+.5) 2340 IF X+X1>0 AND X+X1<21 AND Y+Y1>0 AND Y+Y1<21 THEN 2400 2350 PRINT : ; "TORPEDEN UT UR RADARNS T[CKNINGSOMR]DE HELT OFARLIG." 2360 OUT 6,137 : T=T-1 2370 P=P-150 2380 IF P>0 THEN 4620 2390 GOTO 1580 2400 ON A(X+X1,Y+Y1)+1 GOTO 2410,2450,2590,2480,2520,2550,2570 2410 X=X+X1 2420 Y=Y+Y1 2430 PRINT ".!."; 2440 GOTO 2590 2450 PRINT : ; "DU SPR[NGDE BORT EN BIT LAND" 2460 OUT 6,137 : A(X+X1,Y+Y1)=0 2470 GOTO 2360 2480 PRINT : ; "OUSH !!! DU FICK EN." 2490 S=S-1 2500 IF S<>0 THEN 2460 2510 GOTO 6200 2520 PRINT : ; " DU SPR[NGDE DITT H\GKVARTER" 2530 S3=0 : S4=0 : D2=0 2540 GOTO 2460 2550 PRINT : ; "BLAM !! TORPEDEN SPR[NGDE %N MINA." 2560 GOTO 2460 2570 PRINT : ; "ETT SJ\ODJUR FICK EN TORPED TILL LUNCH." 2580 GOTO 2360 2590 NEXT X2 2600 PRINT "DUD" 2610 GOTO 2360 2620 REM ***#3 : POLARIS MISSILE CONTROL* 2630 IF D(4)>=0 THEN 2660 2640 PRINT "RAKET SILONA [R UNDER REPARATION." 2650 GOTO 750 2660 IF C>23 THEN 2690 2670 PRINT "DU HAR F\R LITE FOLK F\R ATT AVFYRA EN RAKET "N$"." 2680 GOTO 750 2690 IF M<>0 THEN 2720 2700 PRINT "RAKETERNA [R SLUT." 2710 GOTO 750 2720 IF D>50 AND D<2000 THEN 2790 2730 PRINT "JAG REKOMENDERAR DIG ATT INTE AVFYRA RAKETER P] DETT H[R DJUPET..............ENVISAS DU" 2740 INPUT A$ 2750 IF LEFT$(A$,1)="N" THEN 750 2760 IF RND<.5 THEN 2790 2770 PRINT "RAKETEN EXPLODERADE UNDER AVFYRINGEN DU [R D\D !!!" 2780 GOTO 6140 2790 GOSUB 6050 2800 PRINT "BR[NSLE (l.)"; 2810 INPUT F1 2820 IF F1>0 AND F1<=F THEN 2850 2830 PRINT "DU HAR";F;"l. KVAR" 2840 GOTO 2800 2850 F2=INT(F1/75+.5) 2860 IF S1+X1*F2>0 AND S1+X1*F2<21 AND S2+Y1*F2>0 AND S2+Y1*F2>1 THEN 2920 2870 PRINT "RAKETEN GICK UTANF\R RADARENS T[CKNINGS-OMR]DE. RAKETEN [R F\RLORAD!" 2880 M=M-1 2890 F=F-F1 2900 P=P-300 2910 GOTO 2380 2920 D3=0 : D4=0 : D5=0 : D6=0 2930 FOR X=S1+X1*F2-1 TO S1+X1*F2+1 2940 FOR Y=S2+Y1*F2-1 TO S2+Y1*F2+1 2950 IF X<1 OR X>20 OR Y<1 OR Y>20 THEN 3080 2960 D3=D3-(A(X,Y)=3) 2970 D4=D4-(A(X,Y)=6) 2980 D5=D5-(A(X,Y)=5) 2990 D6=D6-(A(X,Y)=1) 3000 IF A(X,Y)<>4 THEN 3040 3010 PRINT "DU F\RST\RDE DITT H\GKVARTER!!!!" 3020 D3=0 : S4=0 : D2=0 3030 GOTO 3070 3040 IF A(X,Y)<>2 THEN 3070 3050 PRINT "DU SPR[NGDE JUST DIG SJ[LV I LUFTEN !! IDIOT !!!" 3060 GOTO 6140 3070 A(X,Y)=0 : OUT 6,137 3080 NEXT Y 3090 NEXT X 3100 IF D6=0 THEN 3120 3110 PRINT "DU SPR[NGDE BORT EN BIT LAND" 3120 IF D5=0 THEN 3140 3130 PRINT "DU SPR[NGDE ";D5;" MINOR" 3140 IF D4=0 THEN 3160 3150 PRINT "DU FICK ";D4;" SJ\ODJUR FINT ARBETAT." 3160 PRINT "DU F\RST\RDE ";D3;" FIENDE SKEPP." 3170 S=S-D3 3180 IF S=0 THEN 6200 3190 GOTO 2880 3200 REM ** MANUVERING ** 3210 IF D(5)>0 THEN 3240 3220 PRINT "BALLAST KONTROLLERNA [R UNDER REPARATION" 3230 GOTO 750 3240 IF C>12 THEN 3270 3250 PRINT "DU HAR F\R F] BES[TTNINGSM[N F\R ATT SK\TA KONTROLLERNA "N$"." 3260 GOTO 750 3270 PRINT "NYTT DJUP" 3280 INPUT D1 3290 IF D1>=0 AND D1<3000 THEN 3320 3300 PRINT "SKROVET KROSSAT AV TRYCKET" 3310 GOTO 6140 3320 P=P-INT(ABS((D-D1)/2+.5)) 3330 PRINT "DJUP[NDRINGEN KLAR. ENERGI]TG]NG=";INT(ABS((D-D1)/2+.5)) 3340 D=D1 3350 GOTO 4620 3360 REM *** #5 : STATUS/DAMAGE REPORT ** 3370 IF D(6)>=0 THEN 3400 3380 PRINT "RAPORT DATORN [R TRASIG" 3390 GOTO 750 3400 IF C>3 THEN 3430 3410 PRINT "IGEN KVAR SOM KAN L[MNA RAPORTEN." 3420 GOTO 750 3430 PRINT "ANTAL FIENDE SKEPP.....";S 3440 PRINT "KVARVARANDE ATOMENERGI.";P 3450 PRINT "ANTAL TORPEDER ........";T 3460 PRINT "ANTAL RAKETER..........";M 3470 PRINT "ANTAL BES[TTNINGSM[N...";C 3480 PRINT "ANTAL l. RAKETBR[NSLE..";F 3490 PRINT 3500 PRINT "VILL DU HA SKADERAPORT ?"; 3510 GET A$ : ; A$ : IF A$="N" THEN 3610 ELSE IF A$="Y" OR A$="J" THEN 3520 ELSE 3510 3520 PRINT "DETALJ SKADA (+ BRA, 0 NEUTRAL, - D]LIG)" 3530 REM 3540 DATA "MOTORER","RADAR","TORPEDER","RAKETER","BALLAST KONTR" 3550 DATA "RAPORTER","DOCKNINGS UTR","SABOTAGE","KONVERTER" 3560 RESTORE 3540 3570 FOR X=1 TO 9 3580 READ A$ 3590 PRINT A$,D(X) 3600 NEXT X 3610 PRINT "DU BEFINNER DIG I RUTA (";S1;",";S2;")." 3620 PRINT 3630 GOTO 750 3640 REM ***M #6 : HEADQUARTERS *** 3650 IF D(7)>=0 THEN 3680 3660 PRINT "H\GKVARTERET [R SKADAT OCH KAN EJ HJ[LPA DIG." 3670 GOTO 750 3680 IF D2<>0 THEN 3710 3690 PRINT "H\GKVARTERET HAR DESERTERAT ";N$;"." 3700 GOTO 750 3710 IF SQR((S1-S3)*(S1-S3)+(S2-S4)*(S2-S4))<=2 AND D<51 THEN 3740 3720 PRINT "JAG KAN EJ UTF\RA DINA DOCKNINGSORDER" 3730 GOTO 750 3740 PRINT "DYKARE FR]N H\GKVARTERET F\RSER DIG MED MATRIELL OCH BES[TTNINGS M[N." 3750 P=4000 3760 T=8 3770 M=2 3780 F=1500 3790 C=25 3800 D2=D2-1 3810 GOTO 4620 3820 REM *** #7 : SABOTAGE *** 3830 IF D(8)>=0 THEN 3860 3840 PRINT "DYKARSLUSSARNA TRASIGA. SABOTAGE KAN EJ GENOMF\RAS." 3850 GOTO 750 3860 IF C>10 THEN 3890 3870 PRINT "F\R LITE FOLK F\R ATT GENOF\RA ETT SABOTAGE "N$"." 3880 GOTO 750 3890 D3=0 : D4=0 3900 FOR X=S1-2 TO S1+2 3910 FOR Y=S2-2 TO S2+2 3920 IF X<1 OR X>20 OR Y<1 OR Y>20 THEN 3950 3930 D3=D3-(A(X,Y)=3) 3940 D4=D4-(A(X,Y)=6) 3950 NEXT Y 3960 NEXT X 3970 IF D3<>0 THEN 4000 3980 PRINT "D[R FINNS INGA SKEPP SOM [R TILLR[CKLIGTN[RA ";N$;"." 3990 GOTO 750 4000 PRINT "D[R [R ";D3;" SKEPP SOM [R TILLR[CKLIGT N[RA "N$"." 4010 PRINT "HUR M]NGA M[N SKALL MED P] UPPDRAGET"; 4020 INPUT Q1 4030 IF C-Q1>=10 THEN 4060 4040 PRINT "DU M]STE L[MNA MINST 10 M[N OMBORD." 4050 GOTO 4010 4060 D5=INT(D3/Q1+.5) 4070 D6=0 4080 FOR X=S1-2 TO S1+2 4090 FOR Y=S2-2 TO S2+2 4100 IF D3/Q1>1-RND AND RND+D3/Q1<.9 THEN 4160 4110 IF A(X,Y)<>3 THEN 4160 4120 D6=D6+1 4130 A(X,Y)=0 4140 S=S-1 4150 IF S=0 THEN 6200 4160 NEXT Y 4170 NEXT X 4180 PRINT D6;" FIENDESKEPP F\RST\RDES." 4190 D6=0 : D7=0 4200 FOR X=1 TO Q1 4210 D7=D7-(RND>.6) 4220 NEXT X 4230 FOR X=1 TO Q1-D7 4240 D6=D6-(RND<.15) 4250 NEXT X 4260 IF D4=0 THEN 4300 4270 PRINT "ETT SJ\ODJUR FICK SYN P] M[NNEN N[R DOM VAR P] V[G TILLBAKA!" 4280 PRINT D7;" M[N BLEV UPP[TNA ";N$;"." 4290 C=C-D7 4300 PRINT D6;" M[N DOG GENOM OLYCKSH[NDELSER." 4310 C=C-D6 4320 P=P-INT(10*Q1+RND*10) 4330 GOTO 4620 4340 REM ***#8 : POWER CONVERTER *** 4350 IF D(9)>=0 THEN 4380 4360 PRINT "OMVANDLAREN AR SKADAD." 4370 GOTO 750 4380 IF C>5 THEN 4410 4390 PRINT "DU HAR F\R LITE FOLK F\R ATT ANV[NDA KONVERTERN "N$"." 4400 GOTO 750 4410 PRINT "V[LJ (1=BR[NSLE TILL ENERGI,2=ENERGI TILL BR[NSLE)" 4420 GET \$ : IF \$<>"1" AND \$<>"2" THEN 4420 ELSE O=VAL(\$) 4430 ON O GOTO 4440,4510 4440 REM *** FUEL TO POWER *** 4450 PRINT "TILLG[NGLIGT BR[NSLE=";F;". OMVANDLA"; 4460 INPUT C1 4470 IF C1>F OR C1<0 THEN 4450 4480 F=F-C1 4490 P=P+INT(C1/3) 4500 GOTO 4570 4510 REM *** POWER TO FUEL *** 4520 PRINT "TILLG[NGLIG ENERGI=";P-1;". CONVERT"; 4530 INPUT C1 4540 IF C1>P-1 OR C1<0 THEN 4520 4550 P=P-C1 4560 F=F+INT(C1*3) 4570 PRINT "OMVANDLINGEN KLAR. ENERGI=";P;" BR[NSLE=";F 4580 GOTO 4620 4590 REM ***#9 : SURRENDER *** 4600 PRINT "FEGIS !! DU [R INTE S]V[RST PLIKTROGEN." 4610 GOTO 6140 4620 REM *** RETALIATION SECTION *** 4630 Q=0 4640 FOR X=S1-4 TO S1+4 4650 FOR Y=S2-4 TO S2+4 4660 IF X<1 OR X>20 OR Y<1 OR Y>20 THEN 4690 4670 IF A(X,Y)<>3 THEN 4690 4680 Q=Q+(RND/SQR((S1-X)*(S1-X)+(S2-Y)*(S2-Y))) 4690 NEXT Y 4700 NEXT X 4710 IF Q<>0 THEN 4740 4720 PRINT "INGA SKEPP I N[RHETEN SOM KAN F[LLA SJUNKBOMBER P] DIG." 4730 GOTO 5170 4740 PRINT "SJUNKBOMBER "; 4750 IF RND>.5 THEN 4780 4760 PRINT "TILL H\GER OM DIG" 4770 GOTO 4790 4780 PRINT "TILL V[NSTER OM DIG" 4790 IF Q>.13 OR RND>.92 THEN 4820 4800 PRINT "DET UPPSTOD INGA EGENTLIGA SKADO." 4810 GOTO 5170 4820 IF Q>.36 OR RND>.96 THEN 4870 4830 PRINT "DU [R L[TT SKADAD." 4840 P=P-50 4850 D(INT(RND*9)+1)=RND*2 4860 GOTO 5170 4870 IF Q>.6 OR RND>.975 THEN 4950 4880 PRINT "MODERATA SKADOR. REPARATIONER BEH\VS." 4890 P=P-75+INT(RND*30) 4900 FOR Y=1 TO 2 4910 X=INT(RND*9)+1 4920 D(X)=D(X)-RND*8 4930 NEXT Y 4940 GOTO 5170 4950 IF Q>.9 OR RND>.983 THEN 5030 4960 PRINT "SV]RA SKADOR !! M]STE REPARERAS OMEDELBART." 4970 P=P-(200+INT(RND*76)) 4980 FOR X=1 TO 4+INT(RND*2) 4990 Y=INT(RND*9)+1 5000 D(Y)=D(Y)-RND*11 5010 NEXT X 5020 GOTO 5170 5030 PRINT "MYCKET SV]RA SKADOR. L[GET [R KRITISKT. VI BEH\VER HJ[LP!!" 5040 A$="VRAVUKXCNVPCRHFDRSAXQURLQTRHXYACVFZYITLCBSSYYKDQIPCAEGQGPCNOTSIO" 5050 X=INT(RND*16)+1 5060 PRINT "S[ND EFTER HJ[LP I KODE. H[R [R KODEN: " : ; MID$(A$,X,4);CHR$(13); 5070 REM TIME DELAY AND THEN ERASE THE CODE 5080 OUT 6,255 : FOR I=1 TO 2000 : NEXT I : OUT 6,0 5090 ; SPACE$(10) 5100 PRINT "MATA IN KODEN"; : INPUT B$ 5110 PRINT 5120 IF B$<>MID$(A$,X,4) THEN 5150 5130 PRINT "SNABBT ARBETAT. HJ[LPEN ANL[NDER I TID." 5140 GOTO 4970 5150 PRINT "FELAKTIGT MEDELANDE INGEN HJ[LP KOMMER." 5160 GOTO 6140 5170 REM *** MOVE SHIPS/SEAMONSTERS *** 5180 IF D(1)>=0 OR D(3)>=0 OR D(4)>=0 OR D(5)>=0 OR D(7)>=0 THEN 5220 5190 IF D(8)>=0 OR D(9)>=0 THEN 5220 5200 PRINT "DU [R F\R SV]RT SKADAD DU SJUNKER!!:" 5210 GOTO 6140 5220 REM *** MOVE SHIPS/SEAMONSTERS *** 5230 PRINT : PRINT : PRINT "*** RESULTAT AV DENNA OMG]NG ***" 5240 FOR X=1 TO 20 5250 FOR Y=1 TO 20 5260 IF A(X,Y)<>3 THEN 5650 5270 REM *** MOVE A SHIP *** 5280 W=D8 5290 V=D9 5300 IF X+W>0 AND X+W<21 AND Y+V>0 AND Y+V<21 THEN 5380 5310 FOR X0=19 TO 1 STEP -1 5320 IF A(X-W*X0,Y-V*X0)<>0 THEN 5360 5330 A(X-W*X0,Y-V*X0)=3 5340 A(X,Y)=0 5350 GOTO 5970 5360 NEXT X0 5370 STOP 5380 ON A(X+W,Y+V)+1 GOTO 5390,5420,5490,5420,5520,5560,5610 5390 A(X+W,Y+V)=3 5400 A(X,Y)=0 5410 GOTO 5970 5420 REM *** CHANGE DIRECTION *** 5430 RESTORE 6060 5440 FOR X0=1 TO INT(RND*8)+1 5450 READ W,V 5460 NEXT X0 5470 IF X+W<1 OR X+W>20 OR Y+V<1 OR Y+V>20 THEN 5430 5480 GOTO 5380 5490 IF D>50 THEN 5420 5500 PRINT "DU HAR BLIVIT RAMMAD AV ETT SKEPP!!" 5510 GOTO 6140 5520 IF RND<.15 THEN 5420 5530 PRINT "DITT H\GKVARTER BLEV RAMMAT!!" 5540 S3=0 : S4=0 : D2=0 : A(X+W,Y+V)=0 5550 GOTO 5580 5560 IF RND<.7 THEN 5420 5570 PRINT "FIENDE SKEPP F\RST\RT AV EN MINA." 5580 S=S-1 5590 IF S<>0 THEN 5400 5600 GOTO 6200 5610 IF RND<.8 THEN 5420 5620 PRINT "FIENDESKEPP UPP[TET AV SJ\ODJUR." 5630 S=S-1 5640 GOTO 5590 5650 REM *** MOVE A SEAMONSTER *** 5660 IF A(X,Y)<>6 THEN 5970 5670 IF X+M1<1 OR X+M1>20 OR Y+M2<1 OR Y+M2>20 THEN 5730 5680 IF A(X+M1,Y+M2)+1>7 THEN 5700 5690 ON A(X+M1,Y+M2)+1 GOTO 5700,5730,5800,5820,5870,5700,5900 5700 A(X+M1,Y+M2)=6 5710 A(X,Y)=0 5720 GOTO 5970 5730 REM *** CHANGE DIRECTION *** 5740 RESTORE 6060 5750 FOR X0=1 TO INT(RND*8)+1 5760 READ M1,M2 5770 NEXT X0 5780 IF X+M1<1 OR X+M2>20 OR Y+M2<1 OR Y+M2>20 THEN 5730 5790 GOTO 5690 5800 PRINT "DU HAR BLIVIT UPP[TEN AV ETT SJ\ODJUR" 5810 GOTO 6140 5820 IF RND>.2 THEN 5730 5830 PRINT "FIENDESKEPP UPP[TET AV SJ\ODJUR" 5840 S=S-1 5850 IF S<>0 THEN 5700 5860 GOTO 6200 5870 PRINT "ETT SJ\ODJUR ]T UPP DITT H\GKVARTER." 5880 S3=0 : S4=0 : D2=0 5890 GOTO 5700 5900 IF RND<.75 THEN 5730 5910 PRINT "TV] SJ\ODJUR SL]SS!!" 5920 IF RND<.8 THEN 5950 5930 PRINT "OCH ETT D\R!!" 5940 GOTO 5700 5950 PRINT "DET BLIR OAVGJORT!" 5960 GOTO 5730 5970 NEXT Y 5980 NEXT X 5990 REM *** MAKE REPAIRS *** 6000 FOR Y=1 TO 9 6010 X=INT(RND*9)+1 6020 D(X)=D(X)+(RND*(2+RND*2))*(1+(-(D<51) OR -(D>2000)))*(-(D(X)<3)) 6030 NEXT Y 6040 GOTO 750 6050 REM *** GOSUB FOR COURSE/DIRECTION 6060 DATA -1,0,-1,1,0,1,1,1,1,0,1,-1,0,-1,-1,-1 6070 PRINT "KURS (1-8)?"; 6080 GET \$ : IF ASC(\$)<49 OR ASC(\$)>56 THEN 6080 ELSE C1=VAL(\$) : ; C1 6090 RESTORE 6060 6100 FOR X9=1 TO INT(C1+.5) 6110 READ X1,Y1 6120 NEXT X9 6130 RETURN 6140 REM *** DESTROYED? *** 6150 PRINT "D[R [R FORTVARANDE ";S;" FIENDE SKEPP KVAR." 6160 PRINT "DU BLIR DEGRADERAD TILL D[CKSVABBARE!!!" 6170 PRINT "VILL DU SPELA MER?"; 6180 GET \$ : ; \$ : IF \$="N" THEN 6190 ELSE IF \$<>"Y" AND \$<>"J" THEN 6180 ELSE 120 6190 ; "TACK F\R IDAG "N$"." : END 6200 PRINT "FINT ARBETAT DU HAR S[NKT HELA DEN FIENTLIGA FLOTTAN" 6210 PRINT "DU BLIR BEFODRAD OCH GRATULERAD AV MARINSTABEN "N$"." 6220 GOTO 6170 6230 REM *** ISLAND DATA *** 6240 DATA 0,1,1,1,0,0,0,1,1,1,1,0,1,1,1,0,1,1,1,1,0,0,0,1 6250 DATA 1,1,0,0,1,1,0,1,1,0,1,0,0,0,1,0,0,0 6260 END 6270 ; CHR$(12) : OUT 6,49 6280 FOR X%=0% TO 23% : ; CUR(X%,0%)CHR$(151); : NEXT X% 6290 FOR X%=0% TO 3% : READ A$(X%) : NEXT X% 6300 ; CUR(0,0)"ABC 80 AV M-O KNUTS" 6310 ; : ; "PRESENTERAR" 6320 FOR Y%=0% TO 22% 6330 FOR X%=0% TO 3% : A$(X%)=" "+A$(X%) : ; CUR(12+X%,0%)CHR$(151%)A$(X%) : NEXT X% 6340 FOR X=0 TO 100 : NEXT X : NEXT Y% 6350 FOR X=35 TO 27 STEP -1 : SETDOT X,63 : SETDOT X,64 6360 IF X<=34 THEN CLRDOT X+1,63 6370 FOR Y=0 TO 50 : NEXT Y : NEXT X 6380 FOR Y=0 TO 2 : FOR X=0 TO 1000 : NEXT X 6390 CLRDOT 27,63 : SETDOT 27,65 : FOR X=0 TO 1000 : NEXT X 6400 CLRDOT 27,65 : SETDOT 27,63 : NEXT Y 6410 OUT 6,0 : ; CHR$(7)"SJ\SLAG" 6420 ; : ; "ETT SJ\KRIGSPEL MED DIG SOM BEF[LHAVARE P] UB]TEN SEAWOLF." 6430 FOR X=0 TO 4000 : NEXT X : RETURN 6440 DATA " j5" 6450 DATA " pppzupppp" 6460 DATA " `~SEAWOLF}0" 6470 DATA " +'" 6480 GOSUB 6860 : ; "Syftet med det h{r spelet {r f|rinta alla fientliga skepp i ett omr}de" 6490 ; "p} 20x20 rutor." : ; : ; "Mot sig har man..." : ; "...fiendeskepp som f{ller sjunkbomber." 6500 ; "...hungriga sj|odjur." : ; "...dolda undervattensminor." : ; : ; "Till sin hj{lp har man..." 6510 ; "...en 30-man stark bes{ttning" : ; "...polarisrobotar" : ; "...vanliga torpeder" 6520 ; : ; "(Tryck)" : GET \$ : GOSUB 6860 6530 ; "F|r att manuvrera ub}ten anv{nder du tioolika komando (0-9) , h{r f|ljer en f|r-klaring p} dessa." 6540 ; : ; " #0: F\RFLYTTNING - Detta komando anv{nder du f|r att f|rflytta dig valfri"; 6550 ; " str{cka i valfri riktning. 8 1 2 Riktningen framg}r av figuren till"; 6560 ; " *** v{nster. Det fins }tta riktningar 7 * 3 att v{lja p}. N{r du valt rikt-" 6570 ; " *** ning skall du tala om hur mycket 6 5 4 energi du vill anv{nda. Hundra" 6580 ; " enheter ger en ruta. Om du anv{nd-er mer {n 1000 enheter p} en g}ng finns" 6590 ; "det risk f|r |verhettning s} var f|rsik-tig." : ; : ; "(Tryck)" : GET \$ : GOSUB 6860 6600 ; " #1: SONAR - Det h{r komandot har tv} funktioner. 1. Ger dig l{ges infor-" 6610 ; "mation f|r de b}tar som ligger p} torpedeller raketkurs. 0. Ger dig en bild av" 6620 ; "omr}det d{r f|ljande symboler anv{nds * = torra land." : ; "$ = mina" : ; "S = fiendeskepp" 6630 ; "# = sj|monster" : ; "H = ditt h|gkvarter" : ; "X = du sj{lv" 6640 ; : ; : ; "(Tryck)" : GET \$ : GOSUB 6860 6650 ; " #2: TORPEDAVFYRING - Detta komando an-v{der du n{r du vill avfyra en torped" 6660 ; "Riktningarna anges p} samma s{tt som vid manuvrering av ub}ten." 6665 ; "R{ckvidden p} torpederna {r 7-13 rutor" 6670 ; : ; " #3. RAKETAVFYRING - Med detta komando kan du skjuta dina robotar p} fi" 6680 ; "Det du skall ange {r riktning (se f|r- flyttning) och br{nsle (1 ruta=75 l.)" 6690 ; : ; " #4: DJUP[NDRING - Detta komando g|r det m|jligt f|r dig att {ndra djup" 6700 ; "s} fort p} djup under 2500m Begynnelse" 6710 ; "djup {r 100m." 6720 ; "(Tryck)"; : GET \$ : GOSUB 6860 6730 ; : ; " #5: L[GES/SKADERAPORT - Detta komando talar om f|r dig hur din ub}t m}r" 6740 ; "Du f}r ocks} reda p} i vilken ruta du befinner dig i." 6750 ; : ; " #6: H\GKVARTERET - Detta komando ger dig m|jlighet att fylla p} dina f|r}d" 6760 ; "F|r att detta skall vara m|jligt f}r du inte vara mer {n 2 rutor fr}n h|g-" 6770 ; "kvarteret och inte p} st|rre djup {n 50 meter. Du kan bara fylla dina f|r}d 2ggr"; 6780 ; : ; : ; "(Tryck)" : GET \$ : GOSUB 6860 6790 ; : ; " #7: SABOTAGE - Detta komando ger dig m|jlighet att skicka ut dykare f|r att" 6800 ; "sabotera n{rbel{gna fientliga skepp med n{rbel{gna menas max 3 rutor." 6810 ; : ; " #8: ENERGIOMVANDLING - Med detta ko- mando kan du omvandla energi till" 6820 ; "raketbr{nsle eller tv{rt om." : ; 6830 ; " #9: GE UPP! - Detta komando {r endast avsett f|r FEGISAR!!" 6840 ; : ; "Beh|ver du se dessa instruktioner under spelets g}ng s} tryck p} I." 6850 ; : ; "(Tryck)" : GET \$ : RETURN 6860 ; CHR$(12%)" SJ\SLAG" 6870 ; CHR$(151)" #######" 6880 ; : ; CHR$(151)"#############INSTRUKTIONER#############" : RETURN