init: CLS : CLEAR : TROFF: ON ERROR GOTO fel handling: PRINT "Du „r en rymdpilot p† rymdskeppet Voyager. P† en resa mellan tv† planeter" PRINT "havererade rymdskeppet och du var den ende som lyckades r„dda dig." PRINT "N”dkapseln landade p† den n„rmaste rymdbasen den kunde hitta" PRINT "- en nedlagd tankningsstation." PRINT "Nu sitter du i n”dkapseln en bit v„ster om stationen." initiera: DIM komm$(17), rum(18, 4), io(2), sak$(7), sak(7) FOR a = 1 TO 17: READ komm$(a): NEXT a FOR a = 1 TO 18 FOR b = 1 TO 4 READ rum(a, b) NEXT b NEXT a FOR c = 1 TO 7 READ sak$(c), sak(c) NEXT c rum = 1: verb$ = "titta" GOTO kommando kommando: order$ = "": verb$ = "": substantiv$ = "": b = 0 INPUT ">", order$ order$ = LCASE$(order$) IF order$ = "" GOTO kommando IF MID$(order$, 1, 1) = " " THEN GOTO kommando b = 0 FOR a = 1 TO LEN(order$) IF MID$(order$, a, 1) = " " THEN verb$ = (LEFT$(order$, a - 1)) substantiv$ = (MID$(order$, a + 1)) b = 1 GOTO gruff END IF NEXT a gruff: IF b = 0 THEN verb$ = order$ FOR a = 1 TO 17 IF verb$ = komm$(a) THEN ON a GOSUB go, go, go, go, anvand, ta, slapp, titta, hjalp, om, sluta, undersok, inventera, inventera, save, load, nytt NEXT a PRINT "Kommandot finns inte i verblistan" GOTO kommando handelse: IF sak(3) = 7 AND sak(5) = 7 THEN PRINT "R†ttan snappar †t sig maten och kilar in i ett ventilationsr”r." sak(3) = -1: sak(5) = -1: sak(1) = 7 END IF IF sak(2) = 17 AND io(2) = 0 THEN PRINT "Tanken rullar fram till br„nsleomvandlaren och fyller sig med br„nsle." PRINT "Efter n†gra minuter visar br„nslem„taren p† gr”nt." io(2) = 1 END IF IF rum > 12 AND sak(4) <> 0 THEN PRINT "Efter n†gra sekunder b”rjar du f† ont om luft. Du springer tillbaka till" PRINT "luftslussen men hinner inte fram utan faller ner d”d p† marken." GOTO dod END IF IF rum = 18 AND sak(2) = 0 THEN PRINT "P† v„gen upp blir du tvungen att l„mna kvar tanken, som rullar tillbaka" PRINT "till grottmynningen och stannar d„r." sak(2) = 16 END IF GOTO kommando ' **********kommandon******** go: b = rum(rum, a) IF rum = 1 AND b = 10 THEN PRINT "Du bereder dig p† att kv„vas till d”ds, och sedan ”ppnar du d”rren" PRINT "- och uppt„cker att du „r inne i stationen. Du har kommit in levande." END IF IF rum = 10 AND b = -1 THEN PRINT "Det „r bara on”digt att kl„mma sig in i n”dkapseln igen." GOTO kommando END IF IF rum = 2 AND b = 4 AND io(1) = 0 THEN PRINT "D”rren fungerar inte, det KAN ju bero p† att det inte finns n†gon str”m." GOTO kommando END IF IF rum = 5 AND b = 8 AND sak(1) <> 0 THEN PRINT "D”rren „r l†st." GOTO kommando END IF IF rum = 8 AND b = 5 AND sak(1) <> 0 THEN PRINT "D”rren „r l†st." GOTO kommando END IF IF b = 0 THEN PRINT "Du kan inte g† dit." GOTO kommando END IF rum = b GOTO titta titta: ON rum GOSUB 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18 d = 0 PRINT "Du ser:" FOR c = 1 TO 7 IF sak(c) = rum THEN PRINT sak$(c) d = 1 END IF NEXT c IF d = 0 THEN PRINT "ingenting s„rskilt" IF verb$ = "titta" GOTO kommando IF verb$ <> "titta" GOTO handelse 1 PRINT "Du sitter inkl„md i n”dkapseln n†gra meter v„ster om rymdbasen." PRINT "Det „r inte l„tt att se n†got h„r, eftersom du har kn„na upptryckta i ansiktet." RETURN 2 PRINT "Du st†r i en korridor som forts„tter norrut. S”derut ligger 'hamnen'.P† d”rrarna" PRINT "v„sterut och ”sterut st†r det 'STR™M' med stora bokst„ver." RETURN 3 PRINT "Du „r i reservstr”msrummet. Det sitter en knapp p† v„ggen. Det st†r ett stort" PRINT "oljeaggregat i rummet m„rkt 'reservstr”m, anv„nds endast i n”dfall'." RETURN 4 PRINT "Du st†r i norra „nden p† korridoren. En luftsluss g”r att det faktiskt g†r att forts„tta" PRINT "norrut, men d† beh”ver du en vakumdr„kt. V„sterut finns n†got som ser ut" PRINT "som en restaurang. Genom f”nstren g†r det n„tt och j„mt att se ett berg." RETURN 5 PRINT "Du st†r i ett rum med ett enormt betongblock. Du undrar vad det „r, tills du" PRINT "f†r syn p† en gul skylt med texten 'VARNING, havererat k„rnkraftverk," PRINT "risk f”r radioaktivitet'." PRINT "Det finns en d”rr m„rkt 'LAGER' s”derut och utg†ngen „r v„sterut." RETURN 6 PRINT "Du „r i en restaurang. Det „r dammigt ”verallt, och det „r kvargl”md mat p†" PRINT "borden. Maten luktar rutten." PRINT "Toaletterna ligger norrut. Utg†ngen ligger ”sterut och v„sterut finns det en" PRINT "d”rr m„rkt 'Mattillverkning, endast f”r anst„llda'." RETURN 7 PRINT "Du „r p† toa. H„r luktar det v„rre „n i restaurangen. Utg†ngen ligger" PRINT "s”derut." IF sak(5) = 7 THEN PRINT "Det st†r en r†tta p† golvet ovanp† en nyckel. Den ser hungrig ut." RETURN 8 PRINT "Du „r i lagret. Det finns inte mycket viktigt h„r, bortsett fr†n n†gra" PRINT "vakumdr„kter som „r upptravade i ett h”rn." RETURN 9 PRINT "Du st†r mitt i vad man skulle kunna beskriva som en enorm bondg†rd" PRINT "All aktivitet „r naturligtvis avstannad, och v„xterna h†ller p† att vissna." RETURN 10 PRINT "Du st†r p† den enorma landningsplattan p† rymdstationen. Ett kvargl”mt rymdskepp" PRINT "st†r parkerat ett tiotal meter s”derut." PRINT "Norrut g†r en korridor l„ngre „n du kan se." RETURN 11 PRINT "Du st†r i maskinrummet p† Titanic." PRINT "Det h„nger en skylt p† v„ggen. P† skylten st†r det: 'l„mna tanken h„r'." RETURN 12 PRINT "Du st†r i f”rarhytten p† rymdskeppet 'Titanic'." PRINT "Det finns en skeppsdator h„r och en d”rr v„sterut m„rkt 'maskinrum'." PRINT "Utg†ngen ligger norrut." RETURN 13 PRINT "Du st†r norr om rymdstationen. Vraket efter ditt rymdskepp 'Voyager' ligger" PRINT "en bit v„sterut. ™ster om dig ser du ett berg." RETURN 14 PRINT "Du „r i vraket efter 'Voyager'.Det ligger bitar utspridda s† l†ngt du kan se." IF sak(2) = rum THEN PRINT "Det enda som har klarat sig „r skeppets br„nsletank." PRINT "Basen ligger l†ngt ”sterut" RETURN 15 PRINT "Du st†r vid foten av ett berg." PRINT "Otroligt nog g†r det en v„g s”derut uppf”r berget." PRINT "Rymdbasen ligger v„sterut." RETURN 16 PRINT "Du har tagit dig halvv„gs uppf”r berget. V„gen sv„nger ”sterut in i en" PRINT "grotta, men det g†r att ta sig vidare s”derut till toppen." RETURN 17 PRINT "Du st†r i en grotta med en br„nsleomvandlare i ena „nden. Det sitter en skylt" PRINT "h„r: 'L„mna br„nsletanken h„r, s† fyller den p† sig sj„lv.'" PRINT "Det h„r „r tydligen „ven en br„nslep†fyllningsstation f”r rymdskepp." RETURN 18 PRINT "Du har tagit dig upp till toppen p† berget, som „r en vulkan (inte aktiv, som" PRINT "tur „r). Det finns inget s„rskilt h„r, utom att bergv„ggen norrut ner till" PRINT "v„gen „r mycket mer l„ttframkomlig „n de andra sidorna. I sj„lva verket" PRINT "skulle det aldrig g†tt att ta sig upp fr†n n†got annat h†ll." RETURN anvand: FOR a = 1 TO 7 IF substantiv$ = sak$(a) AND sak(a) = rum THEN GOTO okej IF substantiv$ = sak$(a) AND sak(a) = 0 THEN GOTO okej NEXT a PRINT "Den finns inte h„r." GOTO handelse okej: IF a < 6 THEN PRINT "Du beh”ver inte anv„nda den, den fungerar „nd†." GOTO handelse END IF IF a = 6 AND io(1) = 0 THEN PRINT "Du trycker in knappen och motorn b”rjar f”ra ett himla v„sen. Efter n†gra" PRINT "sekunder t„nds alla lamporna och motorn l†ter inte lika mycket" PRINT "(Om det nu inte beror p† att du har blivit d”v av ov„sendet.)" io(1) = 1 GOTO handelse END IF IF a = 6 AND io(1) = 1 THEN PRINT "Motorn „r redan ig†ng." GOTO handelse END IF IF a = 7 AND sak(2) = 11 AND io(2) = 1 THEN GOTO succe IF a = 7 THEN PRINT "Datorn skriver ut ett felmeddelande:" PRINT "Fel-ingen br„nsletank eller inget br„nsle i tanken." PRINT "Felkod 66." GOTO handelse END IF GOTO handelse ta: FOR a = 1 TO 7 IF sak(a) = rum AND substantiv$ = sak$(a) THEN GOTO okej2 IF sak(a) = 0 AND substantiv$ = sak$(a) THEN PRINT "Du har den redan" GOTO handelse END IF NEXT a PRINT "Den finns inte h„r." GOTO handelse okej2: IF a > 4 THEN PRINT "Du kan inte ta den!" GOTO handelse END IF sak(a) = 0 PRINT "Du tar "; substantiv$; "." GOTO handelse slapp: IF substantiv$ = "mig" OR substantiv$ = "dig" THEN PRINT "PRRR™™™™! D”g det?" GOTO handelse END IF FOR a = 1 TO 4 IF sak$(a) = substantiv$ AND sak(a) = 0 THEN GOTO okej3 NEXT a PRINT "Du har den inte!" GOTO handelse okej3: sak(a) = rum PRINT "Du sl„pper "; substantiv$; "." GOTO handelse undersok: FOR a = 1 TO 7 IF substantiv$ = sak$(a) AND sak(a) = 0 THEN GOTO okej4 IF substantiv$ = sak$(a) AND sak(a) = rum THEN GOTO okej4 NEXT a PRINT "Den finns inte h„r." GOTO handelse okej4: ON a GOSUB a1, a2, a3, a4, a5, a6, a7 GOTO handelse a1: PRINT "Det „r en vanlig nyckel som man l†ser och l†ser upp d”rrar med." RETURN a2: PRINT "Det „r en sj„lvg†ende br„nsletank med ett litet datachip som kontrollerar den." IF io(2) = 0 THEN PRINT "Br„nslem„taren st†r p† r”tt." IF io(2) = 1 THEN PRINT "Br„nslem„taren st†r p† gr”nt." RETURN a3: PRINT "Maten „r m”glig och luktar pyton." RETURN a4: PRINT "Det „r en fullt fungerande rymddr„kt med en koldioxidomvandlare som g”r att" PRINT "man praktiskt taget kan befinna sig i vakuum hur l„nge som helst." RETURN a5: PRINT "Det „r en stor, stinkande sopr†tta, f”rmodligen den enda levande varelsen h„r" PRINT "f”rutom dig sj„lv. R†ttan st†r och vaktar en nyckel" RETURN a6: PRINT "Knappen „r on”digt stor, r”d och m„rkt 'Reservstr”m'." RETURN a7: PRINT "Datorn „r ig†ng och, hur otroligt det „n verkar, s† fungerar den!" RETURN inventera: d = 0 PRINT "Du b„r p†:" FOR c = 1 TO 7 IF sak(c) = 0 THEN PRINT sak$(c) d = 1 END IF NEXT c IF d = 0 THEN PRINT "ingenting s„rskilt" GOTO kommando hjalp: PRINT "Spelet g†r ut p† att du ska ta dig fr†n basen p† n†got s„tt." PRINT "Du skriver in kommandona enligt principen VERB SUBSTANTIV-eller bara VERB." PRINT "Exempel:anv„nd knappen, titta" PRINT "De verb du kan anv„nda „r:" PRINT "anv„nd,ta,sl„pp,titta,inventera(kan f”rkortas med i), hj„lp,om och sluta." PRINT "Du f”rflyttar dig genom att skriva ett v„derstrecks begynnelsebokstav" PRINT "(nord,syd,v„st och ost blir nsvo.)" GOTO kommando om: PRINT "Detta spel „r programmerat av Anders H„llzon med Microsoft QuickBasic" PRINT "Det „r"; : COLOR 26: PRINT " freeware!"; : COLOR 7: PRINT " Men det vore kul med en kommentar om spelet." PRINT "Skicka den i s† fall till min E-mailadress:"; : COLOR 9: PRINT " hellzon@hotmail.com": COLOR 7 GOTO kommando save: OPEN "space.sav" FOR OUTPUT AS 1 PRINT #1, rum, io(1), io(2) FOR g = 1 TO 7 PRINT #1, sak(g) NEXT g PRINT "Sparat!" CLOSE 1 GOTO kommando load: OPEN "space.sav" FOR INPUT AS 1 INPUT #1, rum, io(1), io(2) FOR g = 1 TO 7 INPUT #1, sak(g) NEXT g PRINT "Laddat!" CLOSE 1 verb$ = "titta" GOTO titta nytt: INPUT "Vill du starta om spelet? (j/n)>", a$ IF LCASE$(a$) = "j" GOTO init IF LCASE$(a$) = "n" GOTO kommando GOTO nytt sluta: INPUT "Vill du avsluta det h„r roliga spelet? (j/n)>", a$ IF LCASE$(a$) = "j" GOTO slut IF LCASE$(a$) = "n" GOTO kommando GOTO sluta dod: INPUT "Du dog. Vill du f”rs”ka igen? (j/n)>", a$ IF LCASE$(a$) = "j" GOTO init IF LCASE$(a$) = "n" GOTO slut GOTO dod succe: PRINT "Rymdskeppet fungerar. Motorerna g†r ig†ng och skeppet lyfter fr†n" PRINT "startplattan. Du programmerar in kursen till n„rmaste bebodda planet," PRINT "lutar dig bak†t i s„tet och ser ut genom vindrutan n„r skeppet rusar in" PRINT "i hyperrymden. G”tt, du har klarat spelet." SLEEP succe2: INPUT "Grattis! Vill du spela en g†ng till?", a$ IF LCASE$(a$) = "j" GOTO init IF LCASE$(a$) = "n" GOTO slut GOTO succe2 datasatser: DATA n,s,v,o,anv„nd,ta,sl„pp,titta,hj„lp,om,sluta,unders”k,inventera,i,spara,ladda,nytt DATA 0,0,0,10,4,10,3,5,0,0,0,2,13,2,6,0,0,8,2,0 DATA 7,0,9,4,0,6,0,0,5,0,0,0,0,0,0,6,2,12,-1,0 DATA 0,0,0,12,10,0,11,0,0,4,14,15,0,0,0,13,0,16,13,0 DATA 15,18,0,17,0,0,16,0,16,0,0,0 DATA nyckeln,-1,br„nsletanken,14,maten,6,vakumdr„kten,8,r†ttan,7,knappen,3,skeppsdatorn,12 slut: CLS : TROFF: CLEAR : END fel: PRINT "Du har inte sparat." RESUME kommando