home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CP/M
/
CPM_CDROM.iso
/
mbug
/
mbug091.arc
/
HANGMAN.BAS
< prev
next >
Wrap
BASIC Source File
|
1979-12-31
|
3KB
|
83 lines
10 REM altered to the size it is by A. L. BARFOOT. 18/4/88
20 REM MBUG AUSTRALIA INC., Box 157, NUNAWADING, Vic 3131 Australia.
30 REM Converted from Microbee Basic to MBASIC by AJL 23/10/91
32 CLS$=CHR$(26): REM <-- Clear screen & Home cursor
34 DEF FNCUR$(X,Y)=CHR$(27)+"="+CHR$(31+X)+CHR$(31+Y): REM <-- Cursor Addressing
50 GOTO 1000
90 REM **** COMPUTER FINDS WORD ****
100 PRINT CLS$
101 PRINT:PRINT "The hangman has to get some rope."
102 PRINT:PRINT"He has 26 shops to buy rope from and "
103 PRINT"over 29,872 different makes of rope to select from!"
104 PRINT:PRINT "Please wait while I get my rope."
105 RANDOMIZE SEED
106 A = INT(RND*26)+1
107 A = A + 64
109 C0$ = CHR$(A)+"DICT.DAT"
110 OPEN "I",1,C0$
120 INPUT #1,A
130 I=INT(RND*A)+1
140 FOR J=1 TO I:INPUT #1,W1$:NEXT J
145 CLOSE #1
150 RETURN
200 REM **** GET WORD FROM PERSON ****
210 PRINT:INPUT "WORD > ";W0$
220 IF LEN(W0$)>15 THEN PRINT CHR$(7)"Too long, must be < 15 letters!":GOTO 210
230 FOR X= 1 TO LEN(W0$):W=(ASC(MID$(W0$,X,1)) AND 95):W1$=W1$+CHR$(W):NEXT
240 RETURN
300 REM ***CHECK IF KEY IS IN WORD***
310 J=0:FOR I=1 TO LEN(W1$)
320 IF MID$(W1$,I,1)=A1$ THEN N(I)=1:J=1
330 NEXT I
335 IF J=0 THEN PRINT CHR$(7);
340 IF J<>0 OR A1$=" " THEN RETURN
350 REM **** DRAW HANGMAN ****
352 REM IF ASC(A1$)>64 AND ASC(A1$)<91 THEN RETURN
355 H=H+1
357 IF ASC(A1$)>64 AND ASC(A1$)<91 THEN PRINT FNCUR$(20,ASC(A1$)-55);A1$
360 IF H=1 THEN PRINT FNCUR$(20,50);"---------"
370 IF H=2 THEN FOR X=1 TO 10:PRINT FNCUR$(20-X,54);"|":NEXT X
380 IF H=3 THEN PRINT FNCUR$(9,54);"--------"
390 IF H=4 THEN FOR X=0 TO 3:PRINT FNCUR$(12-X,55+X);"/":NEXT X
400 IF H=5 THEN print FNCUR$(10,61);"|"
420 IF H=6 THEN gosub 800
430 IF H=7 THEN for x=0 to 3:print FNCUR$(14+x,61);"|":next x
440 IF H=8 THEN print FNCUR$(15,58);"\__"
450 IF H=9 THEN print FNCUR$(15,62);"__/"
460 IF H=10 THEN print FNCUR$(18,60);"/";FNCUR$(19,58);"_/"
470 IF H=11 THEN print FNCUR$(18,62);"\";FNCUR$(19,63);"\_"
480 IF H<>11 THEN RETURN
485 PRINT FNCUR$(2,1);"You didn't get it."
490 PRINT FNCUR$(4,1);"The word was : ";W1$
494 PRINT:PRINT"Try a DICTIONARY!"
500 GOTO 2000
550 FOR H=1 TO 11:GOSUB 360:NEXT H:END
800 print FNCUR$(11,59);"/~~~\"
810 print FNCUR$(12,59);"|O.O|"
820 print FNCUR$(13,59);"\_=_/"
830 return
1000 PRINT CLS$:PRINT TAB(31);" H A N G M A N "
1010 PRINT:PRINT"This is the old fashioned game of Hangman, but it has been computerised."
1015 PRINT "You can have one player (against the computer) or two players (one types"
1020 PRINT "in the word and the other one guesses it)."
1030 PRINT :PRINT "PLAYERS (1/2) ? ";
1040 A1$=INKEY$:SEED = SEED + 1
1042 IF A1$<>"1" AND A1$<>"2" THEN 1040
1045 PRINT A1$
1050 IF A1$="1" THEN GOSUB 100 ELSE GOSUB 200
1060 DIM N(LEN(W1$)):FOR I=1 TO LEN(W1$):N(I)=0:NEXT I
1065 A1$=" ":GOSUB 300
1067 PRINT CLS$
1070 J=0:FOR I=1 TO LEN(W1$)
1080 PRINT FNCUR$(10,10+I*2);:IF N(I)=0 THEN PRINT "_":J=1 ELSE PRINT MID$(W1$,I,1)
1090 NEXT I
1095 IF J=0 THEN PRINT FNCUR$(4,1);"You guessed it!":GOTO 2000
1100 PRINT FNCUR$(13,15);"LETTER > ";
1120 A7$=INKEY$:IF A7$="" THEN 1120
1130 X=(ASC(A7$) AND 95):A1$=CHR$(X):PRINT A1$:GOSUB 300
1140 GOTO 1070
2000 PRINT FNCUR$(16,1);"Do you want another game (Y/N) ? ";
2010 A$=INKEY$:IF A$="" THEN 2010
2020 IF A$="N" OR A$="n" THEN PRINT:PRINT "Catch you later.":END
2030 RUN