Tekst adventures
een bericht van Henri Derksen

Open reply on AcoNet_Algemeen (ACO.ALG.ALGEMEEN) 
dated Thu. 30 Dec 2004, 17:41:05
From:    Henri Derksen
To:      Janny Looyenga
Subject: Tekstadventures, was: Geen verbroken verbinding meer.

Hoi Janny en anderen,

Even oude mail beantwoorden:

In een bericht van donderdag 24 Oct 2002, 23:07:42,
op area AcoNet_Algemeen (ACO.ALG.ALGEMEEN),
over het onderwerp: Re: Geen verbroken verbinding meer.
schrijft Janny Looyenga aan Scavenger Foxie:

JL> *Nostalgia8(.org) staat er gekleurd op dit keer*
JL> en is op zoek naar Nederlandse tekstadventures (oude en nieuwe)!

Al sinds 30 oktober 2002 02:30 uur staat het onderstaande BBC Basic adventure 
spel te wachten om naar jou gezonden te worden, naar aanleiding van een 
vraagje ooit in AcoNet Algemeen  (zie het AcoNet archief op BBC CD4 ;-).
Zoals je ziet, wat in het vat zit verzuurt niet ;-).

Save het stuk tekst met regelnummers uit dit bericht, en type *Basic.
Type daarna *EXEC "tekstbestandsnaam"
en de regels worden naar BBC Basic geconverteerd.
Type daarna SAVE "Moord" en je hebt een werkend spel op disk/tape staan.
Het werkt op alle Acorn 8 bits en 26/32 bits RISC OS systemen,
zelfs onder emulatoren.
Als je het plattegrondje onderaan even uittekent en/of uitprint,
dan kun je je beter ori"enteren tijdens het spelen van het spel.
Ik heb het in mijn Acorn BBC beginnerstijd in maart 1984 uit een tijdschrift 
ingetypt, naar BBCbasic2 vertaald en op een audiocassette gesaved.
Als ik het nog eens zou moeten doen, dan had ik het veel gestructuureerder,
d.w.z. zonder goto's en veel compacter gemaakt.
Ik heb nu alleen even hier en daar een regel met een : ertussen gevoegd voor 
de duidelijkheid.

 1000 REM filename "Moord" BBC B
 1010 REM Cassette    HDC 02
 1020 REM Tellerstand 060-076
 1030 REM spel moord in een flatgebouw
 1040 PROCinitialisatie :MODE 7:CLS
 1050 REPEAT
 1060   PROCinvoer
 1070   PROCverwerking
 1080   PROCuitvoer
 1090   UNTIL wond>5 OR p(killer)<=0
 1100 PRINT CHR$(136);"U DOODDE DE MOORDENAAR"
 1110 PRINT CHR$(136);"GEFELICITEERD"
 1120 END
 1125:
 1130 DEF PROCinvoer:*************
 1140 REPEAT INPUT "Wat wilt u? "k$:UNTILk$<>" "
 1150 len=LEN k$
 1160 ihand=0: nkam=0
 1170 REM verplaatsen
 1180 fnd=FALSE
 1190 FOR i = 1 TO 6
 1200   IF fnd THEN GOTO 1250
 1210   IF LEFT$(t$(i),len)<>k$ THEN GOTO 1250
 1220   nkam=k(kam,i)
 1230   IF nkam<>0 THEN fnd=TRUE:GOTO 1250
 1240   PRINT "daar kunt u niet heen!!"
 1250   NEXT i
 1260 IF fnd THEN ENDPROC
 1270 REM handelingen
 1280 fnd=FALSE
 1290 FOR i = 7 TO 13
 1300   IF LEFT$(t$(i),len)=k$ THEN ihand=i:fnd=TRUE
 1310   NEXT i
 1320 IF fnd THEN ENDPROC
 1330 PRINT "ik begrijp u niet"
 1340 ENDPROC
 1345:
 1350 DEF PROCuitvoer:************
 1360 IF ihand=0 THEN PRINT "U ging ";k$
 1370 verdnr=INT((kam-1)/9)+1
 1380 kamnr=kam-9*(verdnr-1)
 1390 IF (li=0) AND (lil=0) THEN kamnr=10
 1400 PRINT "U bent in een ";r$(kamnr)
 1410 PRINT "op de ";e$(verdnr);" verdieping"
 1420 FOR i = 1 TO 6
 1430   IF k(kam,i)<>0 THEN PRINT "U kunt naar ";t$(i)
 1440   NEXT i
 1450 IF ivoor<>0 THEN PRINT "Er ligt hier een ";v$(ivoor)
 1460 IF ipers<>0 THEN PRINT "Een ";p$(ipers);" is in de kamer"
 1470 PRINT SPC(15);"***"
 1480 ENDPROC
 1485:
 1490 DEF PROCverwerking:*********
 1500 IF nkam<>0 THEN kam=nkam
 1510 ivoor=0
 1520 fnd=FALSE
 1530 FOR i = 1 TO 10
 1540   IF fnd THEN GOTO 1560
 1550   IF v(i)=kam THEN ivoor=i:fnd=TRUE
 1560   NEXT i
 1570 ipers=0
 1580 fnd=FALSE
 1590 FOR i = 1 TO 5
 1600   IF fnd THEN GOTO 1620
 1610   IF p(i)=kam THEN ipers=i:fnd=TRUE
 1620   NEXT i
 1630 IF p(4)<>kam THEN GOTO 1750
 1640 REM dief
 1650 IF RND(1)>.5 THEN GOTO 1750
 1660 PRINT "U wordt door iemand op de grond"
 1670 PRINT "geworpen"
 1680 IF RND(1)>.5 THEN GOTO 1750
 1690 PRINT "Hij verdwijnt door een deur"
 1700 p(ipers)=INT(9*(verdnr+RND(1)-1))+1:ipers=0
 1710 IF ibez<2 THEN GOTO 1750
 1720 ibez=ibez-1:v(b(ibez))=INT(RND(1)*18)+1
 1730 lil=0
 1740 PRINT "Volgens mij mist u iets"
 1750 REM handelingen
 1760 IF ihand=0 THEN GOTO 2730
 1770 REM help
 1780 IF ihand<>7 THEN GOTO 1840
 1790 PRINT "Mogelijke handelingen: "
 1800 FOR i = 1 TO 13
 1810   PRINT t$(i)
 1820   NEXT i
 1830 GOTO 2730
 1840 REM pak
 1850 IF ihand<>8 THEN GOTO 1970
 1860 IF ivoor=0 THEN PRINT "er valt hier niets te pakken ":ENDPROC
 1870 PRINT "ik pak de ";v$(ivoor);" voor u"
 1880  b(ibez)=ivoor
 1890 ibez=ibez+1
 1900 IF ivoor<>9 THEN GOTO 1940
 1910 PRINT "Hierop ziet u hoe de moordenaar"
 1920 PRINT "iemand doodsteekt"
 1930 PRINT "De moordenaar is de ";p$(killer)
 1940 v(ivoor)=0
 1950 ivoor=0
 1960 GOTO 2730
 1970 REM doodt
 1980 IF ihand<>9 THEN GOTO 2360
 1990 IF ipers=0 THEN PRINT "hier kunt u alleen de tijd doden":ENDPROC
 2000 PRINT "Wilt u de ";p$(ipers);" doden?"
 2010 PRINT "Uw slachtoffer lijkt dit aan te voelen"
 2020 IF RND(1)>.7 THEN GOTO 2100
 2030 PRINT "Hij trekt een groot mes"
 2040 IF RND(1)>.8 THEN GOTO 2100
 2050 PRINT "en steekt toe. U bloedt !!"
 2060 wond=wond+1
 2070 IF wond>5 THEN ENDPROC
 2080 PRINT "Ik schat dat u nog ";5-wond;" van deze"
 2090 PRINT "wonden kunt overleven"
 2100 INPUT "Zou je er niet van af zien? ja/nee ";j$
 2110 IF j$="ja" THEN GOTO 2730
 2120 PRINT "Ik begin hem te wurgen"
 2130 SOUND 0,-7,1,10
 2140 PRINT "Hij loopt blauw aan"
 2150 sterf=sterf+1
 2160 IF sterf<5 THEN GOTO 2220
 2170 PRINT "Uw slachtoffer is zojuist overleden"
 2180 sterf=0
 2190 p(ipers)=-kam
 2200 ipers=0
 2210 GOTO 2730
 2220 IF RND(1)<.8 THEN GOTO 2040
 2230 PRINT "Hij rukt zich los"
 2240 rich=INT(RND(1)*4)+1
 2250 IF k(kam,rich)<>0 THEN GOTO 2320
 2260 PRINT "In paniek loopt hij door het raam"
 2270 SOUND 0,-15,1,100
 2280 PRINT "en valt te pletter"
 2290 sterf=0
 2300 p(ipers)=0:ipers=0
 2310 GOTO 2730
 2320 PRINT "En ontsnapt door een deur"
 2330 p(ipers)=k(kam,rich)
 2340 ipers=0
 2350 GOTO 2730
 2360 REM bezit
 2370 IF ihand<>10 THEN GOTO 2440
 2380 IF ibez<2 THEN PRINT "U bezit alleen wat u aan heeft":ENDPROC
 2390 PRINT "U bezit het volgende:"
 2400 FOR i = 1 TO ibez-1
 2410   PRINT v$(b(i))
 2420   NEXT i
 2430 GOTO 2730
 2440 REM verbind
 2450 IF ihand<>11 THEN GOTO 2580
 2460 javerb=0
 2470 FOR i = 1 TO ibez-1
 2480   IF b(i)=4 THEN javerb=i:i=ibez-1
 2490   NEXT i
 2500 IF javerb=0 THEN PRINT "Dat gaat niet zonder verband":ENDPROC
 2510 PRINT "Nou, nou, dat ziet er niet al te"
 2520 PRINT "best uit"
 2530 PRINT "Dat gaat u de hele voorraad kosten"
 2540 wond=0
 2550 v(4)=INT(RND(1)*45)+1
 2560 b(javerb)=10
 2570 GOTO 2730
 2580 REM lamp aan
 2590 IF ihand<>12 THEN GOTO 2690
 2600 jal=0
 2610 FOR i = 1 TO ibez-1
 2620   IF b(i)=6 THEN jal=1: i=ibez
 2630   NEXT i
 2640 IF jal=0 THEN PRINT "Dat gaat niet zonder lantaarn":ENDPROC
 2650 PRINT "De lantaarn is aan"
 2660 lil=1
 2670 REM lamp uit
 2680 GOTO 2730
 2690 IF ihand<>13 THEN GOTO 2730
 2700 IF lil=0 THEN PRINT "De lantaarn was al uit"
 2710 IF lil=1 THEN PRINT "De lantaarn is uit"
 2720 lil=0
 2730 REM deuren sluiten
 2740 IF p(1)<=0 THEN GOTO 2840
 2750 de=INT(RND(1)*4)+1
 2760 IF k(p(1),de)=0 THEN GOTO 2840
 2770 PRINT "Er zit iemand aan de deur te "
 2780 PRINT "morrelen op de ";e$(INT((p(1)-1)/9)+1);" verdieping"
 2790 IF RND(1)<.7 THEN GOTO 2840
 2800 SOUND 0,-15,1,10
 2810 PRINT "Die zit dicht"
 2820 k(p(1),de)=0
 2830 p(1)=INT(RND(1)*45)+1
 2840 REM licht
 2850 ron=ron+1
 2860 IF ron<wis THEN GOTO 2900
 2870 wis=10+INT(RND(1)*10):ron=0
 2880 IF li=0 THEN PRINT "Het licht gaat weer aan":li=1:GOTO 2900
 2890 IF li=1 THEN PRINT "Het licht valt uit":PRINT "Veel kunt u niet meer 
