10 REM rymdresa 83 11 21 SW 11 REM (c) Sven Wickberg 12 REM 0750-50456 20 T=0 : REM tidsfaktor 30 ; CHR$(12%)' RYMDRESA ' : ; : ; 'Vill du ha information (N)'; : INPUT W$ 40 IF W$='J' OR W$='j' GOSUB 7000 45 GOSUB 7310 90 RANDOMIZE 99 REM --------------------------------- 100 REM dim och def 105 P1%=2% : P2%=10% : H1%=P2%+1% : H2%=H1%+30% 106 G1%=H2%+1% : G2%=G1%+10% 108 T%=11% : G%=5% : REM ljudet vid krock 110 DIM R%(G2%),K%(G2%),S$(G2%)=1% 120 S$(1%)='>' : REM spelaren sj{lv 130 FOR I%=P1% TO P2% 135 S$(I%)='' : REM rymdKLUMP tom t v 140 NEXT I% : REM svarta h}l 145 FOR I%=H1% TO H2% 150 S$(I%)='.' : REM svarta h}l 155 NEXT I% 160 FOR I%=G1% TO G2% 165 S$(I%)='?' : REM rymdGROP 170 NEXT I% 190 REM -------------------------------- 200 REM g|r spelplan 205 ; CHR$(12%); 210 FOR P%=H1% TO G2% 220 GOSUB 1500 230 NEXT P% 240 P%=1% : GOSUB 1500 250 GET W$ : REM v{nta p} start 990 REM -------------------------------- 1000 REM huvudprogram 1010 FOR I%=1% TO P2% 1012 IF RND<.01 GOSUB 1600 : REM rymdklump in 1013 S%=S%+1% : IF S%>500% GOSUB 9000 : REM SYRET SLUT? 1015 IF S$(I%)='' THEN 1130 : REM d|d 1020 W%=INP(56%) AND 95% 1025 ; CUR(R%(I%),K%(I%))' ' : REM sudda 1030 IF I%=1% IF W%>13% GOSUB 4000 : REM spelaren flyttar 1090 IF I%>1% W%=0% : GOSUB 2000 : REM klump flyttar 1100 ; CUR(R%(I%),K%(I%))S$(I%); 1130 NEXT I% 1135 GOSUB 3000 : REM krock? 1137 IF T=9 THEN GET W$ : GOTO 1190 1140 FOR I=1 TO T*200% : NEXT I 1190 GOTO 1000 1195 REM ------------------------------- 1500 REM placera pj{ser 1510 GOSUB 1810 : GOSUB 1820 : REM dra R,K 1520 IF P%=1% K%(P%)=0% 1530 ; CUR(R%(P%),K%(P%))S$(P%); 1540 RETURN 1590 REM ------------------------------- 1600 REM rymdklump in 1605 IF P9%>P2% THEN 1660 1610 P%=P1%+P9% 1620 P9%=P9%+1% 1630 S$(P%)='#' 1640 GOSUB 1820 1650 IF RND<.5 THEN R%(P%)=22% 1660 RETURN 1800 REM dra R,K------------------------ 1810 R%(P%)=RND*20% : RETURN 1820 K%(P%)=RND*38%+1% : RETURN 1999 REM ------------------------------- 2000 REM klump-drag 2010 W%=SGN(R%(1%)-R%(I%)) 2050 R%(I%)=R%(I%)+W% 2080 W%=SGN(K%(1%)-K%(I%)) 2130 K%(I%)=K%(I%)+W% 2135 IF K%(I%)<1% THEN K%(I%)=1% 2137 IF K%(I%)>38% THEN K%(I%)=38% 2140 RETURN 3000 REM krock? ------------------------ 3010 FOR I1%=1% TO P2% 3015 IF S$(I1%)='' THEN 3050 : REM redan borta 3020 FOR J%=I1%+1% TO G2% 3030 IF R%(I1%)=R%(J%) AND K%(I1%)=K%(J%) GOSUB 3500 : REM krock! 3040 NEXT J% 3050 NEXT I1% 3060 RETURN 3100 REM -------------------------------- 3500 REM krock! 3510 IF RND<.9 IF J%>=G1% AND J%<=G2% THEN 3700 : REM rymdgrop 3520 REM krock med svart h}l------------ 3550 FOR L=1 TO 200 : OUT 6%,T% : ; CUR(R%(J%),K%(J%))CHR$(127%); : NEXT L 3600 S$(I1%)='' : REM d|d 3605 R%(I1%)=23% : K%(I1%)=0% : REM flytta bort d|d 3610 OUT 6%,0% 3620 ; CUR(R%(J%),K%(J%))S$(J%); : REM }terst{ll h}l/grop 3630 IF I1%=1% THEN 5000 : REM slut 3640 GOTO 3800 : REM slut krock 3700 REM krock med rymdgrop------------- 3710 FOR L=1 TO 200 : OUT 6%,G% : NEXT L 3720 REM ev d|d? 3730 IF RND<.8 P%=I1% : GOSUB 1810 : REM ny rad 3740 IF RND<.1 P%=I1% : GOSUB 1820 : REM ny kolumn 3750 ; CUR(R%(I1%),K%(I1%))S$(I1%); 3760 ; CUR(R%(J%),K%(J%))S$(J%); : REM }terst{ll grop 3770 OUT 6%,0% 3800 RETURN : REM slut krock 3990 REM -------------------------------- 4000 REM spelarens drag? (RTY upp}t etc) 4010 POKE 65013%,0% 4020 R%=0% : K%=0% 4030 IF W%=82% OR W%=84% OR W%=89% R%=-1% 4040 IF W%=86% OR W%=66% OR W%=78% R%=1% 4050 R%(1%)=R%(1%)+R% 4060 IF R%(1%)>20% R%(1%)=0% 4070 IF R%(1%)<0% R%(1%)=20% 4080 IF W%=82% OR W%=70% OR W%=86% K%=-1% 4090 IF W%=89% OR W%=72% OR W%=78% K%=1% 4100 K%(1%)=K%(1%)+K% 4110 IF K%(1%)>39% K%(1%)=39% 4120 IF K%(1%)<0% K%(1%)=0% 4130 W%=0% 4140 IF NOT Q% IF K%(1%)=39% GOSUB 5100 : REM halvv{gs framme! 4145 IF Q% IF K%(1%)=0% GOSUB 6000 : REM klart! }terkomst! 4150 RETURN 4900 REM --------------------------------- 5000 REM slut 5005 GOSUB 5500 : REM sudda 5010 ; CUR(20%,0%)'Sorry , du str|k med! - otur' 5020 GOTO 9800 : REM slutrutin 5090 REM --------------------------------- 5100 REM spelaren klarat sig till basen 5110 ; CHR$(7%)CUR(20%,0%)'Du har kommit halvv{gs!' 5120 ; 'KAN DU TA DIG TILLBAKA?' 5125 Q%=-1% : REM flagga f|r returf{rd 5130 S$(1%)='<' : ; CUR(R%(1%),39%)S$(1%); 5150 RETURN 5490 REM ------------------------------- 5500 REM sudda l{sraderna 5510 ; CUR(20%,0%)SPACE$(79%); : RETURN 5520 REM -------------------------------- 6000 REM hj{ltens }terkomst! 6100 GOSUB 5500 6105 FOR K%=0% TO 20% : ; CUR(K%,0%)CHR$(7%,127%); : NEXT K% 6110 GOSUB 5500 : ; CUR(20%,0%)' HURRA! Du klarade dig!' 6120 END 6900 REM --------------------------------- 7000 REM information 7010 ; CHR$(12%)' RYMDRESA ' : ; 7020 ; 'Testprogram f|r blivande rymdflygare.' 7025 ; : ; 'Du skall flyga en rymdfarkost' 7030 ; '(m{rkt > p} radarsk{rmen) fr}n sk{rmens' 7040 ; 'v{nstra sida till den h|gra och tillbaka' 7050 ; : ; 'P} sk{rmen ser du SVARTA H]L (.)' 7055 ; 'Det som fastnar d{r f|rintas.' : ; 7060 ; 'Den som hamnar i en RYMDGROP (?)' 7070 ; 'kan bli kastad ut till en annan del av' 7080 ; 'rymden - men kan ocks} bli f|rintad.' 7100 ; : ; 'Magnetiska RYMDKLUMPAR (#) dras mot' 7110 ; 'ditt skepp. En kollision {r fatal.' 7120 ; 'Se till att du lockar dem ned i' 7140 ; 'ett svart h}l s} fort som m|jligt.' 7150 ; : ; '(Tryck RETURN n{r du l{st klart)' 7160 GET W$ 7200 ; CHR$(12%)'Du styr med tangenterna' 7210 ; : ; TAB(10%)'R T Y' 7220 ; TAB(10%)'F G H' 7230 ; TAB(10%)'V B N' 7240 ; : ; 'R = snett upp}t v{nster' 7250 ; 'T = rakt upp}t' 7260 ; 'Y = snett upp}t h|ger' 7270 ; 'V B N = p} samma s{tt ned}t ' 7280 ; 'F = rakt }t v{nster ' 7290 ; 'H = rakt }t h|ger' 7295 ; 'G = st} still' 7300 ; : ; '(Tryck RETURN) ' 7305 GET W$ 7310 ; CHR$(12%)'Vilken hastighet vill du ha:' 7320 ; : ; '0 = (nolla) = full fart' 7325 ; '1-8 = allt l}ngsammare' 7330 ; '9 = inspektion (flyttar endast vid tryck' 7340 ; : ; 'V{lj fart ('T'):'; : GET W$ : ; W$ 7350 ONERRORGOTO 7360 : T=VAL(W$) 7360 ; : ; : ; : ; : ; 'Vill du l{sa informationen igen' 7370 ; 'Tryck I, annars b|rja med RETURN' 7380 GET W$ 7390 IF W$='I' OR W$='i' 7000 ELSE RETURN 9000 REM SYRET SLUT? 9010 IF S%>1000% GOTO 9050 9020 ; CUR(20%,0%)'BARA'(100%-S%/10%)'% AV SYRET KVAR!'; 9025 IF S%>700% ; ;CHR$(7%); 9030 RETURN 9050 GOSUB 5500 : ; CUR(20%,0%)'SYRET SLUT - DIN F[RD OCKS]!' : GOTO 9800 9800 REM slutrutin 9810 IF INP(56%)>127% THEN 9810 9820 POKE 65013%,0% 9830 END