|
DataMuseum.dkPresents historical artifacts from the history of: CP/M |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about CP/M Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - download
Length: 9728 (0x2600) Types: TextFile Names: »ADVENTUR.E«
└─⟦eca9022c5⟧ Bits:30002661 Datalære sådan - løsningsdiskette └─ ⟦this⟧ »ADVENTUR.E«
0010 // dette er en demonstration af et eventyr-spil. Det er ikke 0020 // særligt genialt, men er typisk for det niveau, som kan opnås 0030 // i f.eks. en dataopgave med lidt hjælp. 0040 // programnavn: SPIL 0050 //------------------------------------------------------------- 0060 DIM beskr$(6,5) OF 60,kort(6,4),lokudstyr$(6,2) OF 20 0070 DIM vejkrav$(6,4) OF 20,taske$(4) OF 20 0080 // hjælpestørrelser: 0090 DIM retning$ OF 4,byt$ OF 1,hjælp$ OF 20,nødv$ OF 20,svar$ OF 1 0100 // 0110 EXEC spilforklaring 0120 EXEC startindlæsning 0130 // diverse startværdier: 0140 RANDOMIZE 0150 retning$:= "NØSV" 0160 vundet:= FALSE; harskat:= FALSE; skathjemme:= FALSE 0170 nr:= 1; glnr:= 1 0180 // 0190 REPEAT 0200 CLEAR 0210 FOR i:= 1 TO 5 DO 0220 PRINT beskr$(nr,i) 0230 NEXT i 0240 PRINT 0250 FOR vej:= 1 TO 4 DO 0260 IF kort(nr,vej)<>0 THEN PRINT "-og du kan her gå mod ";retning$(vej:vej) 0270 NEXT vej 0290 PRINT "På denne lokalitet findes følgende ting, der kan tages med:" 0300 PRINT lokudstyr$(nr,1)," og ",lokudstyr$(nr,2) 0320 FOR vej:= 1 TO 4 DO 0330 IF kort(nr,vej)<>0 THEN 0340 PRINT "For at gå mod ";retning$(vej:vej)," skal du have "; 0350 PRINT vejkrav$(nr,vej);" i din taske." 0360 ENDIF 0370 NEXT vej 0380 PRINT "(er der ikke nævnt noget krav, så er der fri passage)" 0400 EXEC opsamling 0410 hovsa:= RND(1,10) 0420 EXEC hændelse(hovsa) 0430 PRINT 0440 PRINT "Du skal nu vælge, hvilken vej du vil gå. Du har følgende mulige:" 0450 FOR vej:= 1 TO 4 DO 0460 IF kort(nr,vej)<>0 THEN PRINT " ";vej;" : mod ";retning$(vej:vej) 0470 NEXT vej 0480 REPEAT 0490 INPUT "tast NUMMER på den valgte vej: ": valg 0500 IF kort(nr,valg)=0 THEN PRINT "Umuligt! - vælg igen." 0510 FOR pause:= 1 TO 1000 DO 0520 NEXT pause 0530 UNTIL kort(nr,valg)<>0 0540 // 0550 nødv$:= vejkrav$(nr,valg) 0560 IF nødv$ IN taske$(1)+taske$(2)+taske$(3)+taske$(4) OR nødv$=" " THEN 0570 glnr:= nr 0580 nr:= kort(nr,valg) 0590 ELSE 0600 PRINT "Du har ikke det nødvendige udstyr til at komme den valgte vej" 0610 PRINT "og du må derfor forblive hvor du er! prøv igen" 0620 INPUT "-tast RETURN når du er klar:": svar$ 0630 ENDIF 0640 // er spillet vundet?: 0650 FOR i:= 1 TO 4 DO 0660 IF "skat" IN taske$(i) THEN harskat:= TRUE 0670 NEXT i 0680 IF harskat AND nr=1 THEN skathjemme:= TRUE 0690 IF skathjemme THEN 0700 CLEAR 0710 PRINT AT(20,12),"DU HAR VUNDET SPILLET OG ER NU STINKENDE RIG" 0720 ENDIF 0730 UNTIL skathjemme 0740 //------------------------------------------------------------------ 0750 // nu følger underprogrammerne: 0760 PROC spilforklaring 0770 CLEAR 0780 PRINT "Dette spil går ud på at drage til feernes hellige ø og hente" 0790 PRINT "en stor skat hjem igen derfra. Du har altså vundet spillet, når" 0800 PRINT "du har været på øen, fået fat i skatten og er kommet tilbage med" 0810 PRINT "den til dit startsted: den grønne eng." 0820 INPUT AT(20,10),"-tast RETURN når du er klar:": svar$ 0830 ENDPROC spilforklaring 0840 // 0850 // 0860 PROC startindlæsning 0870 FOR r:= 1 TO 6 DO 0880 FOR s:= 1 TO 5 DO 0890 READ beskr$(r,s) 0900 NEXT s 0910 NEXT r 0920 // 0930 FOR r:= 1 TO 6 DO 0940 FOR s:= 1 TO 4 DO 0950 READ kort(r,s) 0960 NEXT s 0970 NEXT r 0980 // 0990 FOR r:= 1 TO 6 DO 1000 FOR s:= 1 TO 2 DO 1010 READ lokudstyr$(r,s) 1020 NEXT s 1030 NEXT r 1040 // 1050 FOR r:= 1 TO 6 DO 1060 FOR s:= 1 TO 4 DO 1070 READ vejkrav$(r,s) 1080 NEXT s 1090 NEXT r 1100 // 1110 // taskens startudrustning: 1120 FOR r:= 1 TO 4 DO READ taske$(r) 1130 // 1140 ENDPROC startindlæsning 1150 // 1160 // 1170 PROC hændelse(hovsa) 1180 IF hovsa=1 OR hovsa=2 THEN 1190 PRINT "En drage styrtdykker, griber dig og bringer tilbage til den" 1200 PRINT "lokalitet, du kom fra. Det kan give problemer med dit udstyr!" 1210 nr:= glnr 1220 ENDIF 1230 // 1240 IF hovsa=3 OR hovsa=4 OR hovsa=5 THEN 1250 IF nr=6 THEN 1260 PRINT "DEN SOVENDE DRAGE ER VÅGNET!! - du må kæmpe mod den:" 1270 vundet:= FALSE 1280 IF "sværd" IN taske$(1)+taske$(2)+taske$(3)+taske$(4) THEN vundet:= TRUE 1290 IF vundet THEN 1300 PRINT "Da du har dit MAGISKE sværd overvinder du dragen. Du kan" 1310 PRINT "nu frit samle skatten op." 1320 ELSE 1330 PRINT "Du mangler nu dit magiske sværd - og du må flygte tilbage" 1340 PRINT "til floden i din gummibåd - uden at få skatten med dig!" 1350 PRINT "Skatten går nu for evigt tabt i flodens malstrøm!" 1360 FOR i:= 1 TO 4 DO 1370 IF "skat" IN taske$(i) THEN taske$(i):= " " 1380 NEXT i 1390 nr:= 3 1400 ENDIF 1410 ENDIF 1420 ENDIF 1430 // 1440 IF hovsa=6 OR hovsa=7 THEN 1450 PRINT "Du overraskes af uvejr og må grave dig ned i skjul mellem" 1460 PRINT "klippeblokkene for at redde dig." 1470 harskovl:= FALSE 1480 FOR i:= 1 TO 4 DO 1490 IF "skovl" IN taske$(i) THEN harskovl:= TRUE 1500 NEXT i 1510 IF harskovl THEN 1520 PRINT "Da du har taget en skovl med dig, klarer du problemerne" 1530 PRINT "og kan gå videre i spillet" 1540 ELSE 1550 PRINT "Da du desværre ingen skovl har med dig, bliver du af de frådende" 1560 PRINT "vandmasser og jordskred revet med ned ad bjergsiden. Du vågner" 1570 PRINT "nu fortumlet op på en grøn eng - er det der du startede fra?" 1580 nr:= 1 1590 ENDIF 1600 ENDIF 1610 ENDPROC hændelse 1620 // 1630 PROC opsamling 1640 PRINT 1650 PRINT "********* Nu kan du opsamle ting til din taske: *********" 1660 PRINT "Du har i øjeblikket følgende i din taske:" 1670 FOR i:= 1 TO 4 DO 1680 PRINT i," : ";taske$(i);" * "; 1690 NEXT i 1700 PRINT 1710 PRINT "på denne lokalitet ligger altså følgende:" 1720 PRINT " 1 : ";lokudstyr$(nr,1);" 2 : ";lokudstyr$(nr,2) 1730 PRINT 1740 INPUT "skal der byttes/opsamles noget? svar J eller N: ": byt$ 1750 IF byt$ IN "Jj" THEN 1760 REPEAT 1770 REPEAT 1780 INPUT "hvilket NUMMER fra tasken skal lægges: ": læg 1790 UNTIL læg<=4 AND 1<=læg 1800 REPEAT 1810 INPUT "hvilket NUMMER fra lokaliteten skal opsamles: ": ops 1820 UNTIL ops=1 OR ops=2 1830 hjælp$:= taske$(læg) 1840 taske$(læg):= lokudstyr$(nr,ops) 1850 lokudstyr$(nr,ops):= hjælp$ 1860 INPUT "ønskes flere opsamlinger? (svar J eller N): ": byt$ 1870 UNTIL byt$ IN "Nn" 1880 ENDIF 1890 ENDPROC opsamling 1900 //---------------------------------------------------------------- 1910 // Data til dette spil: 1920 DATA "Du står på en grøn eng. Mod Nord og Vest ligger der en dyb" 1930 DATA "afgrund. Mos Øst går en lille sti over mod en skov. Mod Syd" 1940 DATA "går en sti op ad et bjerg, hvis top er hyllet i tåge." 1950 DATA " I baggrunden brøler dragerne og spyr ild op mod dig." 1960 DATA " " 1970 // lok 2: 1980 DATA "Du trænger nu ind i en tæt skov, hvor du må gøre brug af din" 1990 DATA "økse for at komme frem." 2000 DATA "Mod nord har du stadig den dragefyldte afgrund." 2010 DATA "Fremad mod øst hører du de buldrende vandmasser fra en" 2020 DATA "stor flod, og mod syd skimtes de høje, kolde bjerge" 2030 // lok3: 2040 DATA "Du sejler nu ud på floden i din gummibåd. Floden er voldsomt" 2050 DATA "oprørt, og det er svært at se ret langt." 2060 DATA "Du føres af sted med strømmen mod syd, hvor en ø skimtes" 2070 DATA "i det fjerne. På vestbredden ses de skovklædte bredder, og" 2080 DATA "mod øst en ubestigelig stejl klippevæg." 2090 // lok 4: 2100 DATA "Du klatrer nu opad et stejlt bjergparti under brug af dit" 2110 DATA "reb. Et par drager fra afgrunden forsøger at klatre op" 2120 DATA "mod dig. Mod syd knejser en helt ufremkommelig bjergtop" 2130 DATA "og mod øst går terrænet over i et lavere højdedrag, der" 2140 DATA "til gengæld gennempiskes af en forrygende snestorm!" 2150 // lok 5: 2160 DATA "På dette isnende kolde højdedrag kan man kun overleve ved" 2170 DATA "at bygge en snehule og få tændt ild i en fart og afvente " 2180 DATA "snestormens ophør. Brug dit ildstål. Du kan skimte, at der" 2190 DATA "mod syd og øst er et stejlt fald ned til en flod, og mod nord" 2200 DATA "skimtes i snefoget en vildsom skov nede i dalen." 2210 // lok 6: 2220 DATA "Du står nu på den hellige Ø, hvor alfernes skat er begravet" 2230 DATA "under en stendysse. Hvis du er uheldig, kan du blive over-" 2240 DATA "faldet af den sovende drage, der vogter skatten - og hvis den " 2250 DATA "vågner må du dræbe den med dit sværd, der viser sig at være " 2260 DATA "MAGISK. Har du sværdet med? Ellers må du håbe den sover!" 2270 // 2280 // nu følger kortet: 2290 DATA 0,2,4,0 2300 DATA 0,3,5,1 2310 DATA 0,0,6,2 2320 DATA 1,5,0,0 2330 DATA 2,0,0,4 2340 DATA 3,0,0,0 2350 // lokudstyr: 2360 DATA "en økse","et sværd" 2370 DATA "et reb","en gummibåd" 2380 DATA "et anker","en fiskestang" 2390 DATA "en bjergkrystel","et ildstål" 2400 DATA "en hammer","en skovl" 2410 DATA "en madpakke","en skat" 2420 // vejkrav: 2430 DATA " ","en økse","et reb"," " 2440 DATA " ","en gummibåd","et reb"," " 2450 DATA " "," ","et anker","en økse" 2460 DATA "et reb","et ildstål"," "," " 2470 DATA "en økse"," "," "," " 2480 DATA " "," "," "," " 2490 // startindhold i taske: 2500 DATA "et spejl","en flaske whisky","en sutteklud","et tørklæde" «eof»