1 NOEXPAND
2 RANDOMIZE
4 PRINT TAB(-1,0);
40 MAP1 X'WORD$
41 MAP2 W$(14),S,1
42 MAP1 PATTERN$
43 MAP2 P$(14),S,1
44 MAP1 UNUSED
45 MAP2 U(255),B,1
46 MAP1 USED$,S,27
50 Z=0:D=0
60 PRINT "DO YOU WANT INSTRUCTIONS (YES OR NO)";
70 INPUT RESP$
80 IF RESP$="N" OR RESP$="NO" THEN 200
90 IF RESP$<>"Y" AND RESP$<>"YES" THEN 60
100 PRINT " THIS IS THE GAME OF HANGMAN. YOU CHOSE THE"
110 PRINT "LANGUAGE THAT YOU WANT TO PLAY IN, AND I THINK"
120 PRINT "OF A WORD IN THAT LANGUAGE. YOU TRY TO GUESS, LETTER"
130 PRINT "BY LETTER, WHAT THE WORD IS. SIMPLE HUH?"
140 PRINT " WHEN I THINK OF A WORD, I WILL PRINT A LINE OF"
150 PRINT "DASHES WHICH CORRESPONDS TO THE NUMBER OF LETTERS IN"
160 PRINT "THE WORD."
170 PRINT " IF YOU GIVE UP, TYPE 'GIVE'. IF YOU WANT TO QUIT,"
180 PRINT "SIMPLY TYPE 'QUIT'."
190 PRINT " A FEW SPECIAL INSTRUCTIONS:"
191 PRINT "FRENCH - THE ' IS COUNTED AS ONE LETTER,"
192 PRINT " AND LETTERS ARE NOT ACCENTED"
200 PRINT "IN WHAT LANGUAGE WOULD YOU LIKE TO PLAY?"
210 PRINT "(STANDARD LANGUAGES INCLUDED ARE ENGLISH & FRENCH)"
240 INPUT FILE$
250 LOOKUP FILE$,X
260 IF X<=0 ?"THE ";FILE$;" LANGUAGE IS NOT AVAILABLE. TRY AGAIN.":GOTO 210
300 PRINT "HAVE FUN!"
310 OPEN #1,FILE$,INPUT:M1=0
311 INPUT #1,USED$:IF EOF(1) THEN 312 ELSE M1=M1+1:GOTO 311
312 CLOSE #1
313 FOR I=1 TO M1:U(I)=I:NEXT
320 IF Z=M1 THEN 1340
330 W=INT((M1-Z)*RND(0)+1)
340 W1=U(W):FOR I=W TO M1-Z:U(I)=U(I+1):NEXT
350 Z=Z+1
390 P=0:M=0
400 OPEN #1,FILE$,INPUT
410 FOR I=1 TO W1:INPUT #1,USED$:NEXT I:X'WORDLEN=LEN(USED$):X'WORD$=USED$
411 CLOSE #1
440 PATTERN$=""
450 FOR I=1 TO X'WORDLEN:P$(I)="-":NEXT I
460 PRINT TAB(-1,0);
480 PRINT "THE WORD IS ";PATTERN$
500 USED$=""
510 PRINT "YOUR GUESS";
520 R=0
530 INPUT GUESS$
540 PRINT
550 IF GUESS$="GIVE" THEN 1100
560 IF GUESS$="QUIT" THEN 1310
570 GUESS$=LEFT$(GUESS$,1)
610 IF (ASC(GUESS$)>=ASC("A") AND ASC(GUESS$)<=ASC("Z")) OR GUESS$="'" THEN 660
620 PRINT "THAT IS NOT A VALID CHARACTER."
650 GOTO 510
660 IF INSTR(1,USED$,GUESS$) = 0 THEN 730
670 PRINT "YOU HAVE ALREADY USED THAT LETTER. GUESS AGAIN."
680 GOTO 510
730 USED$=USED$+GUESS$
740 FOR I=1 TO X'WORDLEN
750 IF GUESS$<>W$(I) THEN 760
751 IF R=0 PRINT "RIGHT!":R=1
752 P$(I)=GUESS$
760 NEXT
770 IF R THEN 1170
780 PRINT "WRONG."
790 M=M+1
791 ?TAB(-1,0);
800 ?"--------"
805 ?"I !"
810 ?"I O"
820 IF M=1 THEN 1030
840 IF M=2 ?"I I"
860 IF M=3 ?"I /I"
880 IF M=4 ?"I /I\"
900 IF M=5 ?"I \/I\"
920 IF M>5 ?"I \/I\/"
930 IF M<7 THEN 1030
940 ?"I I"
950 IF M=7 THEN 1030
960 IF M=8 ?"I /"
980 IF M=9 ?"I / \"
1000 IF M=10 ?"I \/ \"
1020 IF M=11 ?"I \/ \/"
1030 FOR I=1 TO 5-P
1040 ?"I"
1050 NEXT
1060 ?"------------"
1061 ?"IIIIIIIIIIII"
1062 ?"------------"
1070 IF M=1 OR M=6 OR M=7 LET P=P+1
1090 IF M<11 THEN 1240
1100 PRINT "YOU HAVE JUST BEEN HUNG."
1110 GOTO 1220
1170 IF INSTR(1,PATTERN$,"-") THEN 1240
1200 PRINT "YOU GOT IT!!"
1210 D=D+1
1220 PRINT"THE WORD WAS ";X'WORD$
1230 GOTO 1270
1240 PRINT "THE WORD IS ";PATTERN$
1250 PRINT "YOU HAVE USED ";USED$
1260 GOTO 510
1270 PRINT "WOULD YOU LIKE TO PLAY AGAIN (YES OR NO)";
1280 INPUT RESP$
1281 PRINT TAB(-1,0);
1290 IF RESP$="Y" OR RESP$="YES" THEN 320
1300 IF RESP$<>"N" AND RESP$<>"NO" THEN 1270
1310 PRINT "YOU TOOK";LEN(USED$);"GUESSES."
1320 PRINT "YOU WERE HUNG";Z-D;"TIME(S)."
1330 GOTO 1370
1340 ?TAB(-1,0);:?"SORRY, BUT I'M OUT OF WORDS. IF YOU WANT TO START"
1350 PRINT "OVER, RERUN THE PROGRAM. THE WORDS WILL BE THE SAME,"
1360 PRINT "BUT THEY WILL BE IN A DIFFERENT ORDER."
1370 PRINT "COME AGAIN SOON... IT WAS FUN!"
1380 CHAIN "DSK1:DEMO.RUN[20,20]"