start tok64 d64-4MYfu5 100 REM program by jim butterfield 110 REM towers architecture by john stout 115 POKE 0,7 117 POKE 4,6 120 i=RND(-ti) 130 dn$="{down*10}" 140 DEFFNr(x)=INT(RND(1)*x)+1 150 PRINT"{clear}{142}{down}{space*5}grungy towers" 160 PRINT"{down}a murder has been "; 170 z$="committed at the towers.{space*2}your job,{space*2}superintendent, ":GOSUB 4000 180 z$="is to find the murderer.{down} ":GOSUB 4000 190 z$="check the alibis closely: the killer is sure to give ":GOSUB 4000 200 z$="himself away.{down}":GOSUB 3900 210 z$="hint: nobody ever suspects the real murderer.":GOSUB 3900 230 z$="playing hint:{space*2}name any room or person using ":GOSUB 4000 240 z$="three or more letters, e.g., 'liv' for living room.{down}":GOSUB 3900 270 DIMm$(25),r$(25),k$(4),y$(6) 271 DIMs(12),n$(12),c$(12),a$(12),b$(12),r%(12) 272 DIMw(12),x(12) 280 DATA shot with a antique pistol,stabbed with an oriental dagger 290 DATA strangled by a silken sash,clubbed with a brass candlestick 300 DATA mangled by a fallen chandelier,smothered with an ermine pillow 310 FORi=1TO6:READy$(i):NEXTi:y%=FNr(6) 320 DATA superintendent,inspector,sergeant,constable 330 FORi=1TO4:READk$(i):NEXTi:k%=1 340 FORi=1TO25:READr$(i):NEXT 350 DATAhall,living room,kitchen,dining room,billiard room,downstairs lav 360 DATAbathroom,master bedroom,nursery 370 DATAservant's quarters 380 DATAconservatory,terrace,stables,attics,laundry,library,music room,study 390 DATAboiler room,pantry,scullery 400 DATAfirst bedroom,second bedroom,third bedroom,fourth bedroom 410 FORi=1TO25:m$(i)="":NEXT 420 i=1 430 j=FNr(24)+1:IFm$(j)=""THENGOSUB3000:i=j:GOTO430 460 FORi=1TO25:IFm$(i)<>""THENNEXTi:GOTO500 470 j=FNr(25):IFm$(j)=""GOTO470 480 GOSUB3000:GOTO460 500 FORi=1TO12:READn$(i),c$(i),a$(i),b$(i) 510 NEXTi 520 FORi=1TO25:IFLEN(m$(i))>1GOTO560 530 FORj=i+1TO25:IFLEN(m$(j))>1GOTO550 540 GOSUB3000 550 NEXTj 560 NEXTi 562 PRINT"press any key to start." 563 GETz$:IFz$=""GOTO563 566 PRINT"{clear}":GOSUB2000 570 DATA fungus,butler,"sir, i'm afraid i know nothing.",most regrettable. 580 DATA mrs ramsbottom,cook,"don't know a thing, dearie.","isn't it awful?" 590 DATA bloggs,gardener,"well,guv,it{space*2}beats me.","it's a rum go" 600 DATA fifi,maid,"eet ees so surpriseeng!","how you say, scary.." 610 DATA cholmondely,colonel,"by jove!{space*2}awkward business, this.","bother!" 620 DATA lady throckmorton,dowager,"dear me..","it's very bad mannered" 630 DATArags,chauffeur,"don't know nothing, sir:","makes you think, don't it?" 640 DATA agatha fforbes-smythe,debutante,goodness!,"isn't it just awful?" 650 DATA tinsel,actress,"don't know a thing, darling.","how dramatic, though!" 660 DATA madame blinsky,countess,"i see nodink, my dear.",is very sinister 670 DATA frank n stone,doctor,"bad business, this.","don't like it at all" 680 DATA piggy fanshaw,twit,"i say, exciting, what?","jolly bad show, old man" 700 r%=FNr(24)+1 710 FORi=1TO12:w%=FNr(25) 720 x%=FNr(25):IFx%=r%GOTO720 730 w(i)=w%:x(i)=x%:NEXTi 740 GOSUB2000:m%=FNr(12):x(m%)=0:x=r% 750 g%=FNr(3):ONg%GOTO780,810 760 FORi=1TO11:x=x(i):FORj=i+1TO12:IFx=x(j)GOTO810 770 NEXTj,i:g%=1 780 z%=1:x=FNr(25):FORi=1TO12:IFx(i)=xGOTO810 790 NEXTi 800 z%=FNr(12):IFm%=z%GOTO800 810 x(m%)=-x:GOSUB2000:FORi=1TO12 820 s(i)=FNr(12):NEXTi 830 GOSUB2080:r=1:PRINT"{clear}" 840 PRINT "you are ";:x=r:GOSUB 3500:z$=r$:GOSUB 3900 850 PRINT:FORi=1TO12:IFw(i)<>rGOTO1020 860 z$=n$(i)+",the "+c$(i)+", is here.{space*2}":GOSUB 4000 870 z$="the "+c$(i)+" says:":GOSUB 4000 875 z$="'"+a$(i)+"{space*2}":IF r%(i)>0 THEN z$="'i already told you:{space*2}" 880 r%(i)=1:GOSUB4000:z$="i was ": 882 x=ABS(x(i)):GOSUB 3400:z$=z$+r$ 890 z$=z$+"at the time ":GOSUB4000 900 IFi=m%ANDz%=0GOTO960 910 z$="":w$="with the ":FORj=1TO12:IFi=jGOTO930 920 IF x<>x(j) GOTO 930 921 IF z$<>"" THEN z$=z$+" ":GOSUB 4000:w$="and the " 922 z$=w$+c$(j) 930 NEXTj 940 IF z$<>"" THEN z$=z$+".{space*2}":GOSUB 4000:GOTO 970 950 IFi=m%ANDz%>0THENz$=w$+c$(z%)+".{space*2}":GOSUB4000:GOTO970 960 z$="by myself.{space*2}":GOSUB4000 970 s%=s(i):IFs%=m%THENz$="maybe it was suicide. ":GOSUB4000:GOTO1010 990 IFABS(x(s%))=xTHENz$="i dunno who could have done it.{space*2}":GOSUB4000:GOTO1010 1000 z$="i suspect the ":GOSUB4000:z$=c$(s%)+".{space*2}":GOSUB4000 1010 z$=b$(i):GOSUB4000:PRINT".'":PRINT:FORj=1TO2e3:NEXT 1020 NEXTi 1030 IFr%<>rGOTO1070 1040 z$="there is a dead body here "+y$(y%)+".":GOSUB 3900 1060 z$="the body says: nothing":GOSUB 3900:PRINT 1070 m$=m$(r) 1080 PRINT"you may {reverse on} accuse {reverse off}, "; 1085 z$="or proceed to:":GOSUB 3900 1090 FORi=1TOLEN(m$):j=ASC(MID$(m$,i))-64:PRINTr$(j):NEXTi 1100 PRINT 1110 INPUT"your move{space*2}{cm b}{left*3}";x$ 1120 IF LEN(x$)<3GOTO1080 1130 x$=LEFT$(x$,3):IFx$="acc"GOTO1170 1140 FORi=1TOLEN(m$):j=ASC(MID$(m$,i))-64 1150 IFLEFT$(r$(j),3)=x$THENr=j:GOTO840 1160 NEXTi:GOTO1080 1170 PRINT"very well, ";k$(k%):PRINT" you accuse the{.*3}"; 1180 INPUTa$:IFLEN(a$)<3GOTO1080 1190 a$=LEFT$(a$,3):FORi=1TO12:IFa$<>LEFT$(c$(i),3)THENNEXTi:GOTO1080 1200 IFi=m%GOTO1250 1210 PRINT"bungler!{space*2}it's not the ";c$(i);"!" 1220 k%=k%+1:IFk%>4GOTO1270 1230 PRINT"you are demoted to ";k$(k%);"!" 1240 PRINT"go back and try to get the right one!":GOTO1080 1250 PRINT"{reverse on} right! {reverse off}{space*2}another criminal speedily" 1260 PRINT"brought to justice!" 1270 PRINT:PRINT "{space*2}solution:" 1280 PRINT "the ";c$(m%);" "; 1290 IF r%(m%)=0 THEN z$="would have ":GOSUB 4000 1300 IF g%=2 THEN z$="admitted being in the murder room!":GOTO 1390 1310 z$="claimed to be ":GOSUB 4000 1320 x=ABS(x(m%)):GOSUB 3500:z$=r$:GOSUB4000 1330 w$="with the ":IF z%=0 THEN w$="alone.{space*2}but the " 1340 f=0:FOR j=1 TO 12:IF m%=j GOTO 1360 1350 IFx=x(j)THENz$=w$:GOSUB4000:z$=c$(j)+" ":GOSUB4000:w$="and the ":f=1 1360 NEXTj:IF f=0 AND z%>0 THEN f=1:z$=w$:GOSUB4000:z$=c$(z%):GOSUB4000 1370 IF f=1 THEN z$=" {.*3} who won't back up this alibi." 1380 IF z%=0 THEN z$="were there{.*3}" 1390 GOSUB 4000 1400 PRINT:END 2000 n=INT((RND(1)*30)) 2010 l=FNr(6)*2 2020 PRINT"{home}";LEFT$(dn$,l) 2030 GOSUB3010 2040 FORi=l+9TO20 2050 IFi>15ANDi<19THENPRINTTAB(n+1)"{cm +}{sh +*2}{cm +}{cm g}":GOTO2070 2060 PRINTTAB(n+1)"{cm +*4}{cm g}" 2070 NEXT:RETURN 2080 FORj=0TO15+RND(1)*8:GOSUB2000:NEXTj 2090 PRINT"{home}"dn$;LEFT$(dn$,6) 2100 PRINTTAB(n+1)"{sh pound} {cm asterisk}" 2110 FORi1=1TO4:PRINTTAB(n+1)"{cm g}W{cm m}":NEXT 2120 PRINT"{down*2}welcome to grungy towers" 2130 PRINT"hit any key to start" 2140 GETc$:IFc$=""THEN2140 2150 RETURN 3000 m$(j)=m$(j)+CHR$(i+64):m$(i)=m$(i)+CHR$(j+64):RETURN 3010 PRINTTAB(n+2)"{cm m}{cm v}" 3020 PRINTTAB(n+2)"{reverse on}{sh pound}{cm asterisk}" 3030 PRINTTAB(n+1)"{reverse on}{sh pound}{space*2}{cm asterisk}" 3040 PRINTTAB(n)"{cm c}{reverse on}{sh asterisk*4}{reverse off}{cm v}" 3050 PRINTTAB(n+1)"{cm b*4}{cm g}" 3060 PRINTTAB(n+1)"{cm b}{sh pound}{cm asterisk}{cm b}{cm g}" 3070 PRINTTAB(n+1)"{cm b}{cm g}{cm m}{cm b}{cm g}" 3080 PRINTTAB(n+1)"{cm b}L{sh @}{cm b}{cm g}" 3090 PRINTTAB(n+1)"{cm b}{reverse on}{cm f*2}{reverse off}{cm b}{cm g}" 3100 RETURN 3400 IF x=r THEN r$="here ":RETURN 3500 r$="in the "+r$(x) 3510 IF x=12 THEN r$="on the "+r$(x) 3520 r$=r$+" ":RETURN 3900 GOSUB 4000:PRINT:RETURN 4000 z=39-POS(0):IFLEN(z$)<=zTHENPRINTz$;:RETURN 4010 IFz<2THENPRINT:GOTO4000 4020 FORz1=zTO1STEP-1:IFMID$(z$,z1,1)<>" "THENNEXTz1 4030 IFz1=0THENPRINT:GOTO4000 4040 PRINTLEFT$(z$,z1) 4050 z1=z1+1:IF z1>LEN(z$) THEN RETURN 4060 IF MID$(z$,z1,1)=" " GOTO 4050 4070 z$=MID$(z$,z1):GOTO 4000 0 stop tok64 (bastext 1.0)