zien":li=0
 2900 IF lil=0 THEN ENDPROC
 2910 bat=bat-1
 2920 IF bat=10 THEN PRINT "Het licht van uw lantaarn wordt zwakker"
 2930 IF bat=5 THEN PRINT "Uw lantaarn geeft niet meer licht dan een kaars"
 2940 IF bat=1 THEN PRINT "Uw lantaarn heeft het begeven":lil=0
 2950 ENDPROC
 2955:
 2960 DEF PROCinitialisatie:********
 2970 DIM k(45,6),t$(13),p(5),p$(5),v(10),v$(10),b(10),e$(5),r$(10)
 2980 kam=INT(RND(1)*45)+1
 2990 fnd=FALSE
 3000 killer=INT(RND(1)*5+1):wond=0:sterf=0
 3010 ibez=1:ron=0
 3020 li=1:lil=0:wis=30:bat=50
 3030 REM verbindingen kamers***
 3040 FOR i = 1 TO 45
 3050   k(i,1)=i+1:k(i,2)=i-1:k(i,3)=i+3:k(i,4)=i-3
 3060   NEXT i
 3070 REM middendeel*****
 3080 FOR i = 5 TO 41 STEP 9
 3090   k(i,5)=i+9:k(i,6)=i-9
 3100   NEXT i:k(5,6)=0:k(41,5)=0
 3110 REM zijkanten dicht**
 3120 FOR j = 0 TO 36 STEP 9
 3130   FOR i = 0 TO 2
 3140     k(j+i*3+1,2)=0:k(j+i*3+3,1)=0:k(j+i+1,4)=0:k(j+i+7,3)=0
 3150     NEXT i
 3160   NEXT j
 3170 REM vullen strings*******
 3180 FOR i = 1 TO 13 :READ t$(i): NEXT i
 3190 FOR i = 1 TO 10 :READ v$(i): v(i)=INT(RND(1)*45)+1: NEXT i
 3200 v(10)=0
 3210 FOR i = 1 TO 5 :READ p$(i): p(i)=INT(RND(1)*45)+1: NEXT i
 3220 FOR i = 1 TO 5 :READ e$(i): NEXT i
 3230 FOR i = 1 TO 10 :READ r$(i): NEXT i
 3240 ENDPROC
 3245:
 3250 DATA oost,west,noord,zuid,trap op,trap af,help,pak,doodt
 3260 DATA bezit,verbind,lamp aan,lamp uit
 3270 DATA asbak,sleutel,broek,verband,krant,lamp,stok,lijk,foto,rommel
 3280 DATA portier,bokser,student,dief,melkboer
 3290 DATA eerste,tweede,derde,vierde,vijfde
 3300 DATA woonkamer,eetkamer,keuken,slaapkamer,hal,bijkeuken,studeerkamer
 3310 DATA logeeerkamer,bergruimte,donkere kamer

Indeling verdieping:
 ____________________________
|         |        |         |
| studeer | logeer | berg    |
| kamer   / kamer  / ruimte  |
|         |        |         |
|----/----|---/----|----/----|
|         |        |         |       N
| slaap   | hal    | bij     |     W   O
| kamer   / trap   / keuken  |       Z
|         |        |         |
|----/----|---/----|----/----|
|         |        |         |
| woon    | eet    | keuken  |     / = deur
| kamer   / kamer  /         |
|_________|________|_________|


Veel plezier ermee.
Tot weder-mails/-ziens,

MvGr. |_|
      | |enri.

--- WimpLink 1.05p
 * Origin: De 8-bitters doen het nog goed, UniCorn BBS (77:8500/504.1)
SEEN-BY: 8500/504