10 REM ******************** 20 REM * * 30 REM * UB]T * 40 REM * av Torbj|rn Alm * 50 REM * och Torsten Alm * 60 REM * CoSimSweden * 70 REM * 1979-10-21 * 80 REM * (c) 1980 T Alm * 90 REM ******************** 100 NOTRACE 110 RANDOMIZE 120 ; CHR$(12);" ***UB]T*** ***UB]T***" : ; 130 ; "Du {r nu kapten p} en ub}t." : ; "Din uppgift {r att s{nka s} m}nga fient-liga skepp som m|jligt" 140 ; "Du har 30 torpeder ombord." : ; "N{r de {r slut s} slutar spelet." 150 ; "Vill du veta hur dina fiender ser ut ? J/N" : ; "SKRIV MED STORA BOKST[VER!" 160 GET A$ : ; A$ : IF A$='J' THEN GOTO 210 170 ; CHR$(12);"INSRUKTIONER" : ; 180 ; "Du har 4st torped-tuber.Varje tub kan bara skjuta iv{g EN torped var 5:e sekund" : ; 190 ; "Uppe till h|ger s} visas vilka tuber som {r laddade f|r tillf{llet " 200 ; "Tryck p} mellan-slag n{r du {r redo!" : GET A$ : ; A$ : GOTO 230 210 ; "Dessa sorter finns :1=ub}t : 2=hangar fartyg : 3=torpedb}t : 4=ub}t i under- vattens l{ge/driv-mina" : ; 220 ; CHR$(151%);" ,., l~}< x0 $" : ; : GET A$ : ; A$ : GOTO 170 230 REM start grafik 240 P9%=0% : N9%=30% : REM init score,torpedos 250 ; CHR$(12%); 260 ; CUR(0%,2%);"SCORE";P9%;" TORPEDER: 1 2 3 4" 270 ; CHR$(151%);"7####################################k" 280 FOR \=2 TO 20 : ; CHR$(151%);"5 j" 290 NEXT \ 300 ; CHR$(151%);"uppppppppppppppppppppppppppppppppppppz" 310 ; CUR(22%,1%);" 1 2 3 4"; 320 P3%(1%)=12% : P3%(2%)=34% : P3%(3%)=48% : P3%(4)=68% 330 P4%(1%)=6% : P4%(2%)=17 340 P4%(3%)=24% : P4%(4%)=34 350 FOR I%=1% TO 4% 360 GOSUB 480 : REM UB]T 370 GOSUB 650 : REM HANGAR FARTYG 380 GOSUB 810 : REM TORPED B]T 390 GOSUB 950 : REM UB]T/MINA 400 FOR T%=1% TO 2% : GOSUB 1090 : NEXT T% : REM torped 410 FOR J%=1% TO 4% : T4%(J%)=T4%(J%)+1% 420 IF T4%(J%)=0% THEN ; CUR(0%,30%+2%*J%);CHR$(48%+J%); 430 NEXT J% 440 NEXT I% 450 GOSUB 1840 : REM genar nya 460 IF K7%=0% THEN ; CUR(13%,10%);" GAME OVER "; : GET A$ : GET A$ : GOTO 120 470 GOTO 350 480 REM ub}t 490 IF (I% AND 1%)=0% THEN RETURN 500 IF S9%=0% THEN RETURN 510 FOR S8%=1% TO S9% 520 S7%(S8%)=S7%(S8%)+1% 530 IF S7%(S8%)>77% THEN 590 : REM TAG BORT 540 S6%=S7%(S8%) 550 SETDOT 7%,S6% : CLRDOT 6%,S6%-3% 560 SETDOT 6%,S6%-2% : IF S6%>8% THEN CLRDOT 7%,S6%-6% 570 NEXT S8% 580 RETURN 590 REM TA BORT VID KANTEN 600 ; CUR(2%,36%);" j"; 610 IF S9%=1% THEN S9%=0% : RETURN 620 S5%=S8% 630 IF S5%=S9% THEN S9%=S9%-1% : GOTO 570 640 S7%(S5%)=S7%(S5%+1%) : S5%=S5%+1% : GOTO 630 650 REM HANGAR FARTYG 660 IF I%>1% THEN RETURN 670 FOR H8%=1% TO H9% 680 H7%(H8%)=H7%(H8%)-1% 690 IF H7%(H8%)<3% THEN 760 : REM TAG BORT 700 H6%=H7%(H8%) 710 SETDOT 10%,H6% : SETDOT 11%,H6%+1% : SETDOT 9%,H6%+3% 720 CLRDOT 9%,H6%+5% : IF H6%<69% THEN CLRDOT 10%,H6%+8% 730 IF H6%<70% THEN CLRDOT 11%,H6%+7% 740 NEXT H8% 750 RETURN 760 ; CUR(3%,1%);"5 "; 770 IF H9%=1% THEN H9%=0% : RETURN 780 H5%=H8% 790 IF H5%=H9% THEN H9%=H9%-1% : GOTO 740 800 H7%(H5%)=H7%(H5%+1%) : H5%=H5%+1% : GOTO 790 810 REM M-TORPED B]T 820 FOR M8%=1% TO M9% 830 M7%(M8%)=M7%(M8%)+1% 840 IF M7%(M8%)>76% THEN 900 : REM TAG BORT 850 M6%=M7%(M8%) 860 SETDOT 13%,M6% : SETDOT 12%,M6%-1% 870 CLRDOT 13%,M6%-3% : CLRDOT 12%,M6%-2% 880 NEXT M8% 890 RETURN 900 ; CUR(4%,37%);" j"; : OUT 6,0 910 IF M9%=1% THEN M9%=0 : RETURN 920 M5%=M8% 930 IF M5%=M9% THEN M9%=M9%-1% : GOTO 880 940 M7%(M5%)=M7%(M5%+1%) : M5%=M5%+1% : GOTO 930 950 REM UB]T/MINA 960 IF I% AND 1%=0% THEN RETURN 970 FOR U8%=1% TO U9% 980 U7%(U8%)=U7%(U8%)-1% 990 IF U7%(U8%)<3% THEN 1040 : REM TAG BOTR 1000 U6%=U7%(U8%) 1010 SETDOT 16%,U6% : CLRDOT 16%,U6%+1% 1020 NEXT U8% 1030 RETURN 1040 ; CUR(5%,1%);"5" 1050 IF U9%=1% THEN U9%=0% : RETURN 1060 U5%=U8% 1070 IF U5%=U9% THEN U9%=U9%-1% : GOTO 1020 1080 U7%(U5%)=U7%(U5%+1%) : U5%=U5%+1% : GOTO 1070 1090 REM NYA OCH GAMLA TORPEDER 1100 K7%=N9% 1110 FOR T8%=1% TO 4% 1120 IF T3%(T8%)=0% THEN 1190 1130 K7%=K7%+1% 1140 T3%(T8%)=T3%(T8%)-1% 1150 P3%=P3%(T8%) 1160 CLRDOT T3%(T8%)+1%,P3% 1170 IF DOT(T3%(T8%),P3%) THEN GOTO 1210 1180 SETDOT T3%(T8%),P3% : OUT 6,25 1190 NEXT T8% 1200 GOTO 1280 1210 T7%=T3%(T8%) : OUT 6,33 : OUT 6,0 1220 IF T7%=16% THEN GOTO 1370 1230 IF T7%=13% THEN GOTO 1490 1240 IF T7%=11% OR T7%=10% THEN GOTO 1600 1250 IF T7%=7% THEN GOTO 1720 1260 T3%(T8%)=0% 1270 OUT 6,0 1280 REM NY TORPED? 1290 P%=INP(56%) : IF (P% AND 128%)=0% THEN RETURN 1300 P%=P% AND 127% : IF P%<48% OR P%>52% THEN RETURN 1310 P%=P%-48% : IF T4%(P%)<0% THEN RETURN 1320 ; CUR(0%,30%+2%*P%);" "; 1330 T4%(P%)=-75% : REM V[NTA P] N[STA SKOTT 1340 N9%=N9%-1% : ; CUR(23%,20%);N9%;" "; 1350 T3%(P%)=64% 1360 RETURN 1370 REM MINA 1380 IF RND<.1 THEN O%=500% ELSE O%=-200% 1390 FOR \%=1% TO U9% 1400 IF U7%(\%)=P3%(T8%) THEN 1420 1410 NEXT \% : ; "INGEN MINA";P3%(T8%); : STOP 1420 ; CUR(5%,P4%(T8%));CHR$(127%); : OUT 6,75 1430 FOR [%=1% TO 3000% : NEXT [% : GOSUB 2130 1440 ; CUR(5%,P4%(T8%));" "; : IF U9%=1% THEN U9%=0% : GOTO 1260 1450 U5%=0% 1460 IF U5%=U9% THEN U9%=U9%-1% : GOTO 1260 1470 U7%(U5%)=U7%(U5%+1%) : U5%=U5%+1% : GOTO 1460 1480 GOTO 1260 1490 REM MTB 1500 O%=600% : FOR \%=1% TO M9% : P6%=P3%(T8%) 1510 IF ABS(P6%-M7%(\%))<3% THEN 1530 1520 NEXT \% : ; "INGEN TORPEDB]T?";P3%(T8%); : STOP 1530 ; CUR(4%,P4%(T8%)-1%);CHR$(127%,127%,127%); : OUT 6,75 1540 FOR [%=1% TO 3000% : NEXT [% : GOSUB 2130 1550 ; CUR(4%,P4%(T8%)-1);" "; : IF M9%=1% THEN M9%=0% : GOTO 1260 1560 M5%=\% 1570 IF M5%=M9% THEN M9%=M9%-1% : GOTO 1260 1580 M7%(M5%)=M7%(M5%+1%) : M5%=M5%+1% : GOTO 1570 1590 GOTO 1260 1600 REM CV 1610 O%=100% : FOR \%=1% TO H9% : P6%=P3%(T8%) 1620 IF ABS(P6%-H7%(\%))<9% THEN 1640 1630 NEXT \% : ; "INGET HANGAR FARTYG?";P3%(T8%); : STOP 1640 ; CUR(3%,(H7%(\%)+1%)/2%-1%);STRING$(6%,127%); : OUT 6,75 1650 FOR [=1 TO 3000 : NEXT [ : GOSUB 2130 1660 ; CUR(3%,(H7%(\%)+1%)/2%-1%);SPACE$(6%); 1670 ; CUR(3%,36%);" j"; 1680 H5%=\% 1690 IF H5%=H9% THEN H9%=H9%-1% : GOTO 1260 1700 H7%(H5%)=H7%(H5%+1%) : H5%=H5%+1% : GOTO 1690 1710 GOTO 1260 1720 REM UB]T 1730 O%=300% : FOR \%=1% TO S9% : P6%=P3%(T8%) 1740 IF ABS(P6%-S7%(\%))<6% THEN 1760 1750 NEXT \% : ; "Ingen ss?";P6%; : STOP 1760 ; CUR(2%,(S7%(\%)-5%)/2%);STRING$(6%,127%); : OUT 6,75 1770 FOR [=1 TO 3000 : NEXT [ : GOSUB 2130 1780 ; CUR(2%,(S7%(\%)-5%)/2%);SPACE$(6%); 1790 ; CUR(2%,36%);" j"; 1800 S5%=\% 1810 IF S5%=S9% THEN S9%=S9%-1% : GOTO 1260 1820 S7%(S5%)=S7%(S5%+1%) : S5%=S5%+1% : GOTO 1810 1830 GOTO 1260 1840 REM GEN BOATS 1850 REM GEN UB]TAR 1860 IF S9%>=2% THEN 1920 1870 IF S9%=0% THEN IF RND>.9 THEN 1890 ELSE 1920 1880 IF S7%(1)<35% THEN 1920 1890 IF RND<.65 THEN 1920 1900 S9%=S9%+1% : S7%(S9%)=7% 1910 ; CUR(2%,1%);"=,-$"; 1920 REM hangar fartyg 1930 IF H9%>=2% THEN 1990 1940 IF H9%=0% THEN IF RND>.85 THEN 1960 ELSE 1990 1950 IF H7%(1%)>40% THEN 1990 1960 IF RND<.56 THEN 1990 1970 H9%=H9%+1% : H7%(H9%)=71% 1980 ; CUR(3%,34%);"(||n"; 1990 REM M-TORPEDB]T 2000 IF M9%>=2% THEN 2060 2010 IF M9%=0% THEN IF RND>.9 THEN 2030 ELSE 2060 2020 IF M7%(1%)<45% THEN 2060 2030 IF RND<.9 THEN 2060 2040 M9%=M9%+1% : M7%(M9%)=5% 2050 ; CUR(4%,1%);"=-"; : OUT 6,7 2060 REM UB]T/MINA 2070 IF U9%>=4% THEN 2120 2080 IF U9%<2% THEN 2100 2090 IF U7%(U9%)>63% THEN 2120 2100 IF RND<.6 THEN 2120 2110 U9%=U9%+1% : U7%(U9%)=70% 2120 RETURN 2130 REM 2140 P9%=P9%+O% 2150 ; CUR(0%,8%);P9%;" "; 2160 RETURN