Compucolor.org – Virtual Media

Listing of file='MASTER.BAS;01' on disk='vmedia/ncc_21-sector.ccvf'

10 REM  ** MASTERMIND - COPYRIGHT (C) 1979 BY TREVOR TAYLOR **
20 REM
30 REM     THIS PROGRAM IS A VARIATION ON THE POPULAR
40 REM     MASTERMIND GAME. IT ALLOWS A NUMBER OF DIFFERENT
50 REM     GAMES CAN BE PLAYED - SEE THE INSTRUCTIONS.
60 REM
70 REM  NOTE: THE COLORS ARE ENTERED AS THE LETTERS 'P' THRU
80 REM     'W' WITHOUT HOLDING DOWN THE CONTROL KEY.
90 REM     NO. OF COLORS IN SEQUENCE MEANS NO. OF PEGS.
100 DIM A(5),C(5),G(5),M(5),T(5)
110 X= PEEK (33209)
120 FOR I= 1TO X:J= RND (X):NEXT I
140 PLOT 30,16,29,18,12,14
150 PRINT :PRINT "   ";
160 PRINT "MASTERMIND"
170 PRINT :INPUT "DO YOU WANT INSTRUCTIONS ? (Y/N) ";R$
180 IF  R$ =  "Y" GOTO 940
190 LV= 1:DU= 0
195 PLOT 12
196 REM
197 REM  ** THE USER MAY CHOOSE THE NUMBER OF PEGS HE WANTS
198 REM     TO GUESS THE COLORS OF. ALL 8 COLORS ARE USED IN
199 REM     THE RANDOM SELECTION. **
200 INPUT "HOW MANY COLORS IN THE SEQUENCE (2-5) ? ";HM
202 IF HM> 5GOTO 200
204 IF HM< 2GOTO 200
205 REM
206 REM  ** DUPLICATE COLORS MAKE IT MUCH HARDER TO SOLVE.
207 REM     SELECTING THIS OPTION DOES NOT GUARANTEE THAT
208 REM     THERE WILL BE DUPLICATES, BUT THERE OFTEN ARE. **
209 REM
210 INPUT "WILL YOU ALLOW DUPLICATE COLORS (Y/N) ? ";R$
211 IF R$= "Y"THEN DU= 1
212 REM  ** COLORS IN THE RIGHT POSITION CAN BE MARKED WITH 'X' **
213 PRINT "DO YOU WANT COLORS IN THE CORRECT POSITION"
214 PRINT "TO BE MARKED WITH AN 'X' (Y/N) ";
215 INPUT "? ";R$
216 IF R$= "Y"THEN LV= 0
220 PLOT 12
230 PRINT :PRINT "   ";
240 PRINT "MASTERMIND"
250 PLOT 3,28,0
260 PRINT " GUESSES            NO. RIGHT"
270 PLOT  3,26,4
280 PRINT " 1  2  3  4  5       1  2  3  4  5"
290 PLOT 30,16,29,18
294 REM
295 REM  ** SELECT THE COLORS RANDOMLY **
296 REM
300 FOR I= 0TO HM- 1
310 C(I)= INT (RND (X)* 9)
320 IF C(I)= 0GOTO 310
324 REM
325 REM  ** THROW AWAY DUPLICATES IF NOT ALLOWED **
326 REM
330 IF DU< > 0GOTO 380
340 IF I= 0GOTO 380
350 FOR J= 0TO I- 1
360 IF C(J)= C(I)+ 15GOTO 310
370 NEXT J
380 C(I)= C(I)+ 15
390 NEXT I
394 REM
396 REM
400 N= 1
404 REM
405 REM  ********* MAIN LOOP ********
406 REM
410 PLOT 29,18,3,0,10
420 PRINT  "GUESSES LEFT = ";11- N
430 PLOT  31:PRINT  "GUESS: ";
440 PLOT 15,14,29,23:INPUT "";G$
450 PLOT 28,28:PRINT SPC( 17);" ":PRINT SPC( 17);" "
454 REM
455 REM  ** IF NO GUESS, USER GIVES UP **
456 REM
460 IF G$= "0"GOTO 1280
464 REM
465 REM  ** EXTRACT THE COLORS AND CHECK FOR VALIDITY **
466 REM
470 IF  LEN (G$) < >  HM GOTO 850
480 FOR I= 0TO HM- 1
490 T(I)= ASC (MID$ (G$,I+ 1,1))- 64
500 IF  T(I) <  16 GOTO 880
510 IF  T(I) >  23 GOTO 880
520 NEXT I
530 REM
540 REM  ** CHECK FOR THE NUMBER CORRECT. THIS IS QUITE A
550 REM     TRICKY ALGORITHM, BECAUSE IT HAS TO AVOID COUNTING
560 REM     ANY OF THE COLORS TWICE. **
570 REM
580 REM
590 REM
600 BL= 0:WH= 0
610 FOR I= 0TO HM- 1:M(I)= 0:NEXT I
620 FOR I= 0TO HM- 1
630 IF T(I)< > C(I)GOTO 635
631 M(I)= 1
632 BL= BL+ 1
635 NEXT I
637 FOR I= 0TO HM- 1
638 IF M(I)> 0GOTO 680
640 FOR J= 0TO HM- 1
650 IF M(J)< > 0GOTO 670
660 IF T(I)< > C(J)GOTO 670
662 WH= WH+ 1
663 M(J)= - 1
665 GOTO 680
670 NEXT J
680 NEXT I
690 REM
700 REM  ** SHOW THE USER HOW MANY HE GOT RIGHT **
710 REM
711 PLOT 29,23,3,25,2* N+ 4
712 PRINT "[";
713 FOR I= 0TO HM- 1
714 PLOT 30,T(I),32,32,32
715 IF LV< > 0GOTO 717
716 IF M(I)> 0THEN PLOT 26,26,29,39- T(I),120,32
717 NEXT I
718 PLOT 29,23,30,16
719 PRINT "]"
720 PLOT 3,45,2* N+ 4
730 PRINT "[";
740 PLOT 30,16
750 IF BL< = 0GOTO 770
760 FOR I= 1TO BL:PLOT 32,32,32:NEXT I
770 IF WH< = 0GOTO 800
780 PLOT 30,23
790 FOR I= 1TO WH:PLOT 32,32,32:NEXT I
800 PLOT  30,16:PRINT "]"
810 IF BL= HMGOTO 1190
820 N= N+ 1
830 IF N< 11GOTO 410
840 GOTO 1280
844 REM
845 REM  ** ERROR MESSAGES **
846 REM
850 PRINT :PRINT "CHEATING!!!"
870 GOTO 900
880 PRINT :PRINT "INVALID COLOR"
900 PLOT  29,18
910 FOR  I= 1 TO  500:NEXT  I
920 PLOT 28:PRINT SPC( 15)
930 GOTO 410
934 REM
935 REM  ** INSTRUCTIONS - READ THESE WELL **
936 REM
940 PLOT  12
950 PRINT  "THE OBJECT OF THE GAME IS TO GUESS THE SEQUENCE OF"
960 PRINT  "COLORS CHOSEN AT RANDOM BY THE COMPUTER. YOU CAN TRY"
961 PRINT  "TO GUESS THE COLORS OF A SET OF 2,3,4 OR 5 PEGS, AND"
962 PRINT  "YOU HAVE THE OPTION OF ALLOWING REPEATED COLORS"
963 PRINT  "(WHICH IS MUCH HARDER!)."
966 PRINT  "THE COLORS ARE PICKED FROM THE 8 AVAILABLE ON THE KEYBOARD."
980 PRINT "    P = BLACK"
990 PRINT "    Q = RED"
1000 PRINT "    R = GREEN"
1010 PRINT "    S = YELLOW"
1020 PRINT "    T = BLUE"
1030 PRINT "    U = MAGENTA"
1040 PRINT "    V = CYAN"
1050 PRINT "    W = WHITE"
1055 PRINT "(THESE KEYS ARE COLORED, SO YOU DON'T HAVE TO REMEMBER THEM.)"
1060 INPUT "TYPE <RETURN> TO CONTINUE";R$
1070 PLOT 12
1080 PRINT "YOU HAVE 10 GUESSES WHICH YOU MAKE BY SIMPLY"
1082 PRINT "USING THE COLORED KEYS 'P' THRU 'V', FOLLOWED"
1084 PRINT "BY <RETURN>. THE COMPUTER WILL THEN DISPLAY"
1086 PRINT "THE COLORED CODE PEGS YOU HAVE CHOSEN."
1100 PRINT "IT WILL ALSO TELL YOU HOW MANY ARE RIGHT AND HOW"
1110 PRINT "MANY ARE IN THE CORRECT POSITIONS."
1120 PRINT "A KEY WILL BE DISPLAYED SHOWING A NUMBER OF"
1130 PRINT "BLACK AND WHITE PEGS, WITH:"
1140 PRINT "    BLACK = CORRECT COLOR AND POSITION"
1150 PRINT "    WHITE = CORRECT COLOR ONLY"
1160 PRINT "(THE BLACK PEGS ARE NOT PLACED IN THE POSITIONS"
1162 PRINT "THEY CORRESPOND TO HOWEVER.)"
1164 PRINT "THESE KEY AND CODE PEGS REMAIN ON THE SCREEN ONCE PLAYED"
1168 PRINT "IF YOU WANT TO GIVE UP, JUST TYPE <RETURN> AS YOUR GUESS."
1170 INPUT "TYPE <RETURN> TO CONTINUE";R$
1180 GOTO 190
1184 REM
1185 REM  ** END OF GAME MESSAGES **
1186 REM
1190 PLOT 3,0,16:PRINT "YOU WIN":PLOT 14
1200 ON NGOTO 1210,1210,1210,1230,1230,1230,1250,1250,1250,1270
1210 PRINT "LUCKY BREAK!!!"
1220 GOTO 1280
1230 PRINT "WELL PLAYED"
1240 GOTO 1280
1250 PRINT "AVERAGE"
1260 GOTO 1280
1270 PRINT "JUST MADE IT!"
1274 REM
1275 REM  ** COME HERE IF USER GIVES UP OR LOSES **
1276 REM
1280 PLOT 3,0,20
1290 PRINT "THE ANSWER IS:":PRINT "[";
1300 FOR I= 0TO HM- 1
1310 PLOT 30,C(I),32,32,32
1320 NEXT I
1330 PLOT 30,16
1340 PRINT "]"
2000 PRINT :INPUT "PLAY AGAIN (Y/N) ? ";R$
2010 IF R$= "Y"GOTO 190
2020 LOAD  "MENU":RUN