10 REM BULLS AND COWS
20 REM à ROBERT ERSKINE
30 MODE 1
40 BORDER 0:INK 0,0:INK 1,24:INK 2,20:INK 3,8:PAPER 0:PEN 1:CLS
50 LN=1
60 SYMBOL 251,0,2,3,255,126,126,66,66 
70 SYMBOL 252,0,0,3,255,126,126,66,66 
80 GOTO 750
90 DIM N(4), A(4),H(4)
100 LN=1: R=RND:LOCATE 4,14:PRINT" HOW MANY GUESSES DO YOU WANT";:INPUT T
110 GOSUB 380
120 CLS: LOCATE 10,14:PRINT"I HAVE CHOSEN A NUMBER":FOR X= 1 TO 1000:NEXT
130 GOSUB 430
140 FOR Q = 1 TO T
150 LOCATE 1,23: PRINT"ENTER YOUR GUESS NOW [4 DIGITS]";:INPUT G$:IF LEN (G$)<>4 THEN LOCATE 32,23:PRINT SPACE$(7);:GOTO 150
160 FOR F=1 TO 4:IF ASC(MID$(G$,F,1))<48 OR ASC(MID$(G$,F,1))>57 THEN LOCATE 32, 23:PRINT SPACE$(7);:GOTO 150:NEXT F
170 LOCATE 32,23:PRINT SPACE$(7);
180 GOSUB 250
190 GOSUB 460
200 IF BLACK<4 THEN NEXT Q:FOR X=1 TO 300:NEXT X:GOTO 600
210 :' IF BLACK >3 THEN FOR X=I TO 300:NEXT X:GOTO 4000
220 :' NEXT
230 LOCATE 9,25:PRINT"YOU HAVE HAD";Q;"TRIES";:FOR X=1 TO 300:NEXT X:GOTO 600 
240 REM *** CHECK GUESS
250 BLACK=0:WHITE=0
260 FOR X=1 TO 4 : A(X)=0:H(X)=0:J(X)=0:NEXT X
270 FOR X=1 TO 4
280 A(X)=VAL(MID$(G$,X,1)):NEXT X
290 FOR X=1 TO 4
300 IF A(X)=N(X) THEN BLACK=BLACK+1:H(X)=1:J(X)=1
310 NEXT X
320 FOR X=1 TO 4
330 FOR Y=1 TO 4
340 IF A(X)=N(Y) AND H(Y)=0 AND J(X)=0 THEN WHITE=WHITE+1:H(Y)=1:J(X)=1:GOTO 360
350 NEXT Y 
360 NEXT X 
370 RETURN 
380 REM
390 FOR X= 1 TO 4
400 N(X)=INT(RND*9)+1
410 NEXT X 
420 RETURN
430 ENT 1,50,2,2:SOUND 1,284,50,15,0,1: CLS
440 PRINT"GUESSES    BULLS    COWS"
450 RETURN
460 LN=LN+1:LOCATE 1,LN:PRINT G$;: IF BLACK=0 THEN 520
470 F=14
480 FOR X=1 TO BLACK
490 LOCATE F,LN:PEN 3:PRINT CHR$(251);: PEN 1
500 F=F+1 
510 NEXT X
520 IF WHITE=0 THEN 580
530 F=23
540 FOR X=1 TO WHITE
550 LOCATE F,LN:PEN 3:PRINT CHR$(252);:PEN 1
560 F=F+1
570 NEXT
580 PRINT
590 RETURN
600 IF BLACK<4 THEN 640
610 LOCATE 29,3:PEN 2:PRINT"CORRECT!!":LOCATE 29,5:PRINT"I CHOSE";:PEN 1:LOCATE 29,7
620 FOR X=1 TO 8: ENT 1,100,-X,2:SOUND 1 ,284,50,15,0,1:NEXT
630 GOTO 650
640 LOCATE 29,3:PEN 2:PRINT" HARD LUCK!" :LOCATE 29,5:PRINT" I CHOSE";:PEN 1:LOCATE 29,7
650 FOR X=1 TO 4
660 PRINT N(X);
670 NEXT
680 LOCATE 33,11:PEN 2:PRINT"AND";:LOCATE 29,13:PRINT"YOU GUESSED";:PEN 1:LOCATE 29,15
690 FOR X=1 TO 4
700 PRINT A(X);
710 NEXT
720 FOR X=1 TO 30:SOUND 2,(X+100):NEXT X
730 LOCATE 1,23:PRINT CHR$(20):LOCATE 9, 24:PRINT"PRESS ANY KEY TO RESTART";
740 IF INKEY$="" THEN GOTO 740 ELSE CLS: LOCATE 1,2:GOTO 100
750 LOCATE 1,1:PRINT CHR$(24);"BULLS AND COWS    ";CHR$(24):PRINT
760 LOCATE 1,5
770 PRINT:PRINT"The object of Bulls and Cows is to guessa four digit number chosen by the       computer."
780 PRINT:PEN 2:PRINT"After each guess the computer will give you clues. Each BULL indicates a correctdigit in the correct position"
790 PRINT"and each COW indicates a correct digit  in the wrong position."
800 LOCATE 9,21:PEN 3:PRINT"PRESS ANY KEY TO START":PEN 1
810 IF INKEY$="" THEN 810 ELSE CLS 
820 GOTO 90