home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Generous Efforts of Many
/
gemcd.zip
/
GEM.CD.B.po
/
GAMES:BASIC.3
/
CLOUZOT.bas
< prev
next >
Wrap
BASIC Source File
|
2010-05-14
|
10KB
|
234 lines
2 REM
3 REM OUTWIT A BRILLIANT DETECTIVE.
4 REM
5 REM
6 REM APPLESOFT 32K
7 REM
8 REM AUTHOR UNKNOWN
9 REM
10 REM ADAPTED TO APPLE FROM PET BY KEITH FAULKNER.
11 REM ***********************
13 REM * *
14 REM * SAN MATEO COUNTY *
15 REM * OFFICE OF EDUCATION *
16 REM * & *
17 REM * COMPUTER-USING *
18 REM * EDUCATORS *
19 REM * *
20 REM * SOFTSWAP *
21 REM * *
22 REM * 333 MAIN STREET *
23 REM * REDWOOD CITY *
24 REM * CA 94063 *
25 REM * *
26 REM * (415)363-5472 *
28 REM * *
29 REM ***********************
30 REM *PROGRAM MAY BE COPIED*
31 REM *FOR EDUCATIONAL USE &*
32 REM *MAY NOT BE SOLD.COPY-*
33 REM *RIGHT 1982 CUE,INC *
34 REM ***********************
40 GOTO 100
50 VTAB 22: HTAB 1
51 PRINT "PRESS <ESC> TO END"
52 PRINT "PRESS <RETURN> TO CONTINUE => ";
53 GET BV$
54 IF BV$ = CHR$(27) THEN 30000
55 IF BV$ < > CHR$(13) THEN 53
56 RETURN
60 GET I$: PRINT I$:RE = ASC(I$) -64: RETURN
100 C$ = "CLOUZOT: ":I = RND( - PEEK(79)):SP$ = " "
110 GOSUB 1800: REM POKE SOUND SUBROUTINE TO PAGE 3
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
130 DATA "AUNT ANN","BENSON
140 DATA "CORA COOK","DR. DENTON
150 DATA "ESMERALDA","FRED FELL
160 DATA "THE KILLER
170 DATA "INNOCENT","GUILTY
180 DATA "A MAN","A WOMAN
190 DATA "BLUE-EYED","BROWN-EYED
200 DATA "LEFT-HANDED","RIGHT-HANDED
210 DATA "TALL","SHORT
220 DATA "RICH","POOR
230 DATA "ATHLETIC","CLUMSY
240 DATA "BRILLIANT","STUPID
250 DATA "AMBITIOUS","LAZY
260 DATA "UNNHH! NOT JIU JITSU, KATO, YOU FOOL!
270 DATA "WHO HAS REMOVED THE ARM FROM THIS CHAIR?
280 DATA "NEVER MIND, THE SURETE PAYS FOR DAMAGES.
290 DATA "OF COURSE, I HAD ALREADY DEDUCED THAT.
300 DATA "I AM NOBODY'S FOOL, MY FRIEND!
310 DATA "LET GO OF THE CUE-STICK, YOU OAF!","HMMM. VERY SUSPICIOUS.
320 DATA "IN FRANCE THE WEEK OF THE MURDER
330 DATA "ILL THE EVENING OF THE KILLING
340 DATA "WITH RELATIVES IN AKRON WHEN THE MURDER WAS COMMITTED
350 DATA "IN JAIL, DRUNK WHEN POOR VINCENT DIED
360 DATA "AT A STATE DINNER THAT NIGHT
370 DATA "AT THE BALLET WHEN THE DEED WAS DONE
380 DATA "SCANDALOUS!","YES, YES, VERY SAD","IN FRANCE THAT WOULD BE ILLEGAL
390 DATA "I WAS AFFLICTED THUS, BEFORE I JOINED THE SURETE
400 DATA "WHO IS MORE DESERVING?","QUELLE DOMMAGE!
410 FOR S = 1 TO N +1: READ S$(S): NEXT
420 FOR P = 1 TO A: READ P$(P,0),P$(P,1): NEXT : FOR I = 0 TO 6: READ J$(I): NEXT
430 FOR I = 0 TO 5: READ AL$(I): NEXT : FOR I = 0 TO 5: READ CN$(I): NEXT
440 TEXT : HOME
450 VTAB 8
460 PRINT TAB( 8)"C L O U Z O T !
465 PRINT : PRINT "DO YOU WANT SOUND (Y/N)? ";
466 GET SN$: IF SN$ < >"Y" AND SN$ < >"N" THEN 466
467 PRINT SN$
468 IF SN$ = "N" THEN POKE 770,96
470 PRINT : PRINT : PRINT "DO YOU WANT THE RULES (Y/N)? ";: GOSUB 60
475 IF I$ = "N" THEN 885
480 IF I$ < >"Y" GOTO 450
485 HOME
490 PRINT : PRINT
500 PRINT "YOU ARE ASSISTING THE GREAT INSPECTOR
510 PRINT
520 PRINT "CLOUZOT. A MURDER HAS BEEN COMMITTED.
530 PRINT
540 PRINT "THERE ARE "N" SUSPECTS. "N -1" ARE INNOCENT -
550 PRINT
560 PRINT "THEY ALWAYS TELL THE TRUTH. THE OTHER
570 PRINT
580 PRINT "IS GUILTY AND MAY LIE. WHENEVER THE"
590 PRINT
600 PRINT "INSPECTOR ASKS FOR A SUSPECT, TYPE:"
610 FOR S = 1 TO N: PRINT : PRINT TAB( 5); CHR$(S +64)" FOR "S$(S);
620 IF S = 2 THEN PRINT " THE BUTLER";
630 NEXT : PRINT "."
640 GOSUB 50
650 HOME : PRINT : PRINT
660 PRINT " CLOUZOT WILL THEN INTERROGATE THAT"
670 PRINT
680 PRINT "SUSPECT, AND YOU WILL SEE THE ANSWER.
690 PRINT : PRINT : PRINT
700 PRINT " WHEN YOU THINK YOU KNOW THE KILLER,
710 PRINT
720 PRINT "TYPE K. THE INSPECTOR WILL CHALLENGE
730 PRINT
740 PRINT "YOU TO NAME THE GUILTY PARTY. THEN,
750 PRINT
760 PRINT "TYPE THE SUSPECT'S INITIAL TO MAKE THE
770 PRINT
780 PRINT "ACCUSATION.
790 GOSUB 50: HOME : VTAB 2
800 PRINT " YOU SET THE LEVEL OF DIFFICULTY (THE
810 PRINT
820 PRINT "LIKELIHOOD OF THE GUILTY PARTY LYING),
830 PRINT
840 PRINT "FROM 0 (EASIEST) TO 5 (THE KILLER WILL
850 PRINT
860 PRINT "ALWAYS TELL THE TRUTH).
870 PRINT : PRINT : PRINT
880 PRINT "YOU MAY TYPE Q AT ANY TIME TO QUIT.
885 IF SN$ = "N" THEN 950
890 I = 132: GOSUB 1480:I = 117: GOSUB 1490:I = 0: GOSUB 1490:I = 104: GOSUB 1490:I = 99: GOSUB 1480
900 I = 0: GOSUB 1480
910 I = 87: GOSUB 1490:I = 83: GOSUB 1490:I = 0: GOSUB 1490: GOSUB 1490:I = 87: GOSUB 1490:I = 99: GOSUB 1490
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
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
940 I = 93: GOSUB 1490:I = 99: GOSUB 1470
950 GOSUB 50
960 HOME : VTAB 10
970 PRINT "DIFFICULTY LEVEL (0-5): ";: GOSUB 60:D = RE +16
980 IF I$ <"0" OR I$ >"5" THEN HOME : VTAB 8: PRINT "ZERO TO FIVE ONLY!": PRINT : GOTO 970
990 D = D/5:G = 40 +A *D: PRINT : PRINT TAB( 10)"GOOD LUCK!": PRINT
1000 K = INT(N * RND(1)) +1
1010 FOR S = 1 TO N:T(1,S) = 0:T(2,S) = 0: NEXT
1020 S = 1: IF K = 2 OR K = 4 OR K = 6 THEN S = 0
1030 T(2,N +1) = S
1040 T(1,K) = 1: FOR P = 3 TO A: FOR S = 1 TO N:T(P,S) = INT(.5 + RND(1)): NEXT
1050 T(P,S) = T(P,K): NEXT :AL = RND(1) *6
1060 FOR C = 1 TO G: PRINT "NEXT SUSPECT? ";: GOSUB 60
1070 VTAB ( PEEK(37))
1080 IF RE = 17 THEN 1320
1090 IF RE = 11 THEN 1300
1100 W = RE: IF W <1 OR W >N THEN PRINT "YOU STUPID FOOL! NEXT SUSPECT! ";: GOSUB 60: GOTO 1080
1110 P = INT(A * RND(A) +N9)
1120 S = INT((N +4) * RND(A) +N9)
1130 IF S >N THEN S = N +1: IF P = 1 THEN 1110
1140 L = T(P,S): IF P = 2 AND S < = N THEN 1110
1150 IF S < >W THEN AR$ = S$(S) +" IS ": GOTO 1170
1160 AR$ = "I'M ": IF P = 1 THEN 1110
1170 IF W = K AND RND(1) >D THEN L = 1 -L
1180 A$ = P$(P,L):I$ = " " +S$(W) +": ": IF P >1 THEN X = W: GOTO 1220
1190 IF L OR RND(A) <.7 THEN 1110
1200 X = S +AL: IF X >5 THEN X = X -5: IF X >5 THEN X = X -5
1210 AR$ = LEFT$(AR$, LEN(AR$) -3) +"WAS ":A$ = AL$(X):X = A
1220 I$ = I$ +AR$ +A$: GOSUB 1500: IF I = 0 THEN 1110
1230 IF P = 1 THEN GOSUB 1680
1240 J = 50 * RND(A): IF J <7 THEN I$ = C$ +J$(J): GOTO 1280
1250 IF J <44 OR P <5 THEN 1290
1260 IF L THEN I$ = C$ +CN$( RND(1) *6): GOTO 1280
1270 I$ = C$ +"PERHAPS NOT SO " +P$(P,L) +" AS CLOUZOT, EH?
1280 PRINT : GOSUB 1740
1290 NEXT C: HOME : VTAB 10: PRINT "THAT IS ENOUGH CLUES": GOTO 1310
1300 HOME : VTAB 8: PRINT "AHHH, YOU HAVE BEEN PAYING ATTENTION."
1310 PRINT : PRINT "WHO IS THE KILLER? ";: GOSUB 60: PRINT
1320 HOME : VTAB 7
1330 IF RE = 17 THEN PRINT "HA HAA!": GOTO 1390
1340 I = RE: IF I <1 OR I >N THEN PRINT "DO NOT TRIFLE WITH ME, M'SIEU!": GOTO 1310
1350 IF K < >I THEN PRINT "WRONG! ": GOTO 1390
1360 Z = 0: PRINT "VE";: FOR I = 1 TO (G +1 -C)/8: PRINT "R";: NEXT
1370 PRINT "Y GOOD. SOMEDAY YOU TOO MAY BE
1380 PRINT "A GREAT CRIMINOLOGIST!": GOTO 1440
1390 Z = A: PRINT : PRINT "ONLY A MASTER BRAIN LIKE MINE KNOWS THE"
1400 PRINT "KILLER IS:": PRINT :Q = 255
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
1420 Q = Q -A: NEXT : FOR I = 0 TO 1500: NEXT : PRINT : PRINT : INVERSE : HTAB 10: PRINT S$(K);: NORMAL : PRINT "!
1430 POKE 768,255: POKE 769,255: CALL 770
1440 FOR I = 0 TO 400: NEXT : PRINT : PRINT "YOU HAD "C -1" CLUES";
1450 IF Z THEN PRINT ", YOU BUMBLING CRETIN!
1460 GOSUB 50: GOTO 30000
1470 POKE 768,I +1: POKE 769,40: CALL 770
1480 FOR T = 0 TO 50: NEXT
1490 IF I = 0 THEN FOR T = 1 TO 150: NEXT : RETURN
1495 FOR T = 0 TO 100: NEXT : POKE 768,I +1: POKE 769,50: CALL 770: RETURN
1500 R = A(P,S):Q = INT(R/10):R = R -10 *Q: IF L THEN I = R:R = Q:Q = I
1510 IF Q = A THEN 1590
1520 IF R = A OR R = X OR Q = X THEN I = 0: RETURN
1530 IF R AND Q THEN 1590
1540 GOSUB 1730: IF Q THEN PRINT : PRINT C$"OF COURSE...": GOTO 1630
1550 R = R +X: IF R >X THEN R = A
1560 IF L THEN I = R:R = Q:Q = I
1570 I = A:A(P,S) = Q *130 +R: RETURN
1580 :
1590 GOSUB 1730
1600 FOR I = 0 TO 2500: NEXT : PRINT C$"J'ACCUSE! ": FOR I = 0 TO 2500: NEXT
1610 PRINT "MAIS- BY NOW YOU MUST KNOW.": GOTO 1310
1620 :
1630 FOR I = 1 TO A: FOR J = 1 TO N +1:Y = A(I,J):Z = INT(Y/10):Y = Y -10 *Z
1640 IF Y AND Y < >Q AND Y < >W THEN Y = A: IF Z = Q OR Z = W THEN 1600
1650 IF Z AND Z < >Q AND Z < >W THEN Z = A: IF Y AND Y <A THEN 1600
1660 A(I,J) = Z *130 +Y: NEXT J,I: GOTO 1550
1670 :
1680 FOR I = 1 TO A: FOR J = 1 TO N +1:Y = A(I,J):Z = INT(Y/10):Y = Y -10 *Z
1690 IF Y = S THEN Y = A: IF Z THEN 1590
1700 IF Z = S THEN Z = A: IF Y THEN 1590
1710 A(I,J) = Z *130 +Y: NEXT J,I: RETURN
1720 :
1730 :
1740 Z2 = 0
1750 Z = LEN(I$): IF Z <39 THEN I$ = I$ + LEFT$(SP$,39 -Z): GOTO 1790
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
1770 PRINT LEFT$(I$,Z): IF Z2 = 0 THEN FOR Z2 = 8 TO 12: IF MID$ (I$,Z2,1) < >":" THEN NEXT
1780 I$ = LEFT$(SP$,Z2 +1) + MID$ (I$,Z +1): GOTO 1750
1790 PRINT I$: RETURN
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
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
1820 RETURN
30000 HOME
30010 VTAB 10
30020 PRINT "WOULD YOU LIKE TO PLAY AGAIN (Y/N)? ";
30030 GET RS$
30040 IF RS$ = "Y" THEN 960
30050 IF RS$ < >"N" THEN 30030
30060 HOME : VTAB 10
30070 PRINT "WOULD ANYONE ELSE LIKE TO PLAY (Y/N)? ";
30080 GET RS$
30090 IF RS$ = "Y" THEN RUN
30100 IF RS$ < >"N" THEN 30080
30110 PRINT
30120 PRINT CHR$(4)"- STARTUP"