10 REM ++++++++++++++++++++++++++++++++ 20 REM ! Program .... METEOR.BAS 30 REM ! Stockholm 1984-11-07 40 REM ! av Anders Franz`n <5258> 50 REM ! Minne 16 Kbytes 60 REM ! Ins{nt <5258> 70 REM ++++++++++++++++++++++++++++++++ 80 REM 90 REM Spel i grafik. Sammla mineraler 100 REM i rymden,men se upp f|r farliga 110 REM METEORER! 120 REM 250 REM +---------------+ 260 REM ! Variabler ! 270 REM +---------------+ 280 REM 290 REM F% Antal kometer 300 REM P% Aktuell po{ng 310 REM P1% H|gsta po{ng 320 REM P2% L{gsta po{ng 330 REM P3% Flagga max-text 340 REM P4% Bonusr{knare 1 350 REM P5% Bonusr{knare 2 360 REM R%(),,K%() Position komet 370 REM R1%(),K1%() Komets riktning 380 REM S%() Storlek p} komet 390 REM S% Antal skepp kvar 400 REM U%() Utseende p} komet 410 REM U%,V% Position malm 420 REM W% V{rde p} malmbit 430 REM X%,Y% Position skepp 440 REM ]$ Slut grafik 450 REM [$ T|m sk{rmen 460 REM \$ Start grafik 470 REM 480 REM I%, I$, J%, 490 REM K%, R% Slask 500 REM 510 REM 520 REM +---------------+ 530 REM ! Initiering ! 540 REM +---------------+ 550 REM 560 DIM I$=1%,]$=1%,\$=1%,[$=1% 570 DIM R%(3%),K%(3%),R1%(3%),K1%(3%) 580 DIM S%(3%),U%(3%) 590 ]$=CHR$(135%) : \$=CHR$(151%) : [$=CHR$(12%) 600 P2%=32000% 610 ; [$ : FOR I%=22% TO 2% STEP -1% 620 ; CUR(I%,I%-2%)'METEOR' 630 FOR J%=1% TO 200% : NEXT J% 640 ; CUR(I%,I%-2%)' ' 650 NEXT I% 660 REM 670 REM 680 REM +---------------+ 690 REM ! Regler ! 700 REM +---------------+ 710 REM 720 ; CUR(2%,0%)'METEOR'TAB(20%)'sid 1/3' 730 ; 740 ; 750 ; 'Spelet utspelas i yttre rymden' 760 ; 'd{r du sitter i din rymdk{rra' 770 ; 'f|r att plocka mineraler.' 780 ; 790 ; 'Ditt skepp ser ut s} h{r: ' 800 ; 'Du har totalt tre skepp.' 810 ; 820 ; 'Tyv{rr susar meteorer f|rbi' 830 ; 'dig med fasansfull hastighet.' 840 ; 850 ; 'Du m}ste f|rs|ka klara dig' 860 ; 'helskinnad ifr}n dessa.' 870 ; CUR(22%,39%); : GET I$ 880 ; [$CUR(2%,0%)'METEOR'TAB(20%)'sid 2/3' 890 ; 900 ; 910 ; 'Du kan styra ditt skepp :' 920 ; 930 ; ' Upp : J' 940 ; ' V[nster : N' 950 ; ' H|ger : M' 960 ; ' Ner : ' 970 ; 980 ; 990 ; 'Mineralerna du ska plocka {r av' 1000 ; 'olika v{rde. De markeras med en' 1010 ; 'bokstav.' 1020 ; 1030 ; 'Den minst v{rda mineralen' 1040 ; 'markeras med ett A och den som' 1050 ; 'ger mest po{ng med ett I.' 1060 ; CUR(22%,39%); : GET I$ 1070 ; [$CUR(2%,0%)'METEOR'TAB(20%)'sid 3/3' 1080 ; 1090 ; 1100 ; 'Ibland kan en meteor stanna.' 1110 ; 1120 ; 'En stillast}ende meteor {r' 1130 ; 'ofarlig. Det du ser {r egent-' 1140 ; 'ligen r|ken efter den d} den' 1150 ; 'f|rsvunnit ut i universum !' 1160 ; 1170 ; 'D} n}got av dina skepp {r' 1180 ; 'extra flitigt erh}lles en liten' 1190 ; 'bonus. Om du {r v{ldigt duktig' 1200 ; 'kan du f} ett nytt skepp !' 1210 ; 1220 ; 'Observera att sv}righetsgraden' 1230 ; '\kar d} po{ngsumman stiger !' 1240 ; CUR(22%,39%); : GET I$ 1250 REM 1260 REM 1270 REM +---------------+ 1280 REM ! Vinjett ! 1290 REM +---------------+ 1300 REM 1310 IF INP(56%)>127% GOTO 1310 1320 ; [$CUR(7%,6%)]$'- M - E - T - E - O - R -' 1330 ; CUR(10%,9%)]$'SENASTE PO[NG : 'P% 1340 ; CUR(12%,9%)]$'H\GSTA PO[NG : 'P1% 1350 ; CUR(15%,7%)]$'Tryck p} en tangent f|r' 1360 ; CUR(16%,10%)]$'att b|rja spelet !' 1370 ; CUR(4%,4%)\$STRING$(30%,48%)CUR(19%,4%)\$STRING$(30%,34%) 1380 FOR I%=5% TO 17% STEP 2% : ; CUR(I%,4%)\$'1'CUR(I%,33%)\$'b'CUR(I%+1%,4%)\$'$'CUR(I%+1%,33%)\$'(' : NEXT I% 1390 ; CUR(4%,4%)\$STRING$(30%,96%)CUR(19%,4%)\$STRING$(30%,33%) 1400 FOR I%=5% TO 17% STEP 2% : ; CUR(I%,4%)\$'$'CUR(I%,33%)\$'('CUR(I%+1%,4%)\$'1'CUR(I%+1%,33%)\$'b' : NEXT I% 1410 IF INP(56%)<128% GOTO 1370 1420 REM 1430 REM 1440 REM +---------------+ 1450 REM ! Figurer ! 1460 REM +---------------+ 1470 REM 1480 RESTORE 1520 1490 FOR I%=1% TO 3% 1500 READ S%(I%),R1%(I%),K1%(I%),U%(I%) 1510 NEXT I% : P%=0% : P3%=0% 1520 DATA 4,1,1,127 1530 DATA 4,1,1,109 1540 DATA 4,1,1,36 1550 REM 1560 REM 1570 REM +---------------+ 1580 REM ! Spela tre ggr ! 1590 REM +---------------+ 1600 REM 1610 FOR S%=3% TO 1% STEP -1% 1620 IF S%(1%)>6% LET S%(1%)=6% 1630 REM 1640 REM 1650 REM +---------------+ 1660 REM ! Rita spelplan ! 1670 REM +---------------+ 1680 REM 1690 ; [$ : FOR I%=1% TO 20% : ; CUR(I%,0%)\$'j'TAB(39%)'5'; : NEXT I% 1700 ; CUR(0%,0%)\$' 'STRING$(37%,112)CUR(21%,0%)\$' 'STRING$(37%,35%) 1710 ; CUR(22%,5%)'PO[NG:'P% 1720 ; CUR(22%,20%)'SKEPP KVAR:'S% 1730 REM 1740 REM 1750 REM +---------------+ 1760 REM ! Positioner ! 1770 REM +---------------+ 1780 REM 1790 U%=RND*11+5 : V%=RND*20+10 : ; CUR(U%,V%)'A' : W%=1% 1800 X%=12% : Y%=20% : F%=1% : P4%=0% : P5%=0% 1810 R%(1%)=1% : K%(1%)=3% 1820 IF S%=3% FOR I%=0% TO 5000% : NEXT I% 1830 REM 1840 REM 1850 REM +---------------+ 1860 REM ! Flytta meteor ! 1870 REM +---------------+ 1880 REM 1890 FOR I%=1% TO F% 1900 R%=R%(I%) : R1%=R1%(I%) : R%(I%)=R%(I%)+R1% 1910 IF R%(I%)<1% OR R%(I%)>21%-S%(I%) LET R%(I%)=R%(I%)-2%*R1% : R1%=-R1% : R1%(I%)=R1% : OUT 6%,0%,6%,155% 1920 K%=K%(I%) : K1%=K1%(I%) : K%(I%)=K%(I%)+K1% 1930 IF K%(I%)<2% OR K%(I%)>39%-S%(I%) LET K%(I%)=K%(I%)-2%*K1% : K1%=-K1% : K1%(I%)=K1% : OUT 6%,0%,6%,155% 1940 IF R1%>0% ; CUR(R%,K%)STRING$(S%(I%),32%)CUR(R%(I%)+S%(I%)-1%,K%(I%))STRING$(S%(I%),U%(I%)) 1950 IF R1%<0% ; CUR(R%+S%(I%)-1%,K%)STRING$(S%(I%),32%)CUR(R%(I%),K%(I%))STRING$(S%(I%),U%(I%)) 1960 IF K1%>0% FOR J%=R%(I%) TO R%(I%)+S%(I%)-1% : ; CUR(J%,K%)' 'CUR(J%,K%(I%)+S%(I%)-1%)CHR$(U%(I%)) : NEXT J% 1970 IF K1%<0% FOR J%=R%(I%) TO R%(I%)+S%(I%)-1% : ; CUR(J%,K%+S%(I%)-1%)' 'CUR(J%,K%(I%))CHR$(U%(I%)) : NEXT J% 1980 REM 1990 REM 2000 REM +---------------+ 2010 REM ! Krasch ? ! 2020 REM +---------------+ 2030 REM 2040 IF X%>=R%(I%) AND X%<=R%(I%)+S%(I%)-1% AND Y%>=K%(I%) AND Y%<=K%(I%)+S%(I%)-1% GOTO 2720 2050 IF INP(56%)<128% ; CUR(X%,Y%)'' : GOTO 2610 2060 REM 2070 REM 2080 REM +---------------+ 2090 REM ! Flytta skepp ! 2100 REM +---------------+ 2110 REM 2120 J%=INP(56%) AND 127% : IF J%>95% LET J%=J% AND 95% 2130 I$=CHR$(J%) : ; CUR(X%,Y%)' ' 2140 IF I$='J' AND X%>1% LET X%=X%-1% 2150 IF I$=' ' AND X%<20% LET X%=X%+1% 2160 IF I$='N' AND Y%>2% LET Y%=Y%-1% 2170 IF I$='M' AND Y%<38% LET Y%=Y%+1% 2180 ; CUR(X%,Y%)'' 2190 REM 2200 REM 2210 REM +---------------+ 2220 REM ! Po{ng ? ! 2230 REM +---------------+ 2240 REM 2250 IF X%<>U% OR Y%<>V% GOTO 2610 2260 OUT 6%,0%,6,135% : P%=P%+W% : P4%=P4%+W% 2270 IF P4%<50% LET J%=0% : GOTO 2320 2280 P4%=0% : J%=1% : P5%=P5%+1% : IF P5%<4% GOTO 2310 2290 ; CUR(23%,5%)'EXTRA SKEPP !'; : OUT 6%,0%,6%,251% 2300 S%=S%+1% : P5%=2% : ; CUR(22%,20%)'SKEPP KVAR:'S% : GOTO 2320 2310 P%=P%+10% : ; CUR(23%,5%)'EXTRA BONUS !'; : OUT 6%,0%,6%,253% 2320 ; CUR(22%,5%)'PO[NG:'P% : IF J%=0% ; CUR(23%,5%)TAB(30%); 2330 IF P%>P1% AND P3%=0% LET P3%=1% : ; CUR(23%,5%)'H\GSTA PO[NGEN IDAG !'; : OUT 6%,0%,6%,5% 2340 REM 2350 REM 2360 REM +---------------+ 2370 REM ! G|r sv}rare ! 2380 REM +---------------+ 2390 REM 2400 J%=F% 2410 IF W%>3% LET F%=2% 2420 IF S%(1%)>7% AND W%>4% LET F%=2% 2430 IF W%>7% LET F%=3% 2440 IF S%(1%)>7% AND W%>6% LET F%=3% 2450 W%=W%+1% : IF W%>9% LET W%=1% : IF P%<270% LET F%=1% ELSE IF P%<360% LET F%=2% ELSE F%=3% 2460 IF P%>135% AND S%(1%)<6% AND R%(1%)<10% AND K%(1%)<30% LET S%(1%)=S%(1%)+1% 2470 IF F%=2% AND P%>180% AND S%(2%)<6% AND R%(2%)<10% AND K%(2%)<30% LET S%(2%)=S%(2%)+1% 2480 IF F%=3% AND P%>225% AND S%(3%)<7% AND R%(3%)<10% AND K%(3%)<30% LET S%(3%)=S%(3%)+1% 2490 IF P%>360% AND S%(1%)<8% AND R%(1%)<8% AND K%(1%)<25% LET S%(1%)=S%(1%)+1% 2500 IF P%>450% AND S%(2%)<8% AND R%(2%)<8% AND K%(2%)<25% LET S%(2%)=S%(2%)+1% 2510 IF P%>500% AND S%(3%)<8% AND R%(3%)<8% AND K%(3%)<25% LET S%(3%)=S%(3%)+1% 2520 IF P%>200% AND W%=1% LET F%=1% 2530 IF P%>350% AND W%<3% LET F%=1% 2540 IF F%<=J% GOTO 2600 2550 J%=RND*4% 2560 IF J%=0% LET R%(F%)=1% : K%(F%)=3% 2570 IF J%=1% LET R%(F%)=1% : K%(F%)=38%-S%(F%) 2580 IF J%=2% LET R%(F%)=21%-S%(F%) : K%(F%)=3% 2590 IF J%=3% LET R%(F%)=21%-S%(F%) : K%(F%)=38%-S%(F%) 2600 U%=RND*11+5 : V%=RND*20+10 2610 ; CUR(U%,V%)CHR$(W%+64%) 2620 IF P%<225% FOR J%=0% TO 225%-P% : NEXT J% 2630 IF P%<325% AND F%=1% FOR J%=0% TO (P%-150%)/2% : NEXT J% 2640 NEXT I% 2650 GOTO 1890 2660 REM 2670 REM 2680 REM +---------------+ 2690 REM ! Krasch ! 2700 REM +---------------+ 2710 REM 2720 OUT 6%,55% 2730 IF Y%<7% LET K%=0% 2740 IF Y%>=7% AND Y%<=30% LET K%=Y%-5% 2750 IF Y%>30% LET K%=30% 2760 FOR I%=0% TO 100% 2770 ; CUR(X%,K%)]$'KRASCH !!'\$ 2780 FOR J%=0% TO 14% : NEXT J% 2790 ; CUR(X%,K%)\$'' 2800 FOR J%=0% TO 6% : NEXT J% 2810 NEXT I% : OUT 6%,0% 2820 NEXT S% 2830 REM 2840 REM 2850 REM +---------------+ 2860 REM ! Visa resultat ! 2870 REM +---------------+ 2880 REM 2890 ; [$CUR(5%,0%)'DIN PO[NG : 'P% 2900 IF P%>P1% LET P1%=P% : ; CUR(8%,0%)'GRATTIS, h|gsta po{ngen idag !' 2910 IF P%=2% AND P%<10% ; 'USELT !' 2960 IF P%>=10% AND P%<40% ; 'D}ligt !' 2970 IF P%>=40% AND P%<60% ; 'B{ttre kan du !' 2980 IF P%>=60% AND P%<80% ; 'Hm, b{st att du |var mer !' 2990 IF P%>=80% AND P%<100% ; 'Tja, inte s} d}ligt !' 3000 IF P%>=100% AND P%<120% ; 'Jod}, nu b|rjar du l{ra dig !' 3010 IF P%>=120% AND P%<140% ; 'Godk{nt !' 3020 IF P%>=140% AND P%<160% ; 'Ganska bra !' 3030 IF P%>=160% AND P%<180% ; 'Bra !' 3040 IF P%>=180% AND P%<200% ; 'Du {r ju duktig !' 3050 IF P%>=200% AND P%<220% ; 'Mycket skickligt !' 3060 IF P%>=220% AND P%<240% ; 'Bra jobbat !' 3070 IF P%>=240% AND P%<260% ; 'J{ttebra !' 3080 IF P%>=260% AND P%<280% ; 'Du tillh|r de b{ttre mineralplockarna !' 3090 IF P%>=280% AND P%<300% ; 'Toppen, suver{nt, j{ttebra !!' 3100 IF P%>=300% AND P%<350% ; 'Du {r nu utsedd till' : ; 'hedersmineralplockare !' 3110 IF P%>=350% AND P%<400% ; 'Dina insatser f|r hemplaneten' : ; '{r om{tbara !' 3120 IF P%>=400% AND P%<450% ; 'Universum ligger f|r dina f|tter !' 3130 IF P%>450% ; '[h, l{gg av. Nu f}r du hitta p}' : ; 'ett nytt spel f|r ABC80 !' 3140 ; CUR(22%,39%); : POKE 65013%,0% : GET I$ 3150 GOTO 1310