home *** CD-ROM | disk | FTP | other *** search
/ Explore the World of Soft…ids, Adults, Educational / RocelcoInc-ExploreTheWorldOfSoftware-KidsAdultsEducational-Vol2-Shareware.iso / educate / disk116 / master.bas (.txt) < prev    next >
Encoding:
GW-BASIC  |  1982-11-02  |  5.0 KB  |  126 lines

  1. 10  KEY OFF:WIDTH 80:CLS:DEFINT A-Z:GOSUB 59980:KEY(10) ON:ON KEY(10) GOSUB 2700
  2. 20  GOSUB 500:DIM GT(15,6),PO(6,4)
  3. 30  LOCATE 12,1:INPUT "What is your first name";NA$
  4. 40  LOCATE 13,1:PRINT"How many games do you wish to play, "NA$;:INPUT NG
  5. 50  IF NG<1 THEN LOCATE 13,1:PRINT SPACE$(80):GOTO 40
  6. 60  LOCATE 12,1:PRINT SPACE$(80):LOCATE 13,1:PRINT SPACE$(80)
  7. 70  LOCATE 12,1:PRINT"I will now toss a coin to determine the order of play."
  8. 75  COLOR 15:PRINT"     HEADS";:COLOR 7:PRINT" - you're the codemaker"
  9. 78  COLOR 15:PRINT"     TAILS";:COLOR 7:PRINT" - you're the codebreaker"
  10. 80  TIMEOUT=5:GOSUB 59950
  11. 90  CT=INT(RND*2)+1:IF CT<>1 AND CT<>2 THEN 90
  12. 100  IF CT=1 THEN M1$="heads":M2$="codemaker" ELSE M1$="tails":M2$="codebreaker"
  13. 120  PRINT"The coin came out " M1$ " so you will be the " M2$ "."
  14. 130  TIMEOUT=5:GOSUB 59950
  15. 140  GC=0:PC=0:PP=0
  16. 150  IF CT=1 THEN GOSUB 1000 ELSE GOSUB 2000
  17. 160  TIMEOUT=5:GOSUB 59950:IF CT=1 THEN GOSUB 2000 ELSE GOSUB 1000
  18. 170  IF GC=0 THEN GA$="game" ELSE GA$="games"
  19. 180  TIMEOUT=5:GOSUB 59950:CLS:GOSUB 500:LOCATE 12,10:PRINT"After" GC+1 GA$ " the score is:"
  20. 190  LOCATE 14,38-LEN(NA$):PRINTNA$ ": " PP
  21. 200  LOCATE 15,30:PRINT"computer: " PC
  22. 210  TIMEOUT=5:GOSUB 59950
  23. 220  GC=GC+1
  24. 230  IF GC<NG THEN 150
  25. 240  M1$="It's a tie"
  26. 250  IF PC>PP THEN M1$="  I won"
  27. 260  IF PC<PP THEN M1$=" You won"
  28. 270  LOCATE 17,30:PRINTM1$
  29. 280  LOCATE 19,1:PRINT"Would you like to play another game (";:COLOR 15:PRINT"Y";:COLOR 7:PRINT" or ";:COLOR 15:PRINT"N";:COLOR 7:PRINT")?";
  30. 290  GOSUB 59990:IF INSTR("nyNY",IKEY$)=0 THEN 290
  31. 300  IF IKEY$="y" OR IKEY$="Y" THEN CLS:GOSUB 500:GOTO 40
  32. 310  CLS:LOCATE 12,10:PRINT"Thank you for playing, " NA$
  33. 320  TIMEOUT=5:GOSUB 59950:RUN "menu"
  34. 500  LOCATE 1,28:COLOR 0,7:PRINT " ***** MASTERMIND ***** ":COLOR 7,0:RETURN
  35. 1000  CLS:GOSUB 500:YY=5:XX=12
  36. 1010  FOR Y=2 TO 18:LOCATE Y,9:PRINT"CSRLIN";:LOCATE Y,39:PRINT"INKEY$OFF";:LOCATE Y,73:PRINT"CSRLIN";:NEXT Y
  37. 1015  LOCATE 2,9:PRINT STRING$(64,"CSRLIN");:LOCATE 18,9:PRINT STRING$(64,"CSRLIN");
  38. 1020  LOCATE 20,10:PRINT"It's your turn to make a code.":TIMEOUT=3:GOSUB 59950
  39. 1030  LOCATE 20,1:PRINT SPACE$(80):LOCATE 20,10:PRINT"Enter a 4-digit code (using digits 1-6) for me to guess - ";
  40. 1040  INPUT CO$:LOCATE 20,1:PRINTSPACE$(80)
  41. 1050  NU$=CO$:GOSUB 3000
  42. 1060  IF ER<>0 THEN 1030
  43. 1070  LOCATE 3,9:PRINT STRING$(64,"CSRLIN");:LOCATE 4,9:PRINT STRING$(64,"CSRLIN");
  44. 1080  LOCATE 3,30:PRINT" CODE =" T(1) T(2) T(3) T(4) " ";
  45. 1090  FOR R=1 TO 6:FOR C=1 TO 4:PO(R,C)=R:NEXT C,R
  46. 1100  C1=1:C2=1:C3=1:C4=0:GU=0
  47. 1110  GU=GU+1
  48. 1120  IF GU=1 THEN FOR I=1 TO 4:C(I)=INT(RND*6)+1:NEXT I
  49. 1130  IF GU=2 THEN C(1)=C1:C(2)=C2:C(3)=C3:C(4)=C4
  50. 1140  IF GU>2 THEN FOR I=1 TO 4:C(I)=GT(GU-1,I):NEXT I
  51. 1150  IF GU>1 THEN GOSUB 3500
  52. 1160  TR$=""
  53. 1170  FOR I=1 TO 4:TR$=TR$+RIGHT$(STR$(C(I)),1):NEXT I
  54. 1180  BEEP:LOCATE 20,25:PRINT"Please evaluate try #" GU "- " TR$
  55. 1190  LOCATE 21,33:PRINT"Black pegs = ";
  56. 1200  GOSUB 59990:IF INSTR("01234",IKEY$)=0 THEN 1200 ELSE PRINTIKEY$:BB=VAL(IKEY$)
  57. 1210  LOCATE 22,33:PRINT"White pegs = ";
  58. 1220  GOSUB 59990:IF INSTR("01234",IKEY$)=0 THEN 1220 ELSE PRINTIKEY$:WW=VAL(IKEY$)
  59. 1230  FOR I=1 TO 4:GT(GU,I)=C(I):NEXT I:GT(GU,5)=BB:GT(GU,6)=WW
  60. 1240  NU$=CO$:GOSUB 3000
  61. 1250  FOR I=1 TO 4:C(I)=T(I):NEXT I
  62. 1260  NU$=TR$:GOSUB 3000
  63. 1270  GOSUB 4000 'evaluate guess
  64. 1280  FOR I=1 TO 4:T(I)=C(I):NEXT I
  65. 1290  IF BB=B AND WW=W THEN 1320
  66. 1300  LOCATE 23,18:PRINT"Your evaluation should have been B =" B " W =" W
  67. 1310  GT(GU,5)=B:GT(GU,6)=W:TIMEOUT=2:GOSUB 59950
  68. 1320  LOCATE YY,XX:PRINT USING" ## = \  \ - B = # W = #";GU,TR$,GT(GU,5),GT(GU,6);
  69. 1330  IF XX=43 THEN YY=YY+1:XX=12 ELSE XX=43
  70. 1340  FOR I=20 TO 23:LOCATE I,1:PRINT SPACE$(80);:NEXT I
  71. 1350  IF B=4 THEN PLAY "mbc16c16c16ge8g":PP=PP+GU:LOCATE 20,34:PRINT"I got it !!!":RETURN
  72. 1360  IF B+W=4 THEN GOSUB 5000
  73. 1370  IF B+W=0 THEN GOSUB 6000
  74. 1380  IF B=0 AND W<>0 THEN GOSUB 7000
  75. 1390  LOCATE 20,30:PRINT"Quiet!  I'm thinking."
  76. 1400  GOTO 1110
  77. 2000  CLS:GOSUB 500:YY=5:XX=12:ON KEY(10) GOSUB 2800
  78. 2010  FOR Y=2 TO 18:LOCATE Y,9:PRINT"CSRLIN";:LOCATE Y,39:PRINT"INKEY$OFF";:LOCATE Y,73:PRINT"CSRLIN";:NEXT Y
  79. 2015  LOCATE 2,9:PRINT STRING$(64,"CSRLIN");:LOCATE 18,9:PRINT STRING$(64,"CSRLIN");
  80. 2020  LOCATE 20,10:PRINT"Now it's my turn to make a code.":TIMEOUT=5:GOSUB 59950
  81. 2030  LOCATE 20,1:PRINT SPACE$(80):LOCATE 20,10:PRINT"O.K.  I've got it now.  Take your first guess."
  82. 2040  NO=0:FOR I=1 TO 4:C(I)=INT(RND*6)+1:NEXT I:TIMEOUT=3:GOSUB 59950
  83. 2050  LOCATE 20,1:PRINT SPACE$(80):LOCATE 20,10:PRINT"Enter your guess (4 digits) - ";
  84. 2060  INPUT TR$:IF LEN(TR$)<>4 THEN 2050
  85. 2070  NU$=TR$:GOSUB 3000
  86. 2080  IF ER<>0 THEN 2050
  87. 2090  GOSUB 4000 'evaluate guess
  88. 2100  NO=NO+1:LOCATE YY,XX:PRINT USING" ## = \  \ - B = # W = #";NO,TR$,B,W;
  89. 2110  IF XX=43 THEN YY=YY+1:XX=12 ELSE XX=43
  90. 2120  FOR I=20 TO 23:LOCATE I,1:PRINT SPACE$(80);:NEXT I
  91. 2130  IF B=4 THEN PLAY "mbc16c16c16ge8g":PC=PC+NO:LOCATE 20,33:PRINT"You got it !!!":ON KEY(10) GOSUB 2700:RETURN ELSE 2050
  92. 2700  RUN "menu"
  93. 2800  LOCATE 25,10:PRINT"The code was "C(1) C(2) C(3) C(4);:TIMEOUT=5:GOSUB 59950
  94. 2810  GOTO 2700
  95. 3000  ER=0
  96. 3010  FOR I=1 TO 4:T(I)=VAL(MID$(NU$,I,1)):IF T(I)<1 OR T(I)>6 THEN ER=1
  97. 3020  NEXT I:RETURN
  98. 3500  GOSUB 3700 'get next entry from possibility table
  99. 3510  FOR L=1 TO GU-1:FOR J=1 TO 4:T(J)=GT(L,J):NEXT J
  100. 3520  GOSUB 4000 'evaluate old guess using new guess as code
  101. 3530  IF GT(L,5)=B AND GT(L,6)=W THEN NEXT L:RETURN ELSE 3500
  102. 3700  C4=C4+1:IF C4>=7 THEN C4=0:GOTO 3720
  103. 3710  IF PO(C4,4)=0 THEN 3700 ELSE C(4)=PO(C4,4):RETURN
  104. 3720  C3=C3+1:IF C3>=7 THEN C3=1:GOTO 3740
  105. 3730  IF PO(C3,3)<>0 THEN C(3)=PO(C3,3):GOTO 3700 ELSE 3720
  106. 3740  C2=C2+1:IF C2>=7 THEN C2=1:GOTO 3760
  107. 3750  IF PO(C2,2)<>0 THEN C(2)=PO(C2,2):GOTO 3730 ELSE 3740
  108. 3760  C1=C1+1:IF C1>=7 THEN PRINT"Error in probability table.":END
  109. 3770  IF PO(C1,1)<>0 THEN C(1)=PO(C1,1):GOTO 3750 ELSE 3760
  110. 4000  B=0:W=0:FOR I=1 TO 4:W(I)=C(I):NEXT I:FOR I=1 TO 4
  111. 4010  IF W(I)=T(I) THEN W(I)=-1:T(I)=-2:B=B+1
  112. 4020  NEXT I:FOR I=1 TO 4:FOR J=1 TO 4
  113. 4030  IF T(I)=W(J) THEN W(J)=-1:W=W+1:GOTO 4050
  114. 4040  NEXT J
  115. 4050  NEXT I:RETURN
  116. 5000  FOR I=1 TO 4:EL(I)=I:NEXT I:FOR I=1 TO 4:EL(GT(GU,I))=0:NEXT I
  117. 5010  FOR I=1 TO 6:IF EL(I)<>0 THEN PO(I,1)=0:PO(I,2)=0:PO(I,3)=0:PO(I,4)=0
  118. 5020  NEXT I:RETURN
  119. 6000  FOR I=1 TO 4:FOR J=1 TO 4:PO(GT(GU,I),J)=0:NEXT J,I:RETURN
  120. 7000  FOR I=1 TO 4:PO(GT(GU,I),I)=0:NEXT I:RETURN
  121. 59950  TIMEOUT$=TIME$:TIME2=VAL(LEFT$(TIMEOUT$,2))*120+VAL(MID$(TIMEOUT$,4,2))*60+VAL(RIGHT$(TIMEOUT$,2))
  122. 59960  TIMEOUT$=TIME$:TIME3=VAL(LEFT$(TIMEOUT$,2))*120+VAL(MID$(TIMEOUT$,4,2))*60+VAL(RIGHT$(TIMEOUT$,2))
  123. 59970  IF TIMEOUT > TIME3 - TIME2 THEN 59960 ELSE RETURN
  124. 59980  RNDTIME$=TIME$:RNDVAL=VAL(LEFT$(RNDTIME$,2))*120+VAL(MID$(RNDTIME$,4,2))*60+VAL(RIGHT$(RNDTIME$,2)):RANDOMIZE RNDVAL:RETURN
  125. 59990  IKEY$=INKEY$:IF IKEY$="" THEN 59990 ELSE RETURN
  126.