KEY OFF: SCREEN 0: WIDTH 40: COLOR 0, 6: CLS DIM S$(14), SP(14), VS(4, 4), V$(8) 'F”ljande del av programmet „r den som hanterar kartan. Om du k”r 'programmet kan du g† mellan rummen och se sakerna som finns utplacerade. 'Rummen, sakerna och verben som man kan anv„nda har nummer efter deras 'ordningsf”ljd i DATA-raderna i slutet av programmet. ' ŚÄÄÄÄÄÄÄæ ŚÄÄÄÄÄÄÄæ ' ³ 3 ³ ³ 2 ³ Numrering av rummen ' ³Pirat- ĆÄÄ´ Sj”n ³ ' ³rummet ³ ³ ³ ' ĄÄÄÄĀÄÄÄŁ ĄÄÄÄĀÄÄÄŁ 1 N ' ³ ³ ³ ' ŚÄÄÄĮÄÄÄæ ŚÄÄÄĮÄÄÄæ Numrering av 4 V ÄÄÄÅÄÄÄ 2 ™ ' ³ 4 ³ ³ 1 ³ v„derstrecken ³ ' ³Dim- Ć/\´Flykt- ³ 3 S ' ³rummet ³ ³rummet ³ ' ĄÄÄÄÄÄÄÄŁ ĄÄÄÄÄÄÄÄŁ 'Titta p† de tv† f”rsta DATA-raderna i slutet av programmet. 'D„r finns de fyra grottrummen angivna och efter varje rum fyra tal. 'Talen „r numren p† de rum som man kommer till om man g†r †t norr, ”ster 's”der respektive v„ster. 0 betyder att man inte kan g† †t det h†llet. 'Rumsnamnen och omgivande rumsnummer l„ses in i de indexerade variablerna 'P$ och VS. Exempel: VS(3,2) „r numret p† rummet man kommer till om man fr†n 'rum nummer 3 g†r †t V„derStreck nummer 2 (”ster).) FOR I = 1 TO 4: READ P$(I), VS(I, 1), VS(I, 2), VS(I, 3), VS(I, 4): NEXT 'Sakerna som finns i de olika rummen skall l„sas in i variabeln S$. 'I DATA-raderna st†r efter varje sak numret p† rummet d„r saken finns '(sakplatsen). Ett negativt tal betyder att saken inte finns n„r spelet 'b”rjar eller att den „r osynlig. SakPlatsen l„ggs i variabeln SP. 'SP s„tts till 0 f”r saker man b„r med sig. 'Eftersom meningen G¸ N liknar meningen TA STEN (tv† ord varav det 'f”rsta „r ett verb) st†r v„derstrecken med i saklistan. FOR I = 1 TO 14: READ S$(I), SP(I): NEXT 'L„s in de †tta verben i variabeln V$. FOR I = 1 TO 8: READ V$(I): NEXT R = 1 'R=rummet d„r du „r, starta i rum nummer 1 B = -1 'Ingen bro ”ver klyftan 'H„r b”rjar programslingan, dvs den del av programmet som hela tiden upprepas. 'F”rst skrivs platsens namn, en lista p† vilka h†ll man kan g† †t, speciella 'upplysningar om vissa platser och en lista p† saker man ser. Att listorna 'slutar med komma „r inte s† snyggt, men vi bryr oss inte om det h„r. slingan: CLS : PRINT PRINT "DU ˇR "; P$(R) PRINT "DU KAN G¸ "; FOR I = 1 TO 4 IF VS(R, I) > 0 THEN PRINT S$(I); ", "; NEXT I PRINT : PRINT IF R = 1 THEN PRINT "H™GT OVANF™R DIG FINNS ETT H¸L I TAKET" IF R = 1 AND B = -1 THEN PRINT "I VˇSTER FINNS EN DJUP KLYFTA" IF R = 4 AND B = -1 THEN PRINT "I ™STER FINNS EN DJUP KLYFTA" IF R = 4 AND SP(12) = -1 THEN PRINT "DIMMA STR™MMAR UT GENOM ETT H¸L I VˇGGEN" 'Att SP(12) (guldets sakplats) „r -1 betyder att dimman finns kvar. 'N„rmast en uppr„kning vad man ser. Om SP f”r en sak „r lika med R, 'betyder det att saken „r i samma rum som man sj„lv, dvs man ska kunna se den. PRINT "DU SER "; G = 0 'flagga f”r funnen sak FOR I = 5 TO 14 IF SP(I) = R THEN PRINT S$(I); ", "; : G = 1 NEXT IF G = 0 THEN PRINT "INGENTING"; PRINT : PRINT 'ˇventyrsspel av Grottors typ har INPUT p† bara ett st„lle. 'Grottor tar bara tv†ordskommandon verb+substantiv (eller G¸+v„derstreck). 'Detta program anv„nder funktionen INSTR f”r att se om spelarens kommando 'b”rjar p† n†got av verben i verblistan. X „r numret p† verbet. slingan2: INPUT "VAD VILL DU G™RA? ", A$ IF A$ = "" THEN GOTO slingan2 IF A$ = "SLUTA" THEN END A$ = A$ + " " 'Mellanslag l„ggs efter kommandot, eftersom v„derstrecken omgivits av mellan- 'slag. Detta f”r att skilja N(orr) fr†n sakord som b”rjar p† N. FOR X = 1 TO 8 'S”k verbet bland de †tta till†tna. B$ = LEFT$(V$(X), 3) 'Kolla bara de tre f”rsta bokst„verna. IF INSTR(A$, B$) = 1 THEN EXIT FOR 'Hoppa ur slingan om verb p†tr„ffas. NEXT 'Om inget verb p†tr„ffats har X r„knats upp till 9. 'S”k substantiv/v„derstreck i kommandot: FOR Y = 1 TO 14 B$ = LEFT$(S$(Y), 3) IF INSTR(A$, B$) > 2 THEN EXIT FOR NEXT 'Y „r nummer p† sak som man angivit i sitt kommando. Y=15 om man inte 'angivit n†gon sak som finns i sak-listan. 'I denna del av programmet „r bara kollen av v„derstrecken intressant. 'N„r X och Y „r best„mda grenar sig programmet till olika rutiner f”r de 'olika verben. I det f”ljande finns bara G¸-rutinen med. ON X GOTO v1 PRINT "JAG F™RST¸R INTE '"; A$; "'": GOTO slingan2 v1: '=== G¸ === IF Y > 4 THEN GOTO slingan 'Har man angivit v„derstreck (1-4)? IF VS(R, Y) > 0 THEN R = VS(R, Y) 'S„tt nytt R om till†ten riktning GOTO slingan 'Varje rutin ger †terg†ng till slingan 'eller slingan2 DATA I FLYKT-RUMMET,2,0,0,0,VID EN UNDERJORDISK SJ™,0,0,1,3 DATA I PIRAT-RUMMET,0,2,4,0,I DIM-RUMMET,3,0,0,0 DATA " N ",-1," ™ ",-1," S ",-1," V ",-1 DATA STEN,1,FLASKA,3,FR™N,2,PALM,10,VATTEN,2,TROLLSTAV,3,SAND,3 DATA GULD,-1,SILVER,-1,DIAMANTER,-1 DATA G¸,TA,SLˇPPA,FYLLA,T™MMA,SˇTTA,SVˇNGA,KLˇTTRA