10 REM +++++++++++++++++++++++++++++++++ 11 REM ! Program .... STARTREK 12 REM ! Utg}va 2 13 REM ! av (c) 101 BASIC COMPUTER GAMES 14 REM ! {ndrat av YNGVE BOHLIN 15 REM ! Minne 16 Kbytes 16 REM ! Ins{nt av YNGVE BOHLIN 17 REM +++++++++++++++++++++++++++++++++ 18 DIM G%(7%,7%),Q%(9%,9%),K%(3%,3%),D(8%),A$=22%,B$=10%,C$=6% 19 ; CHR$(12%)" *** STARTREK ***" : ; : ; "SV]RIGHETSGRAD (1-3)"; 20 ONERRORGOTO 19 : INPUT I% : IF I%=1% E0%=5000% : T2%=25% : P0%=20% 21 IF I%<1% OR I%>3% 19 ELSE IF I%=2% E0%=3000% : T2%=10% : P0%=10% 22 IF I%=3% E0%=3000% : T2%=1% : P0%=10% 23 RANDOMIZE : E%=E0% : P%=P0% : T0%=(RND*20%+20%)*100% : T=T0% : T9%=25%+RND*10% : S%=0% : B9%=0% : K9%=0% 24 FOR I%=0% TO 8% : D(I%)=0% : NEXT I% 25 DEFFNB(B)=SQR((K%(I%,1%)-S1%)^2%+(K%(I%,2%)-S2%)^2%) 26 DEFFNA(C)=(C-1%)*45% 27 Q1%=RND*8% : Q2%=RND*8% : S1%=RND*10% : S2%=RND*10% 28 FOR I%=0% TO 7% : FOR J%=0% TO 7% : K3%=0% : B3%=0% : IF RND>.96 K3%=30% : K9%=K9%+3% : GOTO 31 29 IF RND>.95 K3%=20% : B3%=1% : K9%=K9%+2% : B9%=B9%+1% : GOTO 31 30 IF RND>.8 K3%=10% : K9%=K9%+1% 31 G%(I%,J%)=K3%+B3% : NEXT J% : NEXT I% : IF K9%+T2%>T9% T9%=K9%+T2% 32 ; CHR$(12%)"DINA ORDER:" 33 ; "F\RST\R DE"K9%" INVADERANDE FIENDESKEPPEN" : ; "INNAN STJ[RNDATUM"T0%+T9% 34 ; "DU HAR"T9%" STJ[RNDAGAR P] DIG" : ; "I GALAXEN FINNS"B9%" AV" : ; "FEDERATIONENS STJ[RNBASER" 35 FOR I%=1% TO 3% : FOR J%=1% TO 3% : K%(I%,J%)=0% : NEXT J% : NEXT I% 36 K3%=INT(G%(Q1%,Q2%)/10%) : B3%=G%(Q1%,Q2%)-10%*K3% : S3%=RND*8% 37 FOR I%=0% TO 9% : FOR J%=0% TO 9% : Q%(I%,J%)=0% : NEXT J% : NEXT I% 38 Q%(S1%,S2%)=69% : IF K3%=0% 41 39 FOR I%=1% TO K3% : GOSUB 153 : Q%(R1%,R2%)=70% : K%(I%,1%)=R1% : K%(I%,2%)=R2% : K%(I%,3%)=50%+(.5*RND*100%) 40 NEXT I% 41 IF B3%>0% GOSUB 153 : Q%(R1%,R2%)=66% 42 FOR I%=1% TO S3% : GOSUB 153 : Q%(R1%,R2%)=42% : NEXT I% 43 ; CUR(9%,0%)'-------------------' : ; CUR(20%,0%)'-------------------' 44 ; CUR(11%,21%)"KVADRAT"CUR(12%,21%)"SEKTOR"CUR(13%,21%)"DATUM" 45 ; CUR(10%,21%)"STATUS"CUR(15%,21%)"TORPEDER"CUR(16%,21%)"ENERGI"CUR(17%,21%)"SK\LDAR" 46 ; CUR(18%,21%)"FIENDER"CUR(14%,21%)"DAGAR KVAR"CUR(19%,21%)"KOMMANDO" : GOSUB 178 47 GOSUB 200 : IF E%=0% AND D(6%)<0% 157 48 ONERRORGOTO 50 : B%=0% : IF T>T0%+T9% 156 ELSE B$='193205' : GOSUB 159 : INPUT \% : IF \%<1% OR \%>7% 50 49 ON \% GOTO 53,95,101,117,89,138,131 50 GOSUB 165 : ; 'KOMMANDO:' : ; "(1)F\RFLYTTNING" : ; '(2)RADAR' : ; '(3)LASER' : ; '(4)TORPEDER' 51 ; '(5)[NDRA SK\LDAR' : ; '(6)SKADE RAPPORT' : ; '(7)SKEPPSDATORN' : GOTO 48 52 GOSUB 200 : GOTO 47 53 GOSUB 164 : ; 'KURS (1-9)'; : INPUT C : IF C<1% OR C>9% GOSUB 164 : ; 'FEIL KURS' : GOTO 53 54 GOSUB 164 : W2=8% : IF D(0%)<0% ; "MOTORN [R SKADAD, MAXFART 0.2" : W2=.2 55 ; 'FART (0.1-8.0)'; : INPUT W1 : IF W1<.1 GOSUB 164 : ; "F\R L]NGSAMT" : GOTO 55 56 IF W1>W2 GOSUB 164 : ; "F\R SNABBT" : GOTO 55 57 N%=W1*8%+.5 : IF E%-N%<0% GOSUB 164 : ; "SKEPPETS ENERGIRESERV F\R LITEN" : GOSUB 162 : GOTO 47 58 GOSUB 164 : GOSUB 165 : GOSUB 142 : GOTO 64 59 D6=W1 : IF W1>1% D6=1% 60 FOR I%=0% TO 7% : IF D(I%)=0% 63 61 D(I%)=D(I%)+D6 : IF D(I%)<0% 63 62 D(I%)=0% : GOSUB 164 : A%=I% : GOSUB 167 : ; A$;':REP. UTF\RT' : GOSUB 162 63 NEXT I% : IF G%=1% 47 ELSE 35 64 S4%=S1% : S5%=S2% : Q4%=Q1% : Q5%=Q2% : W3=0% : Q%(S1%,S2%)=0% 65 U4%=S4% : U5%=S5% : GOSUB 161 : W3=W3+.1 : GOSUB 195 66 S4%=S1%+Z% : S5%=S2%+Y% : ; CUR(12%,32%)S4%S5% : IF S4%<0% OR S4%>9% OR S5%<0% OR S5%>9% 76 67 IF Q%(S4%,S5%)<>0% 69 ELSE ; CUR(10%+S4%,2%*S5%)'E' 68 IF W31% T=T+1% ELSE T=T+W1 74 GOSUB 178 : IF T>T0%+T9% 156 75 GOTO 86 76 W3=W1 : GOSUB 195 77 Q1%=10%*Q1%+S1%+Z% : Q2%=10%*Q2%+S2%+Y% : F%=0% 78 IF Q1%<0% Q1%=0% : F%=3% 79 IF Q1%>79% Q1%=79% : F%=3% 80 S1%=Q1%-INT(Q1%/10%)*10% : Q1%=INT(Q1%/10%) 81 IF Q2%<0% Q2%=0% : F%=3% 82 IF Q2%>79% Q2%=79% : F%=3% 83 S2%=Q2%-INT(Q2%/10%)*10% : Q2%=INT(Q2%/10%) : GOSUB 178 84 IF Q1%=Q4% AND Q2%=Q5% IF F%=3% 71 ELSE 72 85 G%=0% : GOTO 73 86 FOR I%=1% TO 3% : IF K%(I%,3%)=0% 88 87 Q%(K%(I%,1%),K%(I%,2%))=0% : GOSUB 153 : Q%(R1%,R2%)=70% : K%(I%,1%)=R1% : K%(I%,2%)=R2% 88 NEXT I% : GOTO 59 89 T=T+.1 : IF D(6%)<0% A%=6% : GOSUB 166 : GOTO 47 90 GOSUB 164 : ; "ENERGI TILL SK\LDARNA"; : INPUT X% : IF X%>E% 93 91 IF X%<0% 94 92 E%=E%-X% : S%=S%+X% : GOSUB 178 : GOTO 48 93 GOSUB 164 : ; CHR$(7%)CUR(21%,0%)'FOR MYE' : GOTO 90 94 IF ABS(X%)>S% 93 ELSE 92 95 IF D(2%)<0% A%=2% : GOSUB 166 : GOTO 47 96 GOSUB 165 : ; "RADARSVEP FR]N KVADRAT:"Q1%+1%Q2%+1% 97 FOR I%=Q1%-1% TO Q1%+1% : IF I%<0% OR I%>7% ; '   '; : GOTO 100 98 FOR J%=Q2%-1% TO Q2%+1% : IF J%<0% OR J%>7% ; '  '; : GOTO 100 99 ; G%(I%,J%)' '; : IF G%(I%,J%)>=0% AND G%(I%,J%)<=9% ; ' '; 100 NEXT J% : ; : ; : NEXT I% : GOTO 47 101 T=T+.1 : IF D(3%)<0% A%=3% : GOSUB 166 : GOTO 47 102 GOSUB 164 : IF K3%<=0% ; CHR$(7%)"INGA KLINGONS I KVADRANTEN" : GOSUB 162 : GOTO 48 103 ; "LASERN UPPV[RMD OCH SIKTAD" 104 ; "HUR MYCKET ENERGI TILL LASER"; : INPUT X% : IF X%>E% GOSUB 164 : ; "F\R MYCKET" : GOTO 104 105 GOSUB 142 : GOSUB 164 : E%=E%-X% : GOSUB 178 : GOSUB 165 : H1=X%/K3% 106 FOR I%=1% TO 3% : OUT 6%,7% : ; CUR(5%,0%); : A6%=198% : IF K%(I%,3%)=0% 115 107 S4%=K%(I%,1%) : S5%=K%(I%,2%) 108 H=INT(H1/FNB(1%)) : GOSUB 176 109 IF H<.15*K%(I%,3%) ; "INGEN SKADA P] KLINGON SEKTOR"S4%S5% : GOTO 116 110 K%(I%,3%)=K%(I%,3%)-H : ; " KLINGON SEKTOR"S4%S5%" TR[FFAD AV"H : OUT 6%,33% 111 IF K%(I%,3%)>0% ; " SENSORN VISAR"K%(I%,3%)" ENHETER KVAR" : GOTO 116 112 OUT 6%,9% : L%=10% : GOSUB 211 113 K%(I%,3%)=0% : GOSUB 178 : IF K9%=0% GOSUB 200 : GOSUB 162 : GOTO 154 114 GOSUB 162 : A6%=32% : GOSUB 176 115 B$='050079' : GOSUB 159 : OUT 6%,0% : NEXT I% : GOSUB 164 : GOTO 47 116 GOSUB 162 : IF A8%=1% 114 ELSE A6%=70% : GOSUB 176 : GOTO 115 117 T=T+.1 : IF P%=0% GOSUB 164 : ; "TORPEDERNA SLUT" : GOSUB 162 : GOTO 47 118 IF D(4%)<0% A%=4% : GOSUB 166 : GOTO 47 119 GOSUB 164 : ; "TORPEDENS KURS"; : INPUT C 120 IF C<1% OR C>=9% GOSUB 164 : ; "FELAKTIG KURSANGIVELSE" : GOTO 119 121 GOSUB 142 : T=T+.1 : P%=P%-1% : GOSUB 178 : S4%=S1% : S5%=S2% : W3=0% 122 W3=W3+.1 : GOSUB 195 : S4%=S1%+Z% : S5%=S2%+Y% : IF S4%<0% OR S4%>9% OR S5%<0% OR S5%>9% 130 123 L%=Q%(S4%,S5%) : IF L%=0% 122 124 IF L%=66% GOSUB 164 : ; "STJ[RNBAS F\RST\RD" : A6%=194% : B9%=B9%-1% : L%=1% : GOSUB 212 : GOTO 129 125 IF L%=42% GOSUB 164 : OUT 6%,9% : ; "DU TR[FFADE EN STJ[RNA" : A6%=170% : GOTO 129 126 GOSUB 165 : A6%=198% : L%=10% : GOSUB 211 127 GOSUB 178 : IF K9%=0% GOSUB 200 : GOSUB 162 : GOTO 154 128 FOR I%=1% TO 3% : IF S4%=K%(I%,1%) AND S5%=K%(I%,2%) K%(I%,3%)=0% ELSE NEXT I% 129 GOSUB 176 : GOSUB 162 : GOTO 47 130 GOSUB 164 : ; "TORPEDEN BOMMADE"CHR$(7%) : GOTO 48 131 T=T+.1 : GOSUB 165 : IF D(7%)<0% A%=7% : GOSUB 166 : GOTO 47 132 FOR I%=0% TO 9% : FOR J%=0% TO 9% : IF Q%(I%,J%)=66% 133 ELSE NEXT J% : NEXT I% : GOTO 134 133 A=S1%-I% : B=(9%-S2%)-(9%+J%) : GOSUB 189 : ; "RIKTNING TILL STJ[RNBAS"V 134 I%=0% : IF K3%=0% 102 135 FOR I%=1% TO 3% : IF K%(I%,3%)=0% 137 ELSE A=S1%-K%(I%,1%) : B=(9%-S2%)-(9%-K%(I%,2%)) : GOSUB 189 136 ; "RIKTNING TILL KLINGON"V 137 NEXT I% : GOTO 48 138 T=T+.1 : IF D(5%)<0% A%=5% : GOSUB 166 : GOTO 47 139 GOSUB 165 : FOR I%=0% TO 7% : IF I%=5% 141 ELSE ON I%+1% GOSUB 168,169,170,171,172,173,174,175 140 ; A$;TAB(22%)D(I%) 141 NEXT I% : GOTO 48 142 IF K3%<0% RETURN 143 IF F%=1% GOSUB 164 : ; "STJ[RNBASEN SKYDDAR DIG" : GOSUB 162 : RETURN 144 FOR I%=1% TO 3% : GOSUB 165 : IF K%(I%,3%)<=0% 152 145 H=INT((K%(I%,3%)/FNB(1))*(2%+RND)) : IF H<1% 152 : S%=S%-H : K%(I%,3%)=K%(I%,3%)/(2%+RND) 146 IF K%(I%,3%)<=1% K%(I%,3%)=1% 147 ; CUR(5%,0%)"ENTERPRISE TR[FFAT,SK\LDARNA NED"H 148 FOR K%=S%+H TO S% STEP -5% : ; CUR(17%,32%)' 'CUR(17%,32%)K%CHR$(7%) : FOR J%=1% TO 400% : NEXT J% 149 ; CUR(17%,32%)S% : NEXT K% : FOR K%=1% TO 3000% : NEXT K% : IF S%<0% 155 150 S=S% : IF H/S<.02 OR RND>.75 THEN 152 151 A%=RND*8% : D(A%)=D(A%)-H/S-.5*RND : GOSUB 167 : ; CUR(7%,0%)"SKADA P] "A$ : GOSUB 162 152 NEXT I% : RETURN 153 R1%=RND*10% : R2%=RND*10% : IF Q%(R1%,R2%)=0% RETURN ELSE 153 154 GOSUB 165 : OUT 6%,45% : ; "GRATULERAR KAPTEN!" : ; "DET SISTA FIENTLIGA SKEPPET F\RST\RT" : GOTO 158 155 GOSUB 162 : GOSUB 165 : OUT 6%,9% : ; "ENTERPRISE [R TOTALF\RST\RD" : GOTO 158 156 GOSUB 162 : GOSUB 165 : OUT 6%,3% : ; "TIDEN HAR G]TT UT" : GOTO 158 157 GOSUB 165 : OUT 6%,3% : ; "DU [R AVSATT" : ; "ENTERPRISE HAR HAVERERAT" 158 GOSUB 162 : OUT 6%,0% : FOR X%=1% TO 20000% : NEXT X% : GOTO 18 159 A1%=VAL(LEFT$(B$,2%)) : A2%=VAL(MID$(B$,3%,2%)) : A3%=VAL(RIGHT$(B$,5%)) 160 ; CUR(A1%,A2%)SPACE$(A3%)CUR(A1%,A2%); : RETURN 161 B$=RIGHT$(NUM$(10%+U4%),2%)+RIGHT$(NUM$(100%+U5%*2%),3%)+'01' : GOSUB 159 : RETURN 162 FOR K%=1% TO 20000% : NEXT K% : RETURN 163 FOR K%=0% TO 9% : B$=NUM$(10%+K%)+'0020' : B$=RIGHT$(B$,2%) : GOSUB 159 : NEXT K% : RETURN 164 B$='210079' : GOSUB 159 : RETURN 165 B$='0000320' : GOSUB 159 : RETURN 166 GOSUB 164 : GOSUB 167 : ; A$" FUNGERAR INTE" : GOSUB 162 : RETURN 167 ; CHR$(7%) : ON A%+1% GOTO 168,169,170,171,172,173,174,175 168 A$="MOTORN" : RETURN 169 A$='KORT-DISTANS SENSOR' : RETURN 170 A$="RADARN" : RETURN 171 A$="LASER SYSTEMET" : RETURN 172 A$="TORPED TUBERNA" : RETURN 173 A$='SKADE KONTROL' : RETURN 174 A$="SK\LD KONTROLLEN" : RETURN 175 A$="SKEPPSDATORN" : RETURN 176 P1%=32040% : IF S4%>=6% P1%=31056% 177 POKE P1%+S4%*128%+S5%*2%,A6% : RETURN 178 FOR K%=1% TO 8% : ; CUR(10%+K%,32%)' 'CUR(10%+K%,32%); 179 ON K% GOTO 180,181,182,183,184,185,186,187 180 ; Q1%+1%;Q2%+1% : GOTO 188 181 ; S1%;S2% : GOTO 188 182 ; T : GOTO 188 183 ; T0%+T9%-T : GOTO 188 184 ; P% : GOTO 188 185 ; E% : GOTO 188 186 ; S% : GOTO 188 187 ; K9% 188 NEXT K% : RETURN 189 ONERRORGOTO 193 : V=ATN(A/B)*180%/PI 190 IF B<0% V=180%+V ELSE IF A<0% AND B>0% V=360%+V 191 V=1%+V/45% : IF V=9% V=1% 192 RETURN 193 V=0% : IF B=0% AND A>0% V=90% ELSE IF B=0% AND A<0% V=270% 194 GOTO 190 195 Z%=10%*(INT(10%*(SIN(FNA(C+180%)*PI/180%)*W3)+.5)/10%) 196 Y%=10%*(INT(10%*(COS(FNA(C)*PI/180%)*W3)+.5)/10%) : RETURN 197 E%=E%-N%-10% : IF E%>=0% RETURN 198 ; CUR(22%,0%)"ENERGI FR]N SK\LDARNA" : S%=S%+E% : E%=0% : GOSUB 162 : IF S%<0% S%=0% 199 RETURN 200 IF K3%>0% C$='R\D' : OUT 6%,7% : GOTO 202 201 OUT 6%,0% : C$='GR\N' : IF E%