home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CP/M
/
CPM_CDROM.iso
/
mbug
/
mbug055.arc
/
ANIMAL.BAS
< prev
next >
Wrap
BASIC Source File
|
1979-12-31
|
4KB
|
103 lines
10 REM *** ANIMAL ***
20 PRINT CHR$(12):PRINT
30 PRINT TAB(20)"-- ANIMAL --":PRINT:PRINT
40 PRINT "YOU THINK OF AN ANIMAL AND THE";
50 PRINT " COMPUTER WILL TRY TO GUESS IT."
60 PRINT:PRINT
70 PRINT TAB(10)"Type 'L' to see what animals I know":PRINT
80 PRINT TAB(10)"Type 'E' to end the animal game":PRINT
90 PRINT TAB(10)"Type 'Y' to play the animal game":PRINT:PRINT
100 PRINT TAB(10)"********************************"
110 PRINT TAB(10)"* *"
120 PRINT TAB(10)"* PLEASE USE ONLY UPPER CASE *"
130 PRINT TAB(10)"* *"
140 PRINT TAB(10)"********************************"
150 PRINT:PRINT
160 OPEN "R",1,"B:ANIMAL.DAT"
170 FIELD #1,124 AS DQ$,2 AS DY$,2 AS DN$
180 N=LOF(1)
190 PRINT:PRINT:PRINT:PRINT
200 PRINT:PRINT CHR$(7)
210 PRINT TAB(6)"Are you thinking of an animal .. (L,E or Y) ";
220 A$=INPUT$(1)
230 IF A$="L" THEN 830
240 IF A$="E" THEN CLOSE:PRINT CHR$(12):END
250 IF A$="Y" THEN 290
260 PRINT CHR$(12)
270 PRINT TAB(8)"** ERROR ** Type L,E or Y in UPPER CASE only"
280 GOTO 200
290 PRINT CHR$(12):PRINT" Question"TAB(29)"Answer":K=1
300 GET #1,K
310 GOSUB 670 : REM ASK QUESTION
320 IF CVI(DY$) <> 0 THEN 300 : REM ASK ANOTHER QUESTION
330 GOSUB 770 : REM STRIP OFF SPACES FROM FIELDED STRING
340 PRINT CHR$(12):PRINT:PRINT:PRINT
350 PRINT CHR$(7):PRINT TAB(12) "Is it a >>> ";LEFT$(DQ$,C);
355 PRINT" ? ";
360 A$=INPUT$(1)
370 IF A$="N" THEN PRINT" No":GOTO 970
380 IF A$="Y" THEN PRINT" Yes":GOTO 980
390 PRINT:PRINT"** ERROR ** Type 'Y' or 'N' only":PRINT:GOTO 350
400 PRINT CHR$(12):FOR B=1 TO 4:PRINT "# I GIVE UP # ";
410 PRINT CHR$(7);:FOR Z=1 TO 300:NEXT Z:NEXT B
420 PRINT:PRINT:INPUT "Tell me the animal >>> ";AN$
430 PRINT
440 PRINT "Please type in a question that would distinguish a"
450 PRINT:PRINT TAB(8) AN$;" from a ";
460 GOSUB 770
470 PRINT LEFT$(DQ$,C);
480 INPUT QU$
490 PRINT:PRINT "For a ";AN$;" the answer would be >> ";
500 A$=INPUT$(1)
510 IF A$="Y" THEN PRINT" Yes":GOTO 540
520 IF A$="N" THEN PRINT" No":GOTO 540
530 IF A$<>"Y" AND A$<>"N" THEN PRINT" ** ERROR **":GOTO 490
540 FOR D=1 TO 200:NEXT D
550 GOSUB 770
560 D$ = LEFT$(DQ$,C) : REM SAVE ANIMAL NAME
570 LSET DQ$ = QU$ : REM MOVE QUESTION INTO RECORD
580 X1 = N + 2: X2 = N + 1: IF A$ = "N" THEN SWAP X1,X2
590 LSET DY$ = MKI$(X1):LSET DN$ = MKI$(X2)
600 PUT #1,K : REM WRITE QUESTION RECORD
610 LSET DQ$ = D$:LSET DY$ = MKI$(0): LSET DN$ = MKI$(0)
620 PUT #1,N+1 : REM WRITE FIRST ANIMAL RECORD
630 LSET DQ$ = AN$
640 PUT #1,N+2 : REM WRITE SECOND ANIMAL RECORD
650 N = N + 2
660 PRINT CHR$(12):GOTO 200
670 REM SUBROUTINE TO PRINT QUESTIONS
680 GOSUB 770 : REM STRIP SPACES
690 PRINT:PRINT LEFT$(DQ$,C);:PRINT" ? ";
700 C$=INPUT$(1)
710 IF C$<>"Y" AND C$<>"N" THEN PRINT" ** ERROR **":GOTO 690
720 IF C$="Y" THEN PRINT TAB(30)"Yes":LET K=CVI(DY$)
730 IF C$="N" THEN PRINT TAB(30)"No":LET K=CVI(DN$)
740 GET #1,K : REM GET IT
750 RETURN
760 REM SUBROUTINE TO ELIMINATE PADDING SPACES
770 C = LEN(DQ$)
780 WHILE MID$(DQ$,C,1) = " "
790 C = C - 1
800 WEND
810 RETURN
820 REM *** ROUTINE TO LIST ANIMALS
830 PRINT CHR$(12):PRINT "Animals that I know are .....":PRINT
840 J=0: I=1
850 WHILE I <= LOF(1)
860 GET #1,I:I = I + 1
870 IF CVI(DY$) <> 0 THEN 860
880 PRINT TAB(16*J);
890 GOSUB 770
900 PRINT LEFT$(DQ$,C);
910 J=J+1: IF J>3 THEN J=0: PRINT
920 WEND
930 PRINT
940 PRINT
950 GOTO 200
960 END
970 FOR D=1 TO 500:NEXT D:GOTO 400
980 PRINT:PRINT:PRINT:PRINT:FOR D=1 TO 6:PRINT CHR$(7)
990 PRINT TAB(12)"##### I GOT IT RIGHT #####"
1000 FOR X=1 TO 50:NEXT X:NEXT D
1010 FOR Z=1 TO 500:NEXT Z:PRINT CHR$(12):GOTO 200
T TA