| 'MODULE 0 MAIN ******TROLL TOYLAND ******8-31-90 | |
| 'REVISED 1-24-91 TO ADD NICKLE-NICKEL! AND CONVERTNUM | |
| 'AND TO CHANGE GAMEDTA.BAS TO TROLSAV.BAS | |
| 'CHANGED SAVE GAME TIME$ DATE$ 7-30-95 | |
| 'snips added 11-27-95 | |
| 'changed int(i/4) for troldata.bas on 12=4=95 | |
| 'TOYLAND STARTS ON 12-14-95 | |
| 'changes as of 1-5-96 | |
| 'CHANGES AS OF 2-29-96 AND 3-5-96 DTA() | |
| 'toydata.txt 10-15-96 changed andrea sign 10-29-96 | |
| LET STRT=TIMER | |
| CLS:DIM FLAG(30),OBJ$(18),OBJ2$(18) | |
| LET GUESSNUMB=0:LET WURD$(2)="GIRL":LET LOGIC$="" | |
| CALL LOGON | |
| LOCATE 12,12:PRINT "ONE MOMENT PLEASE...." | |
| CALL SETUP 'MODULE 1 SET UP VARIABLES | |
| CALL TURN 'MODULE 2 RUN TURNS | |
| CALL CLOSING 'MODULE 3 END OF GAME STUFF | |
| END | |
| 'MODULE 0.1 LOGON | |
| SUB LOGON | |
| SHARED ANSWER$() | |
| DIM ANSWER$(305) | |
| INPUT "YOUR NAME-NUMBER PLEASE";ANSWER$(0) | |
| LET ANSWER$(0)=ANSWER$(0)+" "+TIME$+" "+DATE$ | |
| END SUB | |
| 'MODULE 1 SETUP | |
| SUB SETUP | |
| CALL ROOMINFO 'MODULE 1.1 READ ROOM INFORMATION | |
| CALL ROOMOBJECTS 'MODULE 1.2 READ ROOM OBJECTS | |
| CALL MOVEMENTTABLE 'MODULE 1.3 READ MOVEMENT TABLE | |
| CALL INVENTORY 'MODULE 1.4 INITIALIZE INVENTORY ARRAY | |
| ' TO AN EMPTY LIST | |
| CALL OTHERS 'MODULE 1.5 INITIALIZE OTHER VARIABLES | |
| END SUB | |
| 'MODULE 1.1 ROOMINFO | |
| SUB ROOMINFO | |
| SHARED DESCRIPTION$(),NUMBERROOMS,DESCRIBEFLAG(),ROOMDESCRIBE$(),ROOMDES2$() | |
| READ NUMBERROOMS | |
| DIM DESCRIPTION$(NUMBERROOMS),DESCRIBEFLAG(NUMBERROOMS),ROOMDESCRIBE$(NUMBERROOMS) | |
| DIM ROOMDES2$(NUMBERROOMS) | |
| FOR I = 1 TO NUMBERROOMS | |
| READ DESCRIPTION$(I) | |
| NEXT I | |
| DATA 8,ENTRYWAY,JUNK HEAP,UPPER HALL,GUARD ROOM,DESIGN ROOM,LOWER HALL | |
| DATA STORAGE ROOM,MEETING ROOM | |
| FOR I=1 TO NUMBERROOMS | |
| LET DESCRIBEFLAG(I)=1 | |
| LET ROOMDESCRIBE$(I)="EMPTY" | |
| LET ROOMDES2$(I)="EMPTY" | |
| NEXT I | |
| END SUB | |
| 'MODULE 1.2 ROOM OBJECT INFORMATION | |
| SUB ROOMOBJECTS | |
| SHARED ROOMOBJECT$(),NUMBERROOMS | |
| DIM ROOMOBJECT$(NUMBERROOMS,15) | |
| FOR I=1 TO NUMBERROOMS | |
| FOR J=1 TO 15 | |
| LET ROOMOBJECT$(I,J)="EMPTY" | |
| NEXT J | |
| NEXT I | |
| END SUB | |
| 'MODULE 1.3 MOVEMENTTABLE | |
| SUB MOVEMENTTABLE | |
| SHARED MOVEMENTTABLE(),NUMBERROOMS | |
| DIM MOVEMENTTABLE(NUMBERROOMS,6) | |
| FOR I=1 TO NUMBERROOMS | |
| FOR J = 1 TO 6 | |
| READ MOVEMENTTABLE(I,J) | |
| NEXT J | |
| NEXT I | |
| DATA 0,3,0,0,0,0 | |
| DATA 0,0,3,0,0,0 | |
| DATA 1,0,4,2,0,6 | |
| DATA 0,0,0,3,0,0 | |
| DATA 0,0,6,0,0,0 | |
| DATA 0,8,7,5,3,0 | |
| DATA 0,0,0,6,0,0 | |
| DATA 6,0,0,0,0,0 | |
| END SUB | |
| 'MODULE 1.4 INVENTORY | |
| SUB INVENTORY | |
| SHARED INVENTORY$() | |
| DIM INVENTORY$(5) | |
| FOR I=1 TO 5 | |
| LET INVENTORY$(I)="EMPTY" | |
| NEXT I | |
| END SUB | |
| 'MODULE 1.5 OTHERS | |
| SUB OTHERS | |
| SHARED GAMESTATE$,ROOM,TURNNUMBER,ROOMOBJECT$(),THING$,INVENTORY$(),_ | |
| FLAG(),OBJ$(),OBJ2$(),DESCRIBEFLAG(),ROOMDESCRIBE$(),ROOMDES2$(),_ | |
| CONVERTNUM | |
| LET ROOM = 1 :REM START IN ENTRYWAY | |
| LET TURNNUMBER =0 | |
| LET TOTAL=0 'TOTAL NUMBER OF CENTS DROPPEN IN ENTRYWAY | |
| LET THING$="" | |
| FOR I=1 TO 30:LET FLAG(I)=0:NEXT I 'SET FLAGS TO 0 | |
| 'FLAG # MEANING OF 0 FLAG# MEANING OF 0 | |
| ' 1 GAME NOT OVER 2 ANDREA SIGN NOT READ YET | |
| 'FOR 1, 1 MEANS GAME WON -1 GAME LOST 2 MEANS GAME QUIT | |
| '13 GUARD ROOM NOT ENTERED FOR FIRST TIME | |
| LET ROOMOBJECT$(1,1)="SIGN*" | |
| LET ROOMOBJECT$(2,1)="ANDREA*" | |
| LET ROOMOBJECT$(2,2)="SIGN*" | |
| LET ROOMOBJECT$(3,1)="EMPTYBALL" | |
| LET ROOMOBJECT$(4,1)="GUARD*" | |
| LET ROOMOBJECT$(4,2)="EMPTYCHARGER" | |
| LET ROOMOBJECT$(4,3)="SIGN*" | |
| LET ROOMOBJECT$(5,1)="EMPTYDOLL" | |
| LET ROOMOBJECT$(7,1)="EMPTYCAPGUN" | |
| LET ROOMOBJECT$(8,1)="EMPTYJUMPROPE" | |
| LET ROOMOBJECT$(8,2)="SIGN*" | |
| LET CONVERTNUM=3 | |
| FOR I=1 TO CONVERTNUM 'READ IN WORD!* CONVERSION | |
| READ OBJ$(I),OBJ2$(I) | |
| NEXT I | |
| DATA SIGN,SIGN*,GUARD,GUARD*,ANDREA,ANDREA* | |
| END SUB | |
| 'MODULE 2 TURN | |
| SUB TURN | |
| SHARED FLAG(),TURNNUMBER,TOTAL | |
| DO UNTIL FLAG(1) <> 0 | |
| IF TOTAL=41 THEN FLAG(1)=1:EXIT LOOP | |
| FLAG(14)=0 | |
| TURNNUMBER = TURNNUMBER + 1 | |
| IF TURNNUMBER=295 THEN BEEP 3:_ | |
| PRINT "Type SAVE GAME and then QUIT":_ | |
| PRINT "You can then return to this spot by typing":_ | |
| PRINT "TOYLAND (at the DOS prompt) and later,":_ | |
| PRINT "as a command, RESTORE GAME":_ | |
| PRINT "Please forgive the necessary inconvenience." | |
| IF TURNNUMBER=300 THEN FLAG(1)=2 | |
| CALL DESCRIBE 'MODULE 2.1 DESCRIBE THE ROOM | |
| CALL COMMANDS 'MODULE 2.2 INPUT THE COMMANDS | |
| CALL EVALUATE 'MODULE 2.3 EVALUATE COMMANDS | |
| LOOP | |
| END SUB | |
| 'MODULE 2.1 DESCRIBE THE CURRENT ROOM | |
| SUB DESCRIBE | |
| SHARED DESCRIPTION$(),ROOM,MOVEMENTTABLE(),ROOMOBJECT$(),FLAG(),_ | |
| TURNNUMBER,INVENTORY$(),THING$,OBJECT$,DESCRIBEFLAG(),ROOMDESCRIBE$(),_ | |
| ROOMDES2$() | |
| IF TURNNUMBER=1 THEN CALL GAMESTARTER 'MODULE 2.1.1 | |
| IF DESCRIBEFLAG(ROOM)=1 THEN PRINT "You are in the ";DESCRIPTION$(ROOM) | |
| IF DESCRIBEFLAG(ROOM)=0 THEN__ | |
| PRINT ROOMDESCRIBE$(ROOM):PRINT ROOMDES2$(ROOM):DESCRIBEFLAG(ROOM)=1 | |
| DELAY 0.3 | |
| PRINT "The noticeable exits are: "; | |
| IF MOVEMENTTABLE(ROOM,1)<>0 THEN PRINT "NORTH "; | |
| IF MOVEMENTTABLE(ROOM,2)<>0 THEN PRINT "SOUTH "; | |
| IF MOVEMENTTABLE(ROOM,3)<>0 THEN PRINT "EAST "; | |
| IF MOVEMENTTABLE(ROOM,4)<>0 THEN PRINT "WEST "; | |
| IF MOVEMENTTABLE(ROOM,5)<>0 THEN PRINT "UP "; | |
| IF MOVEMENTTABLE(ROOM,6)<>0 THEN PRINT "DOWN "; | |
| DELAY 0.3 | |
| PRINT "The noticeable objects are: "; | |
| COUNTER=0 | |
| FOR I=1 TO 15 | |
| LET STUFF$= ROOMOBJECT$(ROOM,I) | |
| IF LEFT$(STUFF$,5)<>"EMPTY" THEN PRINT " ";ROOMOBJECT$(ROOM,I);_ | |
| :COUNTER=COUNTER+1 | |
| NEXT I | |
| IF COUNTER=0 THEN PRINT "noticeably absent!"; | |
| DELAY 0.3 | |
| PRINT "You are carrying: "; | |
| COUNTER=0 | |
| FOR I= 1 TO 5 | |
| IF INVENTORY$(I)<>"EMPTY" THEN COUNTER=COUNTER + 1:_ | |
| PRINT INVENTORY$(I);" "; | |
| NEXT I | |
| IF COUNTER = 0 THEN PRINT "nothing at all." | |
| DELAY 0.3 | |
| IF ROOM=4 AND FLAG(13)=0 THEN PRINT "The GUARD* is pointing to a SIGN*. Perhaps we should":_ | |
| PRINT "READ SIGN":FLAG(13)=1 | |
| IF ROOM=2 AND FLAG(3)=0 THEN _ | |
| PRINT "There is a forlorn-looking android here. Her nametag":_ | |
| PRINT "reads 'ANDREA - Model 1'. A sticker attached to her reads":_ | |
| PRINT "'not mobile - low batteries - JUNK'. I'll bet if you charged":_ | |
| PRINT "her batteries, she'd be as good as new. There is a message":_ | |
| PRINT "on her screen, perhaps I should READ SCREEN ":FLAG(3)=1 | |
| END SUB | |
| 'MODULE 2.1.1 GAME STARTER -- PRINT OUT INTRODUCTORY REMARKS | |
| SUB GAMESTARTER | |
| CLS | |
| PRINT " Welcome to the TOYLAND Adventure!" | |
| PRINT " You have wandered into the TOYLAND factory which uses" | |
| PRINT "Model 1-type androids to do the design and manufacturing." | |
| PRINT "As you may recall, the Model 1 is very helpful but has " | |
| PRINT "some memory problems. Luckily, if you help them find the" | |
| PRINT "word they're trying to think of, they can usually think " | |
| PRINT "of a good suggestion for you to try. " | |
| PRINT " Because the Model 2 is cheaper and lacks these problems," | |
| PRINT "Model 1's are junked as soon as they show signs of wear. " | |
| PRINT "This is too bad, because an android would be a big help to" | |
| PRINT "you in your adventures. Perhaps you can find one to rescue." | |
| PRINT "I've heard that the android named ANDREA is nice." | |
| PRINT " Give COMMANDs as verb then object, such as GO NORTH," | |
| PRINT "READ SIGN, GET CHARGER, CHARGE BATTERIES, DROP JUMPROPE," | |
| PRINT "REVEAL CAPGUN, QUIT GAME, SAVE GAME, and RESTORE GAME." | |
| PRINT "My vocabulary is limited, but you may not need any other" | |
| PRINT "verbs in this, your first adventure." | |
| PRINT " Exceptions to this two-word sentence rule are single-" | |
| PRINT "letter commands such as N to GO NORTH (not GO N), U to GO UP, " | |
| PRINT "and Q to QUIT." | |
| PRINT " P.S. Don't try to GET objects ending in an *, e.g., SIGN*," | |
| PRINT "as they are quite unobtainable-- you get my drift?" | |
| PRINT "If you're through taking notes, press the ENTER key to begin" | |
| DO WHILE LEN(INKEY$)=0:LOOP | |
| CLS | |
| PRINT "Here is a map of THE FACTORY: (You won't see it again)" | |
| PRINT " ************" | |
| PRINT "You start in the ENTRY WAY-> * ENTRY * " | |
| PRINT " * WAY * " | |
| PRINT " ************ " | |
| PRINT " : " | |
| PRINT " ************ ************ ************" | |
| PRINT " * JUNK *<->* UPPER *<->* GUARD *" | |
| PRINT " * HEAP * * HALL * * ROOM *" | |
| PRINT " ************ /************ ************" | |
| PRINT " /" | |
| PRINT " /" | |
| PRINT "************ ************ ************" | |
| PRINT "* DESIGN * * LOWER * * STORAGE *" | |
| PRINT "* ROOM *<->* HALL *<->* ROOM *" | |
| PRINT "************ ************ ************" | |
| PRINT " : " | |
| PRINT " ************ DIRECTIONS:" | |
| PRINT " * MEETING * NORTH UP" | |
| PRINT " * ROOM * : /" | |
| PRINT " ************ WEST<- : ->EAST DOWN" | |
| PRINT " :" | |
| PRINT " Push the ENTER key to continue: SOUTH" | |
| DO WHILE LEN(INKEY$)=0:LOOP | |
| CLS | |
| END SUB | |
| 'MODULE 2.1.2 ERASER ERASES ONE LINE OF TEXT | |
| SUB ERASER | |
| REM FOR I=1 TO 12:PRINT " ";:NEXT I | |
| END SUB | |
| 'MODULE 2.2 COMMANDS | |
| SUB COMMANDS | |
| SHARED VERB$, OBJECT$,ROOM,DESCRIPTION$(),FLAG(),INVENTORY$(),_ | |
| ROOMOBJECT$(),OBJ$(),OBJ2$(),C$,ANSWER$(),TURNNUMBER,CONVERTNUM | |
| IF FLAG(1)<>0 THEN EXIT SUB | |
| IF FLAG(14)=1 THEN EXIT SUB | |
| ' BE SURE THAT INPUT IS OK DUMMY2=0 | |
| DUMMY2=0 | |
| DO UNTIL DUMMY2=1 | |
| 'C$=THE INPUTTED COMMAND SENTENCE - MAY BE MORE THAN 2 WORDS | |
| 'BUT ONLY THE FIRST TWO WORDS ARE ACCEPTED | |
| ' THE FIRST IS CALLED VERB$ AND THE SECOND OBJECT$ | |
| LET C$="" | |
| PRINT:PRINT | |
| PRINT "*****************************************************************" | |
| DO UNTIL C$<>"" | |
| INPUT "COMMAND";C$ 'GET THE RAW SENTENCE | |
| LOOP | |
| REM SPACES TAKE OFF LEADING AND PERHAPS TRAINING CHR$(32)'S | |
| DO WHILE RIGHT$(C$,1)=CHR$(32) | |
| LET C$=LEFT$(C$,LEN(C$)-1) | |
| LOOP | |
| LET C$=UCASE$(C$) | |
| LET I=1 'LETTER COUNTER | |
| DO WHILE NOT (ASC (MID$(C$,I,1)) = 32) AND NOT (I= LEN(C$)) | |
| 'LOOP TO LOOK FOR FIRST SPACE | |
| LET I = I + 1 'WHICH SHOULD DENOTE END OF FIRST | |
| LOOP 'WORD | |
| LET VERB$=MID$(C$,1,I) 'ASSIGN THOSE CHARACTERS TO VERB$ | |
| LET ANSWER$(TURNNUMBER)=C$ | |
| LET OBJECT$ = MID$(C$,I+1,LEN(C$)) 'ASSIGN REST OF SENTENCE TO OBJECT$ | |
| IF LEN(OBJECT$)<>0 THEN VERB$=LEFT$(VERB$,LEN(VERB$)-1) | |
| FOR J=1 TO 20 'CONVERT OBJECT$ LACKING * OR ! | |
| IF OBJECT$=OBJ$(J) THEN LET OBJECT$=OBJ2$(J) | |
| NEXT J | |
| 'CHECK FOR EXTRA WORDS | |
| COUNTER=0 | |
| FOR J=1 TO LEN(OBJECT$) | |
| LET DUMMY$=MID$(OBJECT$,J,1) | |
| IF DUMMY$=CHR$(32) THEN COUNTER=COUNTER+1 | |
| NEXT J | |
| IF COUNTER<>0 THEN PRINT "One space (two words) only, please." _ | |
| ELSE DUMMY2=1 | |
| LOOP | |
| END SUB | |
| 'MODULE 2.3 EVALUATE THE COMMANDS | |
| SUB EVALUATE | |
| SHARED VERB$, OBJECT$,ROOM,DIRECTION,MOVEMENTTABLE(),NUMBERROOMS,_ | |
| ROOMOBJECT$(),ITEMNUMBER,TURNNUMBER,THING$,INVENTORY$(),FLAG(),_ | |
| TOTAL,WURD$(),GUESSNUMB,LOGIC$ | |
| IF FLAG(1)<>0 THEN EXIT SUB | |
| IF FLAG(14)=1 THEN EXIT SUB | |
| SELECT CASE VERB$ | |
| CASE "QUIT","Q" | |
| LET FLAG(1)=2 'GAME NOT WON(1) OR LOST(-1):EXIT SELECT | |
| CASE "SAVE" | |
| IF OBJECT$<>"GAME" THEN PRINT "SAVE GAME":EXIT SELECT | |
| OPEN "TOYSAV.BAS" FOR OUTPUT AS #1 | |
| WRITE #1,ROOM | |
| FOR I=1 TO 5 | |
| LET DUMMY$="" | |
| FOR J=1 TO LEN(INVENTORY$(I)) | |
| LET DUMMY$=DUMMY$+CHR$(ASC(MID$(INVENTORY$(I),J,1))+4) | |
| NEXT J | |
| WRITE #1,DUMMY$ | |
| NEXT I | |
| FOR I=1 TO NUMBERROOMS | |
| FOR J=1 TO 15 | |
| LET DUMMY$="" | |
| FOR K=1 TO LEN (ROOMOBJECT$(I,J)) | |
| LET DUMMY$=DUMMY$+CHR$(ASC(MID$(ROOMOBJECT$(I,J),K,1))+4) | |
| NEXT K | |
| WRITE #1,DUMMY$ | |
| NEXT J | |
| NEXT I | |
| FOR I=1 TO 30 | |
| WRITE #1,FLAG(I) | |
| NEXT I | |
| WRITE #1,GUESSNUMB,LOGIC$,TOTAL | |
| CLOSE #1 | |
| PRINT "OK | |
| EXIT SELECT | |
| CASE "RESTORE", "LOAD" | |
| IF OBJECT$<> "GAME" THEN PRINT "RESTORE GAME":EXIT SELECT | |
| OPEN "TOYSAV.BAS" FOR INPUT AS #1 | |
| INPUT #1,ROOM | |
| FOR I=1 TO 5 | |
| INPUT #1,DUMMY$ | |
| LET INVENTORY$(I)="" | |
| FOR J=1 TO LEN(DUMMY$) | |
| LET INVENTORY$(I)=INVENTORY$(I)+CHR$(ASC(MID$(DUMMY$,J,1))-4) | |
| NEXT J | |
| NEXT I | |
| FOR I=1 TO NUMBERROOMS | |
| FOR J=1 TO 15 | |
| INPUT #1,DUMMY$ | |
| LET ROOMOBJECT$(I,J)="" | |
| FOR K=1 TO LEN (DUMMY$) | |
| LET ROOMOBJECT$(I,J)=ROOMOBJECT$(I,J)+CHR$(ASC(MID$(DUMMY$,K,1))-4) | |
| NEXT K | |
| NEXT J | |
| NEXT I | |
| FOR I=1 TO 30 | |
| INPUT #1,FLAG(I) | |
| NEXT I | |
| INPUT #1,GUESSNUMB,LOGIC$,TOTAL | |
| CLOSE #1 | |
| PRINT "OK | |
| EXIT SELECT | |
| CASE "INVENTORY","I" | |
| COUNTER=0 | |
| PRINT " YOU CARRY: "; | |
| FOR I= 1 TO 5 | |
| IF INVENTORY$(I)<>"EMPTY" THEN COUNTER=COUNTER + 1:_ | |
| PRINT INVENTORY$(I);" "; | |
| NEXT I | |
| IF COUNTER = 0 THEN PRINT "NOTHING AT ALL" :EXIT SELECT | |
| PRINT:EXIT SELECT | |
| CASE "GO","MOVE","N","S","E","W","U","D" | |
| IF LEN (VERB$)=1 THEN OBJECT$=VERB$ | |
| IF OBJECT$="NORTH" OR OBJECT$="N" THEN DIRECTION = 1 | |
| IF OBJECT$="SOUTH" OR OBJECT$="S" THEN DIRECTION = 2 | |
| IF OBJECT$="EAST" OR OBJECT$="E" THEN DIRECTION = 3 | |
| IF OBJECT$="WEST" OR OBJECT$="W" THEN DIRECTION = 4 | |
| IF OBJECT$="UP" OR OBJECT$="U" THEN DIRECTION = 5 | |
| IF OBJECT$="DOWN" OR OBJECT$="D" THEN DIRECTION = 6 | |
| IF MOVEMENTTABLE (ROOM,DIRECTION) = 0 THEN _ | |
| PRINT "You can't GO that way" ELSE _ | |
| LET ROOM = MOVEMENTTABLE (ROOM,DIRECTION) | |
| EXIT SELECT | |
| CASE "GET","TAKE","PLUCK","EXTRACT","PULL" | |
| IF OBJECT$="TOY" OR OBJECT$="TOYS" THEN PRINT _ | |
| "Be more specific, e.g., GET DOLL":EXIT SELECT | |
| IF FNPRESENT = 0 THEN PRINT "I don't see ";OBJECT$:EXIT SELECT | |
| IF RIGHT$(OBJECT$,1)="*" THEN PRINT "I can't handle it":EXIT SELECT | |
| FOR I=1 TO 5 | |
| IF INVENTORY$(I)="EMPTY" THEN INVENTORY$(I)=OBJECT$:_ | |
| PRINT "GOT IT":ROOMOBJECT$(ROOM,ITEMNUMBER)="EMPTY":_ | |
| EXIT SELECT | |
| NEXT I | |
| PRINT "You're carrying too much. DROP something." | |
| CASE "PUT","DROP","GIVE" | |
| THING$=OBJECT$ | |
| IF ROOM<>4 THEN PRINT "Drop them in the GUARD ROOM.":EXIT SELECT | |
| IF OBJECT$="TOYS" OR OBJECT$="TOY" THEN _ | |
| PRINT "DROP one specific TOY at a time e.g., DROP DOLL":_ | |
| EXIT SELECT | |
| IF FNCARRY=0 THEN PRINT "You don't have the ";OBJECT$:EXIT SELECT | |
| TOTAL=TOTAL + 1: IF TOTAL=4 THEN ROOMOBJECT$(4,2)="CHARGER":_ | |
| PRINT "You can now take the charger to Andrea and CHARGE BATTERIES" | |
| FOR J=1 TO 15 | |
| IF ROOMOBJECT$(ROOM,J)="EMPTY"THEN ROOMOBJECT$(ROOM,J)=OBJECT$_ | |
| :LET INVENTORY$(ITEMNUMBER)="EMPTY" :PRINT "OK":_ | |
| EXIT SELECT | |
| NEXT J | |
| PRINT "This room is full, take it elsewhere":EXIT SELECT | |
| CASE "BORROW" | |
| PRINT "Try GET CHARGER":EXIT SELECT | |
| CASE "READ" | |
| IF ROOM=1 THEN PRINT "It says: you may only leave if ":_ | |
| PRINT "accompanied by an android. No exceptions!":EXIT SELECT | |
| IF ROOM=2 AND FLAG(ROOM)=0 THEN PRINT _ | |
| "It says: I'm thinking of a four-letter word that has something":_ | |
| PRINT "to do with BOY. If you think you know, type GUESS WART or":_ | |
| PRINT "GUESS COMB or something like that. I will the compare the ":_ | |
| PRINT "letters in the guess and answer words and tell you how many":_ | |
| PRINT "of your letters are in my word. HINT: no letter is used more ":_ | |
| PRINT "than once in the answer word. Good luck!":EXIT SELECT | |
| IF ROOM=2 AND FLAG(ROOM)=1 THEN PRINT _ | |
| "It says: BALL DOLL CAPGUN JUMPROPE ":EXIT SELECT | |
| IF ROOM =8 THEN PRINT _ | |
| "It says: If you should GO to the LOWER HALL and REVEAL PUPPET":_ | |
| PRINT "then the DESIGN ROOM is somewhere west of the STORAGE ROOM":_ | |
| EXIT SELECT | |
| IF ROOM=4 THEN PRINT_ | |
| "It says: if you want to borrow the battery charger, bring":PRINT_ | |
| "4 toys here and DROP them one at a time.":EXIT SELECT | |
| PRINT "You are in the wrong room for that.":EXIT SELECT | |
| CASE "USE" | |
| PRINT "Try CHARGE BATTERIES":EXIT SELECT | |
| CASE "GUESS" | |
| IF ROOM<>2 THEN PRINT _ | |
| "Andrea says that this isn't the place for that.":EXIT SELECT | |
| IF FLAG(ROOM)=1 THEN PRINT _ | |
| "Andrea says that you're done with this one.":EXIT SELECT | |
| IF LEN(OBJECT$)<>LEN(WURD$(ROOM)) THEN PRINT _ | |
| "Andreas says that she's thinking of a ";LEN(WURD$(ROOM));_ | |
| "-letter word. Try again.":EXIT SELECT | |
| GUESSNUMB=GUESSNUMB+1 | |
| IF OBJECT$=WURD$(ROOM) THEN FLAG(ROOM)=1:_ | |
| CALL MESSAGE:EXIT SELECT | |
| HITS=0 | |
| FOR I=1 TO LEN(OBJECT$) | |
| LET DUMMY$=MID$(OBJECT$,I,1) | |
| FOR J=1 TO LEN(WURD$(ROOM)) | |
| IF DUMMY$=MID$(WURD$(ROOM),J,1) THEN _ | |
| HITS=HITS+1:EXIT FOR | |
| NEXT J | |
| NEXT I | |
| PRINT "Andrea says that ";HITS;" letter(s) of your":PRINT _ | |
| "word are also found in her word. Try again." | |
| EXIT SELECT | |
| CASE "REVEAL" | |
| IF ROOM=3 AND OBJECT$="BALL" THEN PRINT_ | |
| "Voila!":ROOMOBJECT$(3,1)="BALL":EXIT SELECT | |
| IF ROOM=5 AND OBJECT$="DOLL" THEN PRINT_ | |
| "Voila!":ROOMOBJECT$(5,1)="DOLL":EXIT SELECT | |
| IF ROOM=7 AND OBJECT$="CAPGUN" THEN PRINT_ | |
| "Voila!":ROOMOBJECT$(7,1)="CAPGUN":EXIT SELECT | |
| IF ROOM=8 AND OBJECT$="JUMPROPE" THEN PRINT_ | |
| "Voila!":ROOMOBJECT$(8,1)="JUMPROPE":EXIT SELECT | |
| IF OBJECT$="PUPPET" THEN PRINT _ | |
| "Andrea fears you've fallen for an AFFIRMING THE":PRINT_ | |
| "CONSEQUENT fallacy. Check your text.":_ | |
| LET LOGIC$=LOGIC$+"AFFIRM...":EXIT SELECT | |
| PRINT "Nothing happened. Are we in the right spot?" | |
| EXIT SELECT | |
| CASE "CHARGE" | |
| IF ROOM<>2 THEN PRINT _ | |
| "Take the CHARGER to Andrea ":EXIT SELECT | |
| THING$="CHARGER" | |
| IF FNCARRY=0 THEN PRINT_ | |
| "You don't have the CHARGER. Try GET CHARGER":EXIT SELECT | |
| PRINT "Andrea leaps up with renewed energy!":PRINT:_ | |
| FLAG(1)=1:EXIT SELECT | |
| CASE ELSE | |
| PRINT "I don't know that VERB":EXIT SELECT | |
| END SELECT | |
| END SUB | |
| SUB MESSAGE | |
| SHARED ROOM | |
| IF ROOM=2 THEN PRINT _ | |
| "Andrea says to GO to the UPPER HALL and REVEAL BALL":PRINT _ | |
| " then GO to the DESIGN ROOM and REVEAL DOLL,":PRINT_ | |
| "then GO to the STORAGE ROOM and REVEAL CAPGUN,":PRINT_ | |
| "then GO to the MEETING ROOM and REVEAL JUMPROPE" | |
| END SUB | |
| 'MODULE 2.3.1 DEFINE THE FUNCTION- IS THE OBJECT PRESENT? | |
| DEF FNPRESENT | |
| SHARED ROOMOBJECT$(),OBJECT$,ITEMNUMBER | |
| FOR J=1 TO 15 | |
| IF ROOMOBJECT$(ROOM,J)=OBJECT$ THEN _ | |
| FNPRESENT=1:ITEMNUMBER=J:EXIT DEF | |
| NEXT J | |
| FNPRESENT=0 | |
| END DEF | |
| 'MODULE 2.3.2 DEFINE THE FUNCTION- IS IT BEING CARRIED? | |
| DEF FNCARRY | |
| SHARED INVENTORY$(),THING$,ITEMNUMBER | |
| FOR I = 1 TO 5 | |
| IF INVENTORY$(I)=THING$ THEN FNCARRY = 1: ITEMNUMBER = I: EXIT DEF | |
| NEXT I | |
| FNCARRY=0 | |
| END DEF | |
| 'MODULE 2.4 UPDATE DATA | |
| SUB UPDATE | |
| END SUB | |
| 'MODULE 3 CLOSING | |
| SUB CLOSING | |
| SHARED FLAG(),TURNNUMBER,ANSWER$(),GUESSNUMB,LOGIC$,STRT | |
| IF FLAG(1)=1 THEN CLS:PRINT:PRINT:_ | |
| PRINT " You and your charged up new pal, Andrea, walk calmly":_ | |
| PRINT " out of the toy factory, winning the game!":_ | |
| PRINT :_ | |
| PRINT " You have escaped from TOYLAND! What a relief!":_ | |
| PRINT :_ | |
| PRINT " HOORAY FOR YOU!!!!":_ | |
| PRINT "":_ | |
| PRINT " Now you are ready for THE next ADVENTURE! ":_ | |
| PRINT:_ | |
| PRINT " ***** WOW!! IS THIS EXCITING OR WHAT?? ****" | |
| FOR I=1 TO 5:PRINT:NEXT I | |
| INPUT "Be sure that your disk is in the drive and press ENTER";DUMMY$ | |
| DIM DTA(40),DTA$(10) | |
| OPEN "REPORT.DTA" FOR INPUT AS #1 | |
| REM RETRIEVES OLD DATA FROM REPORT.DTA | |
| FOR I=1 TO 40 | |
| INPUT #1,DTA(I) | |
| NEXT I | |
| FOR I=1 TO 10 | |
| INPUT #1,DTA$(I) | |
| NEXT I | |
| CLOSE #1 | |
| LET DTA(6)=FLAG(1):LET DTA(31)=DTA(31)+INT((TIMER-STRT)/6) | |
| OPEN "REPORT.DTA" FOR OUTPUT AS #1 | |
| REM SENDS UPDATED DATA TO REPORT.DTA (WITH NAIME$) | |
| FOR I=1 TO 40 | |
| WRITE #1,DTA(I) | |
| NEXT I | |
| FOR I=1 TO 10 | |
| WRITE #1,DTA$(I) | |
| NEXT I | |
| CLOSE #1 | |
| OPEN "TOYDATA.TXT" FOR APPEND AS #2 | |
| PRINT #2,TIME$,GUESSNUMB,LOGIC$ | |
| FOR I=0 TO TURNNUMBER | |
| IF INT(I/5)=I/5 THEN PRINT #2,ANSWER$(I) ELSE PRINT #2,ANSWER$(I), | |
| NEXT I | |
| CLOSE #2 | |
| PRINT "This game is over. Type TOYLAND to play again." | |
| END SUB | |
| 'END OF PROGRAM | |
Xet Storage Details
- Size:
- 23.1 kB
- Xet hash:
- 0dd3aef7ee5a79eebd82c5f3cbc8cc09e41612cdac6d5ffb91ed9bfb73d76fb9
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.