home *** CD-ROM | disk | FTP | other *** search
/ Generous Efforts of Many / gemcd.zip / GEM.CD.B.po / GAMES:BASIC.3 / CLOUZOT.bas < prev    next >
BASIC Source File  |  2010-05-14  |  10KB  |  234 lines

  1. 2  REM        
  2. 3  REM   OUTWIT A BRILLIANT          DETECTIVE.
  3. 4  REM      
  4. 5  REM      
  5. 6  REM   APPLESOFT  32K
  6. 7  REM        
  7. 8  REM   AUTHOR UNKNOWN
  8. 9  REM        
  9. 10  REM  ADAPTED TO APPLE FROM       PET BY KEITH FAULKNER.
  10. 11  REM  ***********************
  11. 13  REM  *                     *
  12. 14  REM  *  SAN MATEO COUNTY   *
  13. 15  REM  * OFFICE OF EDUCATION *
  14. 16  REM  *          &          *
  15. 17  REM  *   COMPUTER-USING    *
  16. 18  REM  *      EDUCATORS      *
  17. 19  REM  *                     *
  18. 20  REM  *      SOFTSWAP       *
  19. 21  REM  *                     *
  20. 22  REM  *   333 MAIN STREET   *
  21. 23  REM  *     REDWOOD CITY    *
  22. 24  REM  *       CA 94063      *
  23. 25  REM  *                     *
  24. 26  REM  *    (415)363-5472    *
  25. 28  REM  *                     *
  26. 29  REM  ***********************
  27. 30  REM  *PROGRAM MAY BE COPIED*
  28. 31  REM  *FOR EDUCATIONAL USE &*
  29. 32  REM  *MAY NOT BE SOLD.COPY-*
  30. 33  REM  *RIGHT 1982 CUE,INC   *
  31. 34  REM  ***********************
  32. 40  GOTO 100
  33. 50  VTAB 22: HTAB 1
  34. 51  PRINT "PRESS <ESC> TO END"
  35. 52  PRINT "PRESS <RETURN> TO CONTINUE => ";
  36. 53  GET BV$
  37. 54  IF BV$ =  CHR$(27)  THEN 30000
  38. 55  IF BV$ < > CHR$(13)  THEN 53
  39. 56  RETURN 
  40. 60  GET I$: PRINT I$:RE =  ASC(I$) -64: RETURN 
  41. 100 C$ = "CLOUZOT: ":I =  RND( - PEEK(79)):SP$ = "                     "
  42. 110  GOSUB 1800: REM    POKE SOUND SUBROUTINE TO PAGE 3
  43. 120 A = 9:N = 6: DIM P(A,1),AL$(5),T(A,N +1),A(A,N +1),CN$(5):N9 = .9999: GOTO 410
  44. 130  DATA "AUNT ANN","BENSON
  45. 140  DATA "CORA COOK","DR. DENTON
  46. 150  DATA "ESMERALDA","FRED FELL
  47. 160  DATA "THE KILLER
  48. 170  DATA "INNOCENT","GUILTY
  49. 180  DATA "A MAN","A WOMAN
  50. 190  DATA "BLUE-EYED","BROWN-EYED
  51. 200  DATA "LEFT-HANDED","RIGHT-HANDED
  52. 210  DATA "TALL","SHORT
  53. 220  DATA "RICH","POOR
  54. 230  DATA "ATHLETIC","CLUMSY
  55. 240  DATA "BRILLIANT","STUPID
  56. 250  DATA "AMBITIOUS","LAZY
  57. 260  DATA "UNNHH!  NOT JIU JITSU, KATO, YOU FOOL!
  58. 270  DATA "WHO HAS REMOVED THE ARM FROM THIS CHAIR?
  59. 280  DATA "NEVER MIND, THE SURETE PAYS FOR DAMAGES.
  60. 290  DATA "OF COURSE, I HAD ALREADY DEDUCED THAT.
  61. 300  DATA "I AM NOBODY'S FOOL, MY FRIEND!
  62. 310  DATA "LET GO OF THE CUE-STICK, YOU OAF!","HMMM. VERY SUSPICIOUS.
  63. 320  DATA "IN FRANCE THE WEEK OF THE MURDER
  64. 330  DATA "ILL THE EVENING OF THE KILLING
  65. 340  DATA "WITH RELATIVES IN AKRON WHEN THE MURDER WAS COMMITTED
  66. 350  DATA "IN JAIL, DRUNK WHEN POOR VINCENT DIED
  67. 360  DATA "AT A STATE DINNER THAT NIGHT
  68. 370  DATA "AT THE BALLET WHEN THE DEED WAS DONE
  69. 380  DATA "SCANDALOUS!","YES, YES, VERY SAD","IN FRANCE THAT WOULD BE ILLEGAL
  70. 390  DATA "I WAS AFFLICTED THUS, BEFORE I JOINED THE SURETE
  71. 400  DATA "WHO IS MORE DESERVING?","QUELLE DOMMAGE!
  72. 410  FOR S = 1 TO N +1: READ S$(S): NEXT 
  73. 420  FOR P = 1 TO A: READ P$(P,0),P$(P,1): NEXT : FOR I = 0 TO 6: READ J$(I): NEXT 
  74. 430  FOR I = 0 TO 5: READ AL$(I): NEXT : FOR I = 0 TO 5: READ CN$(I): NEXT 
  75. 440  TEXT : HOME 
  76. 450  VTAB 8
  77. 460  PRINT  TAB( 8)"C  L  O  U  Z  O  T  !
  78. 465  PRINT : PRINT "DO YOU WANT SOUND (Y/N)? ";
  79. 466  GET SN$: IF SN$ < >"Y"  AND SN$ < >"N"  THEN 466
  80. 467  PRINT SN$
  81. 468  IF SN$ = "N"  THEN  POKE 770,96
  82. 470  PRINT : PRINT : PRINT "DO YOU WANT THE RULES (Y/N)? ";: GOSUB 60
  83. 475  IF I$ = "N"  THEN 885
  84. 480  IF I$ < >"Y" GOTO 450
  85. 485  HOME 
  86. 490  PRINT : PRINT 
  87. 500  PRINT "YOU ARE ASSISTING THE GREAT INSPECTOR
  88. 510  PRINT 
  89. 520  PRINT  "CLOUZOT.  A MURDER HAS BEEN COMMITTED.
  90. 530  PRINT 
  91. 540  PRINT "THERE ARE "N" SUSPECTS. "N -1" ARE INNOCENT -
  92. 550  PRINT 
  93. 560  PRINT "THEY ALWAYS TELL THE TRUTH.  THE OTHER 
  94. 570  PRINT 
  95. 580  PRINT "IS GUILTY AND MAY LIE.  WHENEVER THE"
  96. 590  PRINT 
  97. 600  PRINT "INSPECTOR ASKS FOR A SUSPECT, TYPE:"
  98. 610  FOR S = 1 TO N: PRINT : PRINT  TAB( 5); CHR$(S +64)" FOR "S$(S);
  99. 620  IF S = 2  THEN  PRINT " THE BUTLER";
  100. 630  NEXT : PRINT "."
  101. 640  GOSUB 50
  102. 650  HOME : PRINT : PRINT 
  103. 660  PRINT "  CLOUZOT WILL THEN INTERROGATE THAT"
  104. 670  PRINT 
  105. 680  PRINT "SUSPECT, AND YOU WILL SEE THE ANSWER.
  106. 690  PRINT : PRINT : PRINT 
  107. 700  PRINT "  WHEN YOU THINK YOU KNOW THE KILLER,
  108. 710  PRINT 
  109. 720  PRINT "TYPE K.  THE INSPECTOR WILL CHALLENGE
  110. 730  PRINT 
  111. 740  PRINT "YOU TO NAME THE GUILTY PARTY.  THEN,
  112. 750  PRINT 
  113. 760  PRINT "TYPE THE SUSPECT'S INITIAL TO MAKE THE
  114. 770  PRINT 
  115. 780  PRINT "ACCUSATION.
  116. 790  GOSUB 50: HOME : VTAB 2
  117. 800  PRINT "  YOU SET THE LEVEL OF DIFFICULTY (THE 
  118. 810  PRINT 
  119. 820  PRINT "LIKELIHOOD OF THE GUILTY PARTY LYING),
  120. 830  PRINT 
  121. 840  PRINT "FROM 0 (EASIEST) TO 5 (THE KILLER WILL
  122. 850  PRINT 
  123. 860  PRINT "ALWAYS TELL THE TRUTH).
  124. 870  PRINT : PRINT : PRINT 
  125. 880  PRINT "YOU MAY TYPE Q AT ANY TIME TO QUIT.
  126. 885  IF SN$ = "N"  THEN 950
  127. 890 I = 132: GOSUB 1480:I = 117: GOSUB 1490:I = 0: GOSUB 1490:I = 104: GOSUB 1490:I = 99: GOSUB 1480
  128. 900 I = 0: GOSUB 1480
  129. 910 I = 87: GOSUB 1490:I = 83: GOSUB 1490:I = 0: GOSUB 1490: GOSUB 1490:I = 87: GOSUB 1490:I = 99: GOSUB 1490
  130. 920 I = 87: GOSUB 1490:I = 83: GOSUB 1490:I = 61: GOSUB 1490:I = 66: GOSUB 1490:I = 83: GOSUB 1490:I = 99: GOSUB 1490
  131. 930 I = 0: GOSUB 1490:I = 66: GOSUB 1490:I = 69: GOSUB 1480:I = 0: GOSUB 1490:I = 83: GOSUB 1490:I = 87: GOSUB 1490
  132. 940 I = 93: GOSUB 1490:I = 99: GOSUB 1470
  133. 950  GOSUB 50
  134. 960  HOME : VTAB 10
  135. 970  PRINT "DIFFICULTY LEVEL (0-5): ";: GOSUB 60:D = RE +16
  136. 980  IF I$ <"0"  OR I$ >"5"  THEN  HOME : VTAB 8: PRINT "ZERO TO FIVE ONLY!": PRINT : GOTO 970
  137. 990 D = D/5:G = 40 +A *D: PRINT : PRINT  TAB( 10)"GOOD LUCK!": PRINT 
  138. 1000 K =  INT(N * RND(1)) +1
  139. 1010  FOR S = 1 TO N:T(1,S) = 0:T(2,S) = 0: NEXT 
  140. 1020 S = 1: IF K = 2  OR K = 4  OR K = 6  THEN S = 0
  141. 1030 T(2,N +1) = S
  142. 1040 T(1,K) = 1: FOR P = 3 TO A: FOR S = 1 TO N:T(P,S) =  INT(.5 + RND(1)): NEXT 
  143. 1050 T(P,S) = T(P,K): NEXT :AL =  RND(1) *6
  144. 1060  FOR C = 1 TO G: PRINT "NEXT SUSPECT? ";: GOSUB 60
  145. 1070  VTAB ( PEEK(37))
  146. 1080  IF RE = 17  THEN 1320
  147. 1090  IF RE = 11  THEN 1300
  148. 1100 W = RE: IF W <1  OR W >N  THEN  PRINT "YOU STUPID FOOL!  NEXT SUSPECT! ";: GOSUB 60: GOTO 1080
  149. 1110 P =  INT(A * RND(A) +N9)
  150. 1120 S =  INT((N +4) * RND(A) +N9)
  151. 1130  IF S >N  THEN S = N +1: IF P = 1  THEN 1110
  152. 1140 L = T(P,S): IF P = 2  AND S < = N  THEN 1110
  153. 1150  IF S < >W  THEN AR$ = S$(S) +" IS ": GOTO 1170
  154. 1160 AR$ = "I'M ": IF P = 1  THEN 1110
  155. 1170  IF W = K  AND  RND(1) >D  THEN L = 1 -L
  156. 1180 A$ = P$(P,L):I$ = " " +S$(W) +": ": IF P >1  THEN X = W: GOTO 1220
  157. 1190  IF L  OR  RND(A) <.7  THEN 1110
  158. 1200 X = S +AL: IF X >5  THEN X = X -5: IF X >5  THEN X = X -5
  159. 1210 AR$ =  LEFT$(AR$, LEN(AR$) -3) +"WAS ":A$ = AL$(X):X = A
  160. 1220 I$ = I$ +AR$ +A$: GOSUB 1500: IF I = 0  THEN 1110
  161. 1230  IF P = 1  THEN  GOSUB 1680
  162. 1240 J = 50 * RND(A): IF J <7  THEN I$ = C$ +J$(J): GOTO 1280
  163. 1250  IF J <44  OR P <5  THEN 1290
  164. 1260  IF L  THEN I$ = C$ +CN$( RND(1) *6): GOTO 1280
  165. 1270 I$ = C$ +"PERHAPS NOT SO " +P$(P,L) +" AS CLOUZOT, EH?
  166. 1280  PRINT : GOSUB 1740
  167. 1290  NEXT C: HOME : VTAB 10: PRINT "THAT IS ENOUGH CLUES": GOTO 1310
  168. 1300  HOME : VTAB 8: PRINT "AHHH, YOU HAVE BEEN PAYING ATTENTION."
  169. 1310  PRINT : PRINT "WHO IS THE KILLER? ";: GOSUB 60: PRINT 
  170. 1320  HOME : VTAB 7
  171. 1330  IF RE = 17  THEN  PRINT "HA HAA!": GOTO 1390
  172. 1340 I = RE: IF I <1  OR I >N  THEN  PRINT "DO NOT TRIFLE WITH ME, M'SIEU!": GOTO 1310
  173. 1350  IF K < >I  THEN  PRINT "WRONG!  ": GOTO 1390
  174. 1360 Z = 0: PRINT "VE";: FOR I = 1 TO (G +1 -C)/8: PRINT "R";: NEXT 
  175. 1370  PRINT "Y GOOD.  SOMEDAY YOU TOO MAY BE
  176. 1380  PRINT "A GREAT CRIMINOLOGIST!": GOTO 1440
  177. 1390 Z = A: PRINT : PRINT "ONLY A MASTER BRAIN LIKE MINE KNOWS THE"
  178. 1400  PRINT "KILLER IS:": PRINT :Q = 255
  179. 1410  FOR M = 3 TO A: FOR J = 0 TO 999: NEXT :I = 240 -20 *M: GOSUB 1490: PRINT P$(M,T(M,K))", ";: IF M = 6  THEN  PRINT 
  180. 1420 Q = Q -A: NEXT : FOR I = 0 TO 1500: NEXT : PRINT : PRINT : INVERSE : HTAB 10: PRINT S$(K);: NORMAL : PRINT "!
  181. 1430  POKE 768,255: POKE 769,255: CALL 770
  182. 1440  FOR I = 0 TO 400: NEXT : PRINT : PRINT "YOU HAD "C -1" CLUES";
  183. 1450  IF Z  THEN  PRINT ", YOU BUMBLING CRETIN!
  184. 1460  GOSUB 50: GOTO 30000
  185. 1470  POKE 768,I +1: POKE 769,40: CALL 770
  186. 1480  FOR T = 0 TO 50: NEXT 
  187. 1490  IF I = 0  THEN  FOR T = 1 TO 150: NEXT : RETURN 
  188. 1495  FOR T = 0 TO 100: NEXT : POKE 768,I +1: POKE 769,50: CALL 770: RETURN 
  189. 1500 R = A(P,S):Q =  INT(R/10):R = R -10 *Q: IF L  THEN I = R:R = Q:Q = I
  190. 1510  IF Q = A  THEN 1590
  191. 1520  IF R = A  OR R = X  OR Q = X  THEN I = 0: RETURN 
  192. 1530  IF R  AND Q  THEN 1590
  193. 1540  GOSUB 1730: IF Q  THEN  PRINT : PRINT C$"OF COURSE...": GOTO 1630
  194. 1550 R = R +X: IF R >X  THEN R = A
  195. 1560  IF L  THEN I = R:R = Q:Q = I
  196. 1570 I = A:A(P,S) = Q *130 +R: RETURN 
  197. 1580 :
  198. 1590  GOSUB 1730
  199. 1600  FOR I = 0 TO 2500: NEXT : PRINT C$"J'ACCUSE! ": FOR I = 0 TO 2500: NEXT 
  200. 1610  PRINT "MAIS- BY NOW YOU MUST KNOW.": GOTO 1310
  201. 1620 :
  202. 1630  FOR I = 1 TO A: FOR J = 1 TO N +1:Y = A(I,J):Z =  INT(Y/10):Y = Y -10 *Z
  203. 1640  IF Y  AND Y < >Q  AND Y < >W  THEN Y = A: IF Z = Q  OR Z = W  THEN 1600
  204. 1650  IF Z  AND Z < >Q  AND Z < >W  THEN Z = A: IF Y  AND Y <A  THEN 1600
  205. 1660 A(I,J) = Z *130 +Y: NEXT J,I: GOTO 1550
  206. 1670 :
  207. 1680  FOR I = 1 TO A: FOR J = 1 TO N +1:Y = A(I,J):Z =  INT(Y/10):Y = Y -10 *Z
  208. 1690  IF Y = S  THEN Y = A: IF Z  THEN 1590
  209. 1700  IF Z = S  THEN Z = A: IF Y  THEN 1590
  210. 1710 A(I,J) = Z *130 +Y: NEXT J,I: RETURN 
  211. 1720 :
  212. 1730 :
  213. 1740 Z2 = 0
  214. 1750 Z =  LEN(I$): IF Z <39  THEN I$ = I$ + LEFT$(SP$,39 -Z): GOTO 1790
  215. 1760  FOR Z = 39 TO A  STEP  -1:T =  ASC( MID$ (I$,Z,1)):T = T -128 *(T >127): IF T < >32  AND T < >45  THEN  NEXT 
  216. 1770  PRINT  LEFT$(I$,Z): IF Z2 = 0  THEN  FOR Z2 = 8 TO 12: IF  MID$ (I$,Z2,1) < >":"  THEN  NEXT 
  217. 1780 I$ =  LEFT$(SP$,Z2 +1) + MID$ (I$,Z +1): GOTO 1750
  218. 1790  PRINT I$: RETURN 
  219. 1800  POKE 770,173: POKE 771,48: POKE 772,192: POKE 773,136: POKE 774,208: POKE 775,5: POKE 776,206: POKE 777,1: POKE 778,3: POKE 779,240: POKE 780,9: POKE 781,202
  220. 1810  POKE 782,208: POKE 783,245: POKE 784,174: POKE 785,0: POKE 786,3: POKE 787,76: POKE 788,2: POKE 789,3: POKE 790,96: POKE 791,0: POKE 792,0
  221. 1820  RETURN 
  222. 30000  HOME 
  223. 30010  VTAB 10
  224. 30020  PRINT "WOULD YOU LIKE TO PLAY AGAIN (Y/N)? ";
  225. 30030  GET RS$
  226. 30040  IF RS$ = "Y"  THEN 960
  227. 30050  IF RS$ < >"N"  THEN 30030
  228. 30060  HOME : VTAB 10
  229. 30070  PRINT "WOULD ANYONE ELSE LIKE TO PLAY (Y/N)? ";
  230. 30080  GET RS$
  231. 30090  IF RS$ = "Y"  THEN  RUN 
  232. 30100  IF RS$ < >"N"  THEN 30080
  233. 30110  PRINT 
  234. 30120  PRINT  CHR$(4)"- STARTUP"