File CODBRE.BA (BASIC source file)

Directory of image this file is from
This file as a plain text file

10 REM	* * * MASTERMIND CODE BREAKER * * *   - CODBRE.BA
20 PRINT\PRINT "MASTERMIND CODEBREAKER"\PRINT
30 RANDOMIZE
40 DIM R0$(9,15),R1$(9,15),R2$(9,15),R3$(9,15),S(9,1)
50 DIM A$(6),B$(3),C$(3),D$(3)
60 FOR J=0 TO 6
70 READ A$(J)
80 NEXT J
90 DATA "RED","BLUE","GREEN","YELLOW","ORANGE","BROWN","SPACE"
100 L0=0
110 L1=0
120 L2=0
130 L3=0
140 PRINT "PLEASE BE PATINT. SOMETIMES I TAKE A FEW MINUTES ON MY MOVE."
150 PRINT "WHICH VERSION [1 OR 2]";
160 INPUT V
170 V=V+5
180 REM ASSIGN COLORS AT RANDOM FOR ROW 1
190 R0$(0)=A$(INT(V*RND(1)))
191 R1$(0)=A$(INT(V*RND(1)))
192 R2$(0)=A$(INT(V*RND(1)))
193 R3$(0)=A$(INT(V*RND(1)))
220 REM START MAIN PLAY OF GAME HERE
230 REM I IS THE ROW COUNTER
240 FOR I=0 TO 9
250 PRINT "MY MOVE NO.";I+1;"IS:";TAB(30);
251 PRINT R0$(I);TAB(40);R1$(I);TAB(50);R2$(I);TAB(60);R3$(I)
270 PRINT "HOW MANY BLACK PEGS";
280 INPUT S(I,0)
290 IF S(I,0)<>4 GOTO 320
300 PRINT "THANKS FOR THE GAME"
305 PRINT
310 GOTO 870
320 IF S(I,0)<>3 GOTO 360
330 S(I,1)=0\REM IF 3 BLACKS, THEN 0 WHITES
340 GOTO 380
360 PRINT "HOW MANY WHITE PEGS";
370 INPUT S(I,1)
380 REM GENERATE HYPOTHESIS
390 FOR I0=L0 TO V-1
395 D$(0)=A$(I0)\REM **WAS 430**
400 FOR I1=L1 TO V-1
405 D$(1)=A$(I1)\REM **WAS 440**
410 FOR I2=L2 TO V-1
415 D$(2)=A$(I2)\REM **WAS 540**
420 FOR I3=L3 TO V-1
460 D$(3)=A$(I3)
470 REM CHECK ALL ROWS FROM FIRST TO CURRENT FOR CONSISTANCY
490 FOR R=0 TO I
510 C$(0)=R0$(R)
511 C$(1)=R1$(R)
512 C$(2)=R2$(R)
513 C$(3)=R3$(R)
515 FOR J=0 TO 3\REM **WAS 500**
520 B$(J)=D$(J)
530 NEXT J
540 REM USE ROW EVALUATION SUBROUTINE TO CHECK CONSISTENCY OF
550 REM HYPOTHESIS AGAINST EACH ROW
555 N=0\M=0
560 GOSUB 910
570 REM CHECK FOR AGREEMENT OF BLACK AND WHITE COUNT
580 IF N<>S(R,0) GOTO 700
590 IF M<>S(R,1) GOTO 700
600 NEXT R
610 REM MAKE SURE THAT HYPOTHESIS ROW DOESNT DUPLICAT ROW 1
620 Z=0
640 IF R0$(0)<>D$(0) GOTO 642
641 Z=Z+1
642 IF R1$(0)<>D$(1) GOTO 644
643 Z=Z+1
644 IF R2$(0)<>D$(2) GOTO 646
645 Z=Z+1
646 IF R3$(0)<>D$(3) GOTO 670
647 Z=Z+1
670 IF Z=4 GOTO 700
690 GOTO 820
700 NEXT I3
710 NEXT I2
720 NEXT I1
730 NEXT I0
740 PRINT "I HAVE REACHED AN IMPASSE IN MY THINKING"
750 PRINT "COULD YOU HAVE MADE AN ERROR?"
760 GOTO 870
770 L0=I0
780 L1=I1
790 L2=I2
800 L3=I3+1
810 REM DO NOT RECHECK ELLIMINATED POSSIBILITIES
820 REM ASSIGN NEXT ROW
830 R0$(I+1)=D$(0)
831 R1$(I+1)=D$(1)
832 R2$(I+1)=D$(2)
833 R3$(I+1)=D$(3)
850 NEXT I
860 PRINT "I AM STUMPED -- YOU WIN"
870 PRINT "ANOTHER GAME [Y OR N]";
880 INPUT X$
890 IF X$="Y" GOTO 150\IF X$<>"N" GOTO 870
900 STOP
910 REM SUBROUTINE TO EVALUATE RESPONSE
920 REM COUNT BLACKS FIRST
930 FOR J1=0 TO 3
940 IF C$(J1)<>B$(J1) GOTO 960
950 N=N+1
960 NEXT J1
970 REM NOW COUNT WHITES
980 FOR J1=0 TO 3
990 FOR J2=0 TO 3
1000 IF J1=J2 GOTO 1080
1010 IF C$(J1)=B$(J1) GOTO 1080
1020 IF C$(J2)=B$(J2) GOTO 1080
1030 IF C$(J1)<>B$(J2) GOTO 1080
1040 M=M+1
1050 B$(J2)="X"\REM DUMMY WRONG VALUE
1070 GOTO 1090
1080 NEXT J2
1090 NEXT J1
1100 RETURN
1110 STOP
2000 END



Feel free to contact me, David Gesswein djg@pdp8online.com with any questions, comments on the web site, or if you have related equipment, documentation, software etc. you are willing to part with.  I am interested in anything PDP-8 related, computers, peripherals used with them, DEC or third party, or documentation. 

PDP-8 Home Page   PDP-8 Site Map   PDP-8 Site Search