1: DECLARE SUB ReadKey (prm$, t$, chrs!, brd$, rd!) 2: DECLARE SUB CompuSay (t$) 3: DECLARE SUB StartMappingSpeech () 4: DECLARE SUB Anton (i$, o$) 5: DECLARE SUB ChkWrd (i$, dflt$, nw$) 6: DECLARE SUB Talk2Em () 7: DECLARE SUB SolveDAProb (qt$) 8: DECLARE SUB TeachMSmthing () 9: DECLARE SUB Corr (n$) 10: DECLARE SUB Upper (n$) 11: DECLARE FUNCTION Revers$ (t$) 12: DECLARE SUB Answr () 13: RANDOMIZE TIMER 14: DIM SHARED is2000 AS STRING 15: lne = 0 16: CLS 17: OPEN "greet.ai" FOR INPUT AS #1 18: DO UNTIL EOF(1): lne = lne + 1: LINE INPUT #1, a$: LOOP: 19: CLOSE 1 20: OPEN "Greet.ai" FOR INPUT AS #1 21: le = CINT(RND * lne) 22: IF le = 0 THEN le = lne 23: FOR qw = 1 TO le 24: LINE INPUT #1, grt$ 25: NEXT qw 26: Corr grt$ 27: hding$ = "IS2000 Inteligentce Simulator 2000" 28: PRINT hding$ 29: PRINT STRING$(LEN(hding$), 205) 30: PRINT "IS2000>"; TAB(10); LTRIM$(RTRIM$(grt$)) 31: LOCATE 4, 1, 0 32: ReadKey "Human>", grt2$, 69, "Hello?", 0 33: FOR sl = 1 TO LEN(grt2$) 34: IF MID$(grt2$, sl, 1) = "A" OR MID$(grt2$, sl, 1) = "E" OR MID$(grt2$, sl, 1) = "O" OR MID$(grt2$, sl, 1) = "I" OR MID$(grt2$, sl, 1) = "U" OR MID$(grt2$, sl, 1) = "Y" THEN slybl = slybl + 1 35: NEXT sl 36: IF slybl = 0 THEN g = -1: GOTO 333 37: Corr grt2$ 38: grt2$ = RTRIM$(grt2$) 39: grt2$ = LTRIM$(grt2$) 40: CLOSE #1 41: OPEN "words.is2" FOR INPUT AS #1 42: DO UNTIL EOF(1) 43: LINE INPUT #1, ln$ 44: IF UCASE$(ln$) = UCASE$(grt2$) THEN EXIT DO 45: LOOP 46: IF UCASE$(ln$) = UCASE$(grt2$) THEN ELSE g = -2: PRINT "IS2000>"; TAB(10); grt2$; " is not a known word": CLOSE #1: GOTO 337 47: CLOSE 1 48: OPEN "Greets.ai" FOR INPUT AS #1 49: DO UNTIL EOF(1) 50: LINE INPUT #1, Mystr$ 51: IF UCASE$(grt2$) = UCASE$(Mystr$) THEN g = 1 52: LOOP 53: CLOSE 1 54: OPEN "NGreets.ai" FOR INPUT AS #1 55: DO UNTIL EOF(1) 56: LINE INPUT #1, Mystr$ 57: IF UCASE$(grt2$) = UCASE$(Mystr$) THEN g = -1 58: LOOP 59: CLOSE 1 60: 337 OPEN "greet.ai" FOR APPEND AS #1 61: OPEN "WORDs.is2" FOR APPEND AS #2 62: IF g = 1 THEN PRINT #1, grt2$: PRINT #2, UCASE$(grt2$): CLOSE 1, 2 63: IF g = -1 THEN GOTO 333 64: IF g = 0 THEN INPUT "Is that a greeting"; gt$: LOCATE 5, 1: PRINT " ": Upper gt$: IF gt$ = "Y" THEN CLOSE #1: OPEN "greets.ai" FOR APPEND AS #1: PRINT #1, grt2$: CLOSE #1 ELSE CLOSE #1: OPEN "ngreets.ai" FOR APPEND AS #1: PRINT #1, grt2$: LOCATE 5, 1: PRINT "IS2000>"; TAB(10); "Ok?": CLOSE #1 65: IF g = -2 THEN 66: INPUT "Is that a Greeting"; gt$ 67: LOCATE 5, 1: PRINT " " 68: gt$ = UCASE$(gt$) 69: IF gt$ = "Y" THEN 70: FOR ss = 1 TO LEN(grt2$) 71: IF MID$(grt2$, ss, 1) = " " THEN PRINT #2, UCASE$(wrdd$): wrdd$ = "" ELSE wrdd$ = wrdd$ + MID$(grt2$, ss, 1) 72: NEXT ss 73: IF INSTR(grt2$, " ") = 0 THEN PRINT #2, wrdd$ 74: PRINT #1, UCASE$(grt2$) 75: LOCATE 5, 1: PRINT " " 76: LOCATE 6, 1: PRINT " ": LOCATE 5, 1 77: CLOSE 1, 2 78: ELSE 79: LOCATE 5, 1: PRINT "IS2000>"; TAB(10); "Ok? "; SPACE$(LEN(grt2$)) 80: LOCATE 6, 1: PRINT " ": LOCATE 6, 1 81: CLOSE 1, 2: OPEN "ngreets.ai" FOR APPEND AS #1: PRINT #1, UCASE$(grt2$) 82: END IF 83: END IF 84: GOTO 334 85: 333 LOCATE CSRLIN, 1, 0: PRINT "IS2000>"; TAB(10); "Ok?" 86: 334 ReadKey "Human>", m$, 69, "Hello?", 0 87: IF m$ = "TEACH" THEN TeachMSmthing 88: IF INSTR(m$, ")") > 0 THEN SolveDAProb m$ 89: IF m$ = "USE INFO" THEN SolveDAProb "" 90: IF m$ = "TALK TO ME" THEN Talk2Em 91: IF m$ = "MIMIC: ON" AND qd = 0 THEN StartMappingSpeech: qd = 1 92: IF m$ = "BYE" THEN END 93: IF m$ = "/RESTART" THEN RESET: RUN 94: IF RIGHT$(m$, 1) = "?" THEN Answr 95: IF INSTR(m$, ")") > 0 THEN SolveDAProb m$ 96: IF LEFT$(m$, 4) = "SAY " THEN CompuSay RIGHT$(m$, LEN(m$) - 4) 97: IF is2000 = "USE INFO" THEN SolveDAProb "" 98: IF is2000 = "TALK TO ME" THEN Talk2Em 99: IF is2000 = "MIMIC: ON" AND qd = 0 THEN StartMappingSpeech: qd = 1 100: IF is2000 = "BYE" THEN END 101: IF is2000 = "/RESTART" THEN RESET: RUN 102: GOTO 334 103: 104: SUB Answr 105: 106: END SUB 107: 108: SUB Anton (i$, o$) 109: 'OPEN "Anon.is2" FOR INPUT AS #4 110: 'CLOSE 4 111: END SUB 112: 113: SUB ChkWrd (i$, dflt$, nw$) 114: a = INSTR(UCASE$(i$), "A") 115: e = INSTR(UCASE$(i$), "E") 116: i = INSTR(UCASE$(i$), "I") 117: o = INSTR(UCASE$(i$), "O") 118: u = INSTR(UCASE$(i$), "U") 119: IF a = 0 AND e = 0 AND i = 0 AND o = 0 AND u = 0 THEN PRINT nw$ ELSE PRINT dflt$ 120: END SUB 121: 122: SUB CompuSay (t$) 123: PRINT "IS2000>"; TAB(10); t$ 124: is2000 = t$ 125: END SUB 126: 127: SUB Corr (n$) 128: IF n$ = " " THEN EXIT SUB 129: IF n$ = "" THEN EXIT SUB 130: IF ASC(MID$(n$, 1, 1)) > 96 AND ASC(MID$(n$, 1, 1)) < 123 THEN MID$(n$, 1, 1) = CHR$(ASC(MID$(n$, 1, 1)) - 32) 131: IF LEN(n$) > 1 THEN ELSE EXIT SUB 132: FOR qw% = 2 TO LEN(n$) 133: IF ASC(MID$(n$, qw%, 1)) > 64 AND ASC(MID$(n$, qw%, 1)) < 91 THEN MID$(n$, qw%, 1) = CHR$(ASC(MID$(n$, qw%, 1)) + 32) 134: IF MID$(n$, qw%, 1) = "." THEN prd = 1: qw% = qw% + 1 135: IF prd = 1 AND ASC(MID$(n$, 1, 1)) > 96 AND ASC(MID$(n$, 1, 1)) < 123 THEN MID$(n$, 1, 1) = CHR$(ASC(MID$(n$, 1, 1)) - 32): prd = 0 136: NEXT qw% 137: END SUB 138: 139: SUB Define (t$) 140: DIM aii(0 TO LEN(t$)) AS STRING 141: ab = 1 142: bb% = 1 143: FOR ab = 1 TO LEN(t$) 144: t$ = LTRIM$(t$) 145: t$ = RTRIM$(t$) 146: t$ = t$ + " " 147: DO UNTIL MID$(t$, ab, 1) = " " 148: aii(bb%) = aii(bb%) + MID$(t$, ab, 1) 149: ab = ab + 1 150: LOOP 151: bb% = bb% + 1 152: NEXT ab 153: FOR bba = 1 TO bb% - 1 154: Upper a$ 155: c$ = aii(bba) + ":" 156: OPEN "vocab.ai" FOR INPUT AS #2 157: DO UNTIL b$ = c$ 158: IF EOF(2) THEN CLOSE 2: OPEN "vocab.ai" FOR INPUT AS #2 159: LINE INPUT #2, b$ 160: LOOP 161: LINE INPUT #2, meng$ 162: PRINT meng$ 163: CLOSE #2 164: a$ = "" 165: c$ = "" 166: NEXT bba 167: END SUB 168: 169: SUB DelRepChars (t$) 170: IF LEN(t$) < 3 THEN EXIT SUB 171: FOR q = 3 TO LEN(t$) 172: c$ = MID$(t$, q - 2, 1) 173: b$ = MID$(t$, q - 1, 1) 174: a$ = MID$(t$, q, 1) 175: 'IF a$ = b$ AND b$ = c$ AND c$ = a$ THEN 176: NEXT q 177: END SUB 178: 179: SUB FindWrd (phr$, wrd$, fd) 180: 'wrd$ = LTRIM$(RTRIM$(wrd$)): phr$ = LTRIM$(RTRIM$(phr$)): wrd$ = " " + wrd$ + " ": phr$ = " " + phr$ + " ": fd = 0 181: 'FOR q = 0 TO LEN(phr$) - LEN(wrd$) + 1 182: ' FOR w = 1 TO LEN(wrd$) 183: ' p$ = p$ + MID$(phr$, q + w, 1) 184: ' NEXT w 185: ' IF UCASE$(p$) = UCASE$(wrd$) THEN fd = q + 1: phr$ = LTRIM$(RTRIM$(phr$)): EXIT SUB 186: ' p$ = "" 187: 'NEXT q 188: END SUB 189: 190: SUB ReadKey (prm$, t$, chrs, brd$, rd) 191: t$ = "" 192: PRINT prm$; TAB(10); 193: DO UNTIL i$ = CHR$(13) OR i$ = CHR$(27) 194: IF q = 10000 THEN IF POS(0) > 1 THEN PRINT : PRINT "IS2000>"; TAB(10); brd$: q = 0: PRINT prm$; TAB(10); : t$ = "" ELSE PRINT "IS2000>"; TAB(10); brd$: t$ = "": q = 0: PRINT prm$; TAB(10); : t$ = "" 195: IF q < 10000 AND rd = 1 THEN q = q + 1 196: IF i$ = CHR$(8) THEN IF LEN(t$) = 0 THEN i$ = "": GOTO 60 ELSE t$ = MID$(t$, 1, LEN(t$) - 1): LOCATE CSRLIN, POS(0) - 1: PRINT " "; : LOCATE CSRLIN, POS(0) - 1 197: i$ = INKEY$ 198: IF i$ = "" THEN GOTO 60 199: q = 0 200: IF (ASC(i$) > -1 AND ASC(i$) < 32) THEN GOTO 60 201: IF i$ = CHR$(13) OR i$ = CHR$(27) THEN GOTO 70 202: IF ASC(i$) < 123 AND ASC(i$) > 96 THEN i$ = CHR$(ASC(i$) - 32): PRINT i$; ELSE PRINT i$; 203: t$ = t$ + i$ 204: IF LEN(t$) >= chrs THEN t$ = MID$(t$, 1, LEN(t$) - 1): LOCATE CSRLIN, POS(0) - 1: PRINT " "; : LOCATE CSRLIN, POS(0) - 1 205: 60 LOOP 206: 70 PRINT "" 207: IF prm$ = "IS2000>" THEN is2000 = t$ 208: END SUB 209: 210: FUNCTION Revers$ (t$) 211: r$ = "" 212: FOR q = LEN(t$) TO 1 STEP -1 213: r$ = r$ + MID$(t$, q, 1) 214: NEXT q 215: Revers$ = r$ 216: END FUNCTION 217: 218: SUB Simpl (s$) 219: OPEN "syon.is2" FOR INPUT AS #3 220: m$ = MID$(s$, 1, 1) 221: FOR q = 2 TO LEN(s$) 222: IF MID$(s$, q, 1) = " " AND MID$(s$, q - 1, 1) <> " " THEN 223: DO UNTIL EOF(3) OR UCASE$(g$) = UCASE$(m$) 224: LINE INPUT #3, g$ 225: m$ = LTRIM$(RTRIM$(m$)) 226: g$ = UCASE$(LTRIM$(RTRIM$(g$))) 227: f = INSTR(g$, "}") 228: IF LEFT$(g$, 1) = "{" THEN r$ = MID$(g$, 2, f - 2) 229: IF LEN(g$) = f THEN ELSE Anton g$, a$ 230: LOOP 231: IF EOF(3) THEN ChkWrd m$, "IS2000> I don't know the word " + m$, "IS2000> " + m$ + " is not a word.": CLOSE 3: OPEN "syon.is2" FOR INPUT AS #3: m$ = "" ELSE tt$ = tt$ + r$ + " ": CLOSE 3: OPEN "syon.is2" FOR INPUT AS #3: m$ = "" 232: ELSE m$ = m$ + MID$(s$, q, 1) 233: END IF 234: NEXT q 235: PRINT tt$ 236: CLOSE 3 237: END SUB 238: 239: SUB SolveDAProb (qt$) 240: IF qt$ = "" THEN ELSE m$ = qt$: GOTO 12 241: 'ON ERROR GOTO 0 242: OPEN "KNLDGE.IS2" FOR INPUT AS #2 243: ln = 0 244: DO UNTIL EOF(2) 245: LINE INPUT #2, d$: ln = ln + 1 246: LOOP 247: CLOSE 2 248: OPEN "words.is2" FOR INPUT AS #2 249: DO UNTIL EOF(2) 250: LINE INPUT #2, noth$ 251: IF noth$ = "" THEN ELSE wrdd = wrdd + 1 252: LOOP 253: CLOSE 2 254: IF ln = 1 THEN a$ = "thing" ELSE a$ = "things" 255: IF wrdd = 1 THEN b$ = "word" ELSE b$ = "words" 256: t$ = "ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»" 257: PRINT t$ 258: PRINT "ºI currently know"; ln; a$; TAB(LEN(t$)); "º" 259: PRINT "ºI know"; wrdd; b$; TAB(LEN(t$)); "º" 260: PRINT "ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ" 261: ReadKey "Problem>", m$, 70, "Are you here?", 0 262: 12 fst = INSTR(m$, "(") 263: snd = INSTR(m$, ")") 264: IF fst = 0 OR snd = 0 THEN PRINT "I don't know what to do.": EXIT SUB 265: impotnt = INSTR(snd, m$, " ") 266: IF impotnt = 0 THEN wdbd$ = MID$(m$, snd + 1, LEN(m$) - (snd + 1)): GOTO 2 267: wdbd$ = MID$(m$, snd + 1, impotnt - snd - 1) 268: 2 tt$ = UCASE$(MID$(m$, fst, snd - fst)) 269: OPEN "KNLDGE.IS2" FOR INPUT AS #2 270: DO 271: LINE INPUT #2, f$ 272: ff$ = MID$(f$, 1, LEN(tt$)) 273: IF UCASE$(ff$) = UCASE$(tt$) THEN GOTO 3 274: IF EOF(2) THEN PRINT "IS2000>"; TAB(10); "I don't know how to "; LCASE$(MID$(ff$, 2, LEN(ff$) - 1)): CLOSE 2: EXIT SUB 275: LOOP UNTIL UCASE$(ff$) = UCASE$(tt$) 276: 3 FOR s = 1 TO LEN(tt$) 277: IF MID$(tt$, s, 1) = "$" THEN w$ = wdbd$ 278: NEXT s 279: gw$ = MID$(f$, LEN(tt$) + 3, LEN(f$) - LEN(tt$) - 2) 280: els = INSTR(gw$, "|") 281: FOR sl = 1 TO LEN(wdbd$) 282: IF MID$(wdbd$, sl, 1) = "A" OR MID$(wdbd$, sl, 1) = "E" OR MID$(wdbd$, sl, 1) = "O" OR MID$(wdbd$, sl, 1) = "I" OR MID$(wdbd$, sl, 1) = "U" OR MID$(wdbd$, sl, 1) = "Y" THEN slybl = slybl + 1 283: NEXT sl 284: IF slybl = 0 THEN PRINT "IS2000>"; TAB(10); "Use REAL words please.": CLOSE 2: EXIT SUB 285: FOR s = 1 TO LEN(gw$) 286: IF MID$(gw$, s, 2) = "*1" THEN IF slybl < 3 THEN f = 3 ELSE s = els 287: IF MID$(gw$, s, 2) = "$" + CHR$(34) THEN lnt = INSTR(s + 2, gw$, CHR$(34)): g$ = g$ + wdbd$ + MID$(gw$, s + 2, (lnt - s) - 2) ' ELSE G$ = G$ + MID$(M$, S, 1) 288: IF MID$(gw$, s, 2) = CHR$(34) + "$" AND f = 0 THEN lnt = INSTR(els + 1, gw$, CHR$(34)): ss = INSTR(lnt + 1, gw$, CHR$(34)): g$ = g$ + MID$(gw$, lnt + 1, ss - lnt - 1) + wdbd$ 289: IF MID$(gw$, s, 4) = "$=-$" THEN s = s + 3: g$ = Revers$(wdbd$): 290: NEXT s 291: IF impotnt = 0 THEN impotnt = LEN(m$) + 1 292: FOR d = 1 TO LEN(m$) 293: IF d = fst THEN m2$ = m2$ + g$: d = impotnt - 1 ELSE m2$ = m2$ + MID$(m$, d, 1) 294: NEXT d 295: PRINT "IS2000>"; TAB(10); m2$: is2000 = m2$ 296: CLOSE 2 297: END SUB 298: 299: SUB StartMappingSpeech 300: PRINT "IS2000>"; TAB(10); "Computers don't talk very well" 301: EXIT SUB 302: PRINT "IS2000>"; TAB(10); "What is your name?" 303: ReadKey "Human>", nm2$, 69, "What is your name? " + TIME$, 0 304: OPEN "Spchpats.is2" FOR INPUT AS #2 305: DO UNTIL EOF(2) OR nm$ = nm2$ 306: LINE INPUT #2, nm$ 307: LOOP 308: IF EOF(2) AND nm$ <> nm2$ THEN new = 1 ELSE new = 0 309: IF new = 1 THEN CLOSE 2: GOTO 1234 310: DO UNTIL d$ = "{/}" 311: LINE INPUT #2, d$ 312: 313: LOOP 314: 315: 316: 317: 318: 319: 320: 321: 1234 END SUB 322: 323: SUB Talk2Em 324: 325: END SUB 326: 327: SUB TeachMSmthing 328: ON ERROR GOTO 0 329: OPEN "KNLDGE.IS2" FOR INPUT AS #2 330: ln = 0 331: DO UNTIL EOF(2) 332: LINE INPUT #2, d$: ln = ln + 1 333: LOOP 334: CLOSE 2 335: IF ln = 1 THEN g$ = "thing" ELSE g$ = "things" 336: t$ = "ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»" 337: PRINT t$ 338: PRINT "ºI currently know"; ln; g$; TAB(LEN(t$)); "º" 339: PRINT "ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ" 340: 341: END SUB 342: 343: SUB Upper (n$) 344: FOR qw% = 1 TO LEN(n$) 345: IF ASC(MID$(n$, qw%, 1)) > 96 AND ASC(MID$(n$, qw%, 1)) < 123 THEN MID$(n$, qw%, 1) = CHR$(ASC(MID$(n$, qw%, 1)) - 32) 346: NEXT qw% 347: END SUB 348: |