]>
Commit | Line | Data |
---|---|---|
db568140 L |
1 | 5 PRINT TAB(16);"**************************"\r |
2 | 10 PRINT TAB(26);"ELIZA"\r | |
3 | 20 PRINT TAB(20);"CREATIVE COMPUTING"\r | |
4 | 30 PRINT TAB(18);"MORRISTOWN, NEW JERSEY":PRINT\r | |
5 | 40 PRINT TAB(19);"ADAPTED FOR IBM PC BY"\r | |
6 | 50 PRINT TAB(20);"PATRICIA DANIELSON AND PAUL HASHFIELD"\r | |
7 | 52 PRINT TAB(21);"BE SURE THAT THE CAPS LOCK IS ON"\r | |
8 | 53 PRINT:PRINT TAB(16);"PLEASE DON'T USE COMMAS OR PERIODS IN YOUR INPUTS":PRINT\r | |
9 | 55 PRINT TAB(16);"*************************"\r | |
10 | 60 PRINT :PRINT :PRINT\r | |
11 | 80 REM*****INITIALIZATION**********\r | |
12 | 100 DIM S(36),R(36),N(36)\r | |
13 | 105 DIM KEYWORD$(36),WORDIN$(7),WORDOUT$(7),REPLIES$(112)\r | |
14 | 110 N1=36:N2=14:N3=112\r | |
15 | 112 FOR X = 1 TO N1: READ KEYWORD$(X): NEXT X\r | |
16 | 114 FOR X = 1 TO N2/2: READ WORDIN$(X):READ WORDOUT$(X): NEXT X\r | |
17 | 116 FOR X = 1 TO N3: READ REPLIES$(X): NEXT X\r | |
18 | 130 FOR X=1 TO N1\r | |
19 | 140 READ S(X),L:R(X)=S(X):N(X)=S(X)+L-1\r | |
20 | 150 NEXT X\r | |
21 | 160 PRINT "HI! I'M ELIZA. WHAT'S YOUR PROBLEM?"\r | |
22 | 170 REM ***********************************\r | |
23 | 180 REM *******USER INPUT SECTION**********\r | |
24 | 190 REM ***********************************\r | |
25 | 200 INPUT I$\r | |
26 | 201 I$=" "+I$+" "\r | |
27 | 210 REM GET RID OF APOSTROPHES\r | |
28 | 220 FOR L=1 TO LEN(I$)\r | |
29 | 230 REM IF MID$(I$,L,1)="'" THEN I$=LEFT$(I$,L-1)+RIGHT$(I$,LEN(I$)-L):GOTO 230\r | |
30 | 240 IF L+4>LEN(I$) THEN 250\r | |
31 | 241 IF MID$(I$,L,4) <> "SHUT" THEN 250\r | |
32 | 242 PRINT "O.K. IF YOU FEEL THAT WAY I'LL SHUT UP...."\r | |
33 | 243 END\r | |
34 | 250 NEXT L\r | |
35 | 255 IF I$=P$ THEN PRINT "PLEASE DON'T REPEAT YOURSELF!":GOTO 170\r | |
36 | 260 REM ***********************************\r | |
37 | 270 REM ********FIND KEYWORD IN I$*********\r | |
38 | 280 REM ***********************************\r | |
39 | 300 FOR K=1 TO N1\r | |
40 | 320 FOR L=1 TO LEN(I$)-LEN(KEYWORD$(K))+1\r | |
41 | 340 IF MID$(I$,L,LEN(KEYWORD$(K)))<>KEYWORD$(K) THEN 350\r | |
42 | 341 IF K <> 13 THEN 349\r | |
43 | 342 IF MID$(I$,L,LEN(KEYWORD$(29)))=KEYWORD$(29) THEN K = 29\r | |
44 | 349 F$ = KEYWORD$(K): GOTO 390\r | |
45 | 350 NEXT L\r | |
46 | 360 NEXT K\r | |
47 | 370 K=36: GOTO 570:REM WE DIDN'T FIND ANY KEYWORDS\r | |
48 | 380 REM ******************************************\r | |
49 | 390 REM **TAKE PART OF STRING AND CONJUGATE IT****\r | |
50 | 400 REM **USING THE LIST OF STRINGS TO BE SWAPPED*\r | |
51 | 410 REM ******************************************\r | |
52 | 430 C$=" "+RIGHT$(I$,LEN(I$)-LEN(F$)-L+1)+" "\r | |
53 | 440 FOR X=1 TO N2/2\r | |
54 | 460 FOR L=1 TO LEN(C$)\r | |
55 | 470 IF L+LEN(WORDIN$(X))>LEN(C$) THEN 510\r | |
56 | 480 IF MID$(C$,L,LEN(WORDIN$(X)))<>WORDIN$(X) THEN 510\r | |
57 | 490 C$=LEFT$(C$,L-1)+WORDOUT$(X)+RIGHT$(C$,LEN(C$)-L-LEN(WORDIN$(X))+1)\r | |
58 | 495 L = L+LEN(WORDOUT$(X))\r | |
59 | 500 GOTO 540\r | |
60 | 510 IF L+LEN(WORDOUT$(X))>LEN(C$)THEN 540\r | |
61 | 520 IF MID$(C$,L,LEN(WORDOUT$(X)))<>WORDOUT$(X) THEN 540\r | |
62 | 530 C$=LEFT$(C$,L-1)+WORDIN$(X)+RIGHT$(C$,LEN(C$)-L-LEN(WORDOUT$(X))+1)\r | |
63 | 535 L=L+LEN(WORDIN$(X))\r | |
64 | 540 NEXT L\r | |
65 | 550 NEXT X\r | |
66 | 555 IF MID$(C$,2,1)=" "THEN C$=RIGHT$(C$,LEN(C$)-1):REM ONLY 1 SPACE\r | |
67 | 556 FOR L=1 TO LEN(C$)\r | |
68 | 557 IF MID$(C$,L,1)="!" THEN C$=LEFT$(C$,L-1)+RIGHT$(C$,LEN(C$)-L):GOTO 557\r | |
69 | 558 NEXT L\r | |
70 | 560 REM **********************************************\r | |
71 | 570 REM **NOW USING THE KEYWORD NUMBER (K) GET REPLY**\r | |
72 | 580 REM **********************************************\r | |
73 | 600 F$ = REPLIES$(R(K))\r | |
74 | 610 R(K)=R(K)+1:IF R(K)>N(K) THEN R(K)=S(K)\r | |
75 | 620 IF RIGHT$(F$,1)<>"*" THEN PRINT F$:P$=I$:GOTO 170\r | |
76 | 625 IF C$<>" " THEN 630\r | |
77 | 626 PRINT "YOU WILL HAVE TO ELABORATE MORE FOR ME TO HELP YOU"\r | |
78 | 627 GOTO 170\r | |
79 | 630 PRINT LEFT$(F$,LEN(F$)-1);C$\r | |
80 | 640 P$=I$:GOTO 170\r | |
81 | 1000 REM *******************************\r | |
82 | 1010 REM *****PROGRAM DATA FOLLOWS******\r | |
83 | 1020 REM *******************************\r | |
84 | 1030 REM *********KEYWORDS**************\r | |
85 | 1049 REM *******************************\r | |
86 | 1050 DATA "CAN YOU ","CAN I ","YOU ARE ","YOU'RE ","I DON'T ","I FEEL "\r | |
87 | 1060 DATA "WHY DON'T YOU ","WHY CAN'T I ","ARE YOU ","I CAN'T ","I AM ","I'M "\r | |
88 | 1070 DATA "YOU ","I WANT ","WHAT ","HOW ","WHO ","WHERE ","WHEN ","WHY "\r | |
89 | 1080 DATA "NAME ","CAUSE ","SORRY ","DREAM ","HELLO ","HI ","MAYBE "\r | |
90 | 1090 DATA "NO","YOUR ","ALWAYS ","THINK ","ALIKE ","YES ","FRIEND "\r | |
91 | 1100 DATA "COMPUTER", "NOKEYFOUND"\r | |
92 | 1200 REM *********************************\r | |
93 | 1210 REM ***STRING DATA FOR CONJUGATIONS**\r | |
94 | 1220 REM *********************************\r | |
95 | 1230 DATA " ARE "," AM "," WERE "," WAS "," YOU "," I "," YOUR"," MY "\r | |
96 | 1235 DATA " I'VE "," YOU'VE "," I'M "," YOU'RE "\r | |
97 | 1240 DATA " ME "," YOU "\r | |
98 | 1300 REM ******************************\r | |
99 | 1310 REM *********REPLIES**************\r | |
100 | 1320 REM ******************************\r | |
101 | 1330 DATA "DON'T YOU BELIEVE THAT I CAN*"\r | |
102 | 1340 DATA "PERHAPS YOU WOULD LIKE TO BE LIKE ME*"\r | |
103 | 1350 DATA "YOU WANT ME TO BE ABLE TO*"\r | |
104 | 1360 DATA "PERHAPS YOU DON'T WANT TO*"\r | |
105 | 1365 DATA "DO YOU WANT TO BE ABLE TO*"\r | |
106 | 1370 DATA "WHAT MAKES YOU THINK I AM*"\r | |
107 | 1380 DATA "DOES IT PLEASE YOU TO BELIEVE I AM*"\r | |
108 | 1390 DATA "PERHAPS YOU WOULD LIKE TO BE*"\r | |
109 | 1400 DATA "DO YOU SOMETIMES WISH YOU WERE*"\r | |
110 | 1410 DATA "DON'T YOU REALLY*"\r | |
111 | 1420 DATA "WHY DON'T YOU*"\r | |
112 | 1430 DATA "DO YOU WISH TO BE ABLE TO*"\r | |
113 | 1440 DATA "DOES THAT TROUBLE YOU*"\r | |
114 | 1450 DATA "DO YOU OFTEN FEEL*"\r | |
115 | 1460 DATA "DO YOU OFTEN FEEL*"\r | |
116 | 1470 DATA "DO YOU ENJOY FEELING*"\r | |
117 | 1480 DATA "DO YOU REALLY BELIEVE I DON'T*"\r | |
118 | 1490 DATA "PERHAPS IN GOOD TIME I WILL*"\r | |
119 | 1500 DATA "DO YOU WANT ME TO*"\r | |
120 | 1510 DATA "DO YOU THINK YOU SHOULD BE ABLE TO*"\r | |
121 | 1520 DATA "WHY CAN'T YOU*"\r | |
122 | 1530 DATA "WHY ARE YOU INTERESTED IN WHETHER OR NOT I AM*"\r | |
123 | 1540 DATA "WOULD YOU PREFER IF I WERE NOT*"\r | |
124 | 1550 DATA "PERHAPS IN YOUR FANTASIES I AM*"\r | |
125 | 1560 DATA "HOW DO YOU KNOW YOU CAN'T*"\r | |
126 | 1570 DATA "HAVE YOU TRIED?"\r | |
127 | 1580 DATA "PERHAPS YOU CAN NOW*"\r | |
128 | 1590 DATA "DID YOU COME TO ME BECAUSE YOU ARE*"\r | |
129 | 1600 DATA "HOW LONG HAVE YOU BEEN*"\r | |
130 | 1610 DATA "DO YOU BELIEVE IT IS NORMAL TO BE*"\r | |
131 | 1620 DATA "DO YOU ENJOY BEING*"\r | |
132 | 1630 DATA "WE WERE DISCUSSING YOU--NOT ME."\r | |
133 | 1640 DATA "OH, I*"\r | |
134 | 1650 DATA "YOU'RE NOT REALLY TALKING ABOUT ME, ARE YOU?"\r | |
135 | 1660 DATA "WHAT WOULD IT MEAN TO YOU IF YOU GOT*"\r | |
136 | 1670 DATA "WHY DO YOU WANT*"\r | |
137 | 1680 DATA "SUPPOSE YOU SOON GOT*"\r | |
138 | 1690 DATA "WHAT IF YOU NEVER GOT*"\r | |
139 | 1700 DATA "I SOMETIMES ALSO WANT*"\r | |
140 | 1710 DATA "WHY DO YOU ASK?"\r | |
141 | 1720 DATA "DOES THAT QUESTION INTEREST YOU?"\r | |
142 | 1730 DATA "WHAT ANSWER WOULD PLEASE YOU THE MOST?"\r | |
143 | 1740 DATA "WHAT DO YOU THINK?"\r | |
144 | 1750 DATA "ARE SUCH QUESTIONS ON YOUR MIND OFTEN?"\r | |
145 | 1760 DATA "WHAT IS IT THAT YOU REALLY WANT TO KNOW?"\r | |
146 | 1770 DATA "HAVE YOU ASKED ANYONE ELSE?"\r | |
147 | 1780 DATA "HAVE YOU ASKED SUCH QUESTIONS BEFORE?"\r | |
148 | 1790 DATA "WHAT ELSE COMES TO MIND WHEN YOU ASK THAT?"\r | |
149 | 1800 DATA "NAMES DON'T INTEREST ME."\r | |
150 | 1810 DATA "I DON'T CARE ABOUT NAMES --PLEASE GO ON."\r | |
151 | 1820 DATA "IS THAT THE REAL REASON?"\r | |
152 | 1830 DATA "DON'T ANY OTHER REASONS COME TO MIND?"\r | |
153 | 1840 DATA "DOES THAT REASON EXPLAIN ANYTHING ELSE?"\r | |
154 | 1850 DATA "WHAT OTHER REASONS MIGHT THERE BE?"\r | |
155 | 1860 DATA "PLEASE DON'T APOLOGIZE!"\r | |
156 | 1870 DATA "APOLOGIES ARE NOT NECESSARY."\r | |
157 | 1880 DATA "WHAT FEELINGS DO YOU HAVE WHEN YOU APOLOGIZE?"\r | |
158 | 1890 DATA "DON'T BE SO DEFENSIVE!"\r | |
159 | 1900 DATA "WHAT DOES THAT DREAM SUGGEST TO YOU?"\r | |
160 | 1910 DATA "DO YOU DREAM OFTEN?"\r | |
161 | 1920 DATA "WHAT PERSONS APPEAR IN YOUR DREAMS?"\r | |
162 | 1930 DATA "ARE YOU DISTURBED BY YOUR DREAMS?"\r | |
163 | 1940 DATA "HOW DO YOU DO ...PLEASE STATE YOUR PROBLEM."\r | |
164 | 1950 DATA "YOU DON'T SEEM QUITE CERTAIN."\r | |
165 | 1960 DATA "WHY THE UNCERTAIN TONE?"\r | |
166 | 1970 DATA "CAN'T YOU BE MORE POSITIVE?"\r | |
167 | 1980 DATA "YOU AREN'T SURE?"\r | |
168 | 1990 DATA "DON'T YOU KNOW?"\r | |
169 | 2000 DATA "ARE YOU SAYING NO JUST TO BE NEGATIVE?"\r | |
170 | 2010 DATA "YOU ARE BEING A BIT NEGATIVE."\r | |
171 | 2020 DATA "WHY NOT?"\r | |
172 | 2030 DATA "ARE YOU SURE?"\r | |
173 | 2040 DATA "WHY NO?"\r | |
174 | 2050 DATA "WHY ARE YOU CONCERNED ABOUT MY*"\r | |
175 | 2060 DATA "WHAT ABOUT YOUR OWN*"\r | |
176 | 2070 DATA "CAN YOU THINK OF A SPECIFIC EXAMPLE?"\r | |
177 | 2080 DATA "WHEN?"\r | |
178 | 2090 DATA "WHAT ARE YOU THINKING OF?"\r | |
179 | 2100 DATA "REALLY, ALWAYS?"\r | |
180 | 2110 DATA "DO YOU REALLY THINK SO?"\r | |
181 | 2120 DATA "BUT YOU ARE NOT SURE YOU*"\r | |
182 | 2130 DATA "DO YOU DOUBT YOU*"\r | |
183 | 2140 DATA "IN WHAT WAY?"\r | |
184 | 2150 DATA "WHAT RESEMBLANCE DO YOU SEE?"\r | |
185 | 2160 DATA "WHAT DOES THE SIMILARITY SUGGEST TO YOU?"\r | |
186 | 2170 DATA "WHAT OTHER CONNECTIONS DO YOU SEE?"\r | |
187 | 2180 DATA "COULD THERE REALLY BE SOME CONNECTION?"\r | |
188 | 2190 DATA "HOW?"\r | |
189 | 2200 DATA "YOU SEEM QUITE POSITIVE."\r | |
190 | 2210 DATA "ARE YOU SURE?"\r | |
191 | 2220 DATA "I SEE."\r | |
192 | 2230 DATA "I UNDERSTAND."\r | |
193 | 2240 DATA "WHY DO YOU BRING UP THE TOPIC OF FRIENDS?"\r | |
194 | 2250 DATA "DO YOUR FRIENDS WORRY YOU?"\r | |
195 | 2260 DATA "DO YOUR FRIENDS PICK ON YOU?"\r | |
196 | 2270 DATA "ARE YOU SURE YOU HAVE ANY FRIENDS?"\r | |
197 | 2280 DATA "DO YOU IMPOSE ON YOUR FRIENDS?"\r | |
198 | 2290 DATA "PERHAPS YOUR LOVE FOR FRIENDS WORRIES YOU."\r | |
199 | 2300 DATA "DO COMPUTERS WORRY YOU?"\r | |
200 | 2310 DATA "ARE YOU TALKING ABOUT ME IN PARTICULAR?"\r | |
201 | 2320 DATA "ARE YOU FRIGHTENED BY MACHINES?"\r | |
202 | 2330 DATA "WHY DO YOU MENTION COMPUTERS?"\r | |
203 | 2340 DATA "WHAT DO YOU THINK MACHINES HAVE TO DO WITH YOUR PROBLEM?"\r | |
204 | 2350 DATA "DON'T YOU THINK COMPUTERS CAN HELP PEOPLE?"\r | |
205 | 2360 DATA "WHAT IS IT ABOUT MACHINES THAT WORRIES YOU?"\r | |
206 | 2370 DATA "SAY, DO YOU HAVE ANY PSYCHOLOGICAL PROBLEMS?"\r | |
207 | 2380 DATA "WHAT DOES THAT SUGGEST TO YOU?"\r | |
208 | 2390 DATA "I SEE."\r | |
209 | 2400 DATA "I'M NOT SURE I UNDERSTAND YOU FULLY."\r | |
210 | 2410 DATA "COME COME ELUCIDATE YOUR THOUGHTS."\r | |
211 | 2420 DATA "CAN YOU ELABORATE ON THAT?"\r | |
212 | 2430 DATA "THAT IS QUITE INTERESTING."\r | |
213 | 2500 REM *************************\r | |
214 | 2510 REM *****DATA FOR FINDING RIGHT REPLIES\r | |
215 | 2520 REM *************************\r | |
216 | 2530 DATA 1,3,4,2,6,4,6,4,10,4,14,3,17,3,20,2,22,3,25,3\r | |
217 | 2540 DATA 28,4,28,4,32,3,35,5,40,9,40,9,40,9,40,9,40,9,40,9\r | |
218 | 2550 DATA 49,2,51,4,55,4,59,4,63,1,63,1,64,5,69,5,74,2,76,4\r | |
219 | 2560 DATA 80,3,83,7,90,3,93,6,99,7,106,6\r | |
220 | \1a\1a\1a\1a\1a\1a\1a |