5748236 [rkeene@sledge /home/rkeene/devel/archive/quickbasic]$ cat -n is2000b.bas
   1: DECLARE SUB StartMappingSpeech ()
   2: DECLARE SUB Anton (i$, o$)
   3: DECLARE SUB ChkWrd (i$, dflt$, nw$)
   4: DECLARE SUB Talk2Em ()
   5: DECLARE SUB SolveDAProb (qt$)
   6: DECLARE SUB ReadKey (prm$, t$, chrs!, brd$)
   7: DECLARE SUB TeachMSmthing ()
   8: DECLARE SUB Define (t$)
   9: DECLARE SUB Corr (n$)
  10: DECLARE SUB Upper (n$)
  11: RANDOMIZE TIMER
  12: lne = 0
  13: CLS
  14: OPEN "greet.ai" FOR INPUT AS #1
  15: DO UNTIL EOF(1): lne = lne + 1: LINE INPUT #1, a$: LOOP:
  16: CLOSE 1
  17: OPEN "Greet.ai" FOR INPUT AS #1
  18: le = CINT(RND * lne)
  19: IF le = 0 THEN le = lne
  20: FOR qw = 1 TO le
  21: LINE INPUT #1, grt$
  22: NEXT qw
  23: Corr grt$
  24: PRINT "IS2000 Inteligentce Simulator 2000"
  25: PRINT STRING$(LEN("-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\"), 205)
  26: PRINT "IS2000>"; TAB(10); LTRIM$(RTRIM$(grt$))
  27: LOCATE 4, 1, 0
  28: ReadKey "Human>", grt2$, 69, "Hello?"
  29: FOR sl = 1 TO LEN(grt2$)
  30: 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
  31: NEXT sl
  32: IF slybl = 0 THEN g = -1: GOTO 333
  33: Corr grt2$
  34: grt2$ = RTRIM$(grt2$)
  35: grt2$ = LTRIM$(grt2$)
  36: CLOSE #1
  37: OPEN "Greets.ai" FOR INPUT AS #1
  38: DO UNTIL EOF(1)
  39: LINE INPUT #1, Mystr$
  40: IF grt2$ = Mystr$ THEN g = 1
  41: LOOP
  42: CLOSE 1
  43: OPEN "NGreets.ai" FOR INPUT AS #1
  44: DO UNTIL EOF(1)
  45: LINE INPUT #1, Mystr$
  46: IF grt2$ = Mystr$ THEN g = -1
  47: LOOP
  48: CLOSE 1
  49: OPEN "greet.ai" FOR APPEND AS #1
  50: IF g = 1 THEN PRINT #1, grt2$: CLOSE 1 ELSE IF g = -1 THEN GOTO 333 ELSE 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
  51: GOTO 334
  52: 333 LOCATE CSRLIN, 1, 0: PRINT "IS2000>"; TAB(10); "Ok?"
  53: 334 ReadKey "Human>", m$, 69, "Hello?"
  54: IF m$ = "TEACH" THEN TeachMSmthing
  55: IF INSTR(m$, ")") > 0 THEN SolveDAProb m$
  56: IF m$ = "USE INFO" THEN SolveDAProb ""
  57: IF m$ = "TALK TO ME" THEN Talk2Em
  58: IF m$ = "MIMIC: ON" THEN StartMappingSpeech
  59: 
  60: SUB Anton (i$, o$)
  61: 'OPEN "Anon.is2" FOR INPUT AS #4
  62: 'CLOSE 4
  63: END SUB
  64: 
  65: SUB ChkWrd (i$, dflt$, nw$)
  66: a = INSTR(UCASE$(i$), "A")
  67: e = INSTR(UCASE$(i$), "E")
  68: i = INSTR(UCASE$(i$), "I")
  69: o = INSTR(UCASE$(i$), "O")
  70: u = INSTR(UCASE$(i$), "U")
  71: IF a = 0 AND e = 0 AND i = 0 AND o = 0 AND u = 0 THEN PRINT nw$ ELSE PRINT dflt$
  72: END SUB
  73: 
  74: SUB Corr (n$)
  75: IF n$ = " " THEN EXIT SUB
  76: IF n$ = "" THEN EXIT SUB
  77: 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)
  78: IF LEN(n$) > 1 THEN  ELSE EXIT SUB
  79: FOR qw% = 2 TO LEN(n$)
  80: 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)
  81: NEXT qw%
  82: END SUB
  83: 
  84: SUB Define (t$)
  85: DIM aii(0 TO LEN(t$)) AS STRING
  86: ab = 1
  87: bb% = 1
  88: FOR ab = 1 TO LEN(t$)
  89: t$ = LTRIM$(t$)
  90: t$ = RTRIM$(t$)
  91: t$ = t$ + " "
  92: DO UNTIL MID$(t$, ab, 1) = " "
  93: aii(bb%) = aii(bb%) + MID$(t$, ab, 1)
  94: ab = ab + 1
  95: LOOP
  96: bb% = bb% + 1
  97: NEXT ab
  98: FOR bba = 1 TO bb% - 1
  99: Upper a$
 100: c$ = aii(bba) + ":"
 101: OPEN "vocab.ai" FOR INPUT AS #2
 102: DO UNTIL b$ = c$
 103: IF EOF(2) THEN CLOSE 2: OPEN "vocab.ai" FOR INPUT AS #2
 104: LINE INPUT #2, b$
 105: LOOP
 106: LINE INPUT #2, meng$
 107: PRINT meng$
 108: CLOSE #2
 109: a$ = ""
 110: c$ = ""
 111: NEXT bba
 112: END SUB
 113: 
 114: SUB DelRepChars (t$)
 115: IF LEN(t$) < 3 THEN EXIT SUB
 116: FOR q = 3 TO LEN(t$)
 117: c$ = MID$(t$, q - 2, 1)
 118: b$ = MID$(t$, q - 1, 1)
 119: a$ = MID$(t$, q, 1)
 120: 'IF a$ = b$ AND b$ = c$ AND c$ = a$ THEN
 121: NEXT q
 122: END SUB
 123: 
 124: SUB FindWrd (phr$, wrd$, fd)
 125: 'wrd$ = LTRIM$(RTRIM$(wrd$)): phr$ = LTRIM$(RTRIM$(phr$)): wrd$ = " " + wrd$ + " ": phr$ = " " + phr$ + " ": fd = 0
 126: 
 127: 'FOR q = 0 TO LEN(phr$) - LEN(wrd$) + 1
 128: '    FOR w = 1 TO LEN(wrd$)
 129: '        p$ = p$ + MID$(phr$, q + w, 1)
 130: '    NEXT w
 131: '    IF UCASE$(p$) = UCASE$(wrd$) THEN fd = q + 1: phr$ = LTRIM$(RTRIM$(phr$)): EXIT SUB
 132: '    p$ = ""
 133: 'NEXT q
 134: END SUB
 135: 
 136: SUB ReadKey (prm$, t$, chrs, brd$)
 137: t$ = ""
 138: PRINT prm$; TAB(10);
 139: DO UNTIL i$ = CHR$(13) OR i$ = CHR$(27)
 140: 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$ = "" ELSE q = q + 1
 141: 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
 142: i$ = INKEY$
 143: IF i$ = "" THEN GOTO 60
 144: q = 0
 145: IF (ASC(i$) > -1 AND ASC(i$) < 32) THEN GOTO 60
 146: IF i$ = CHR$(13) OR i$ = CHR$(27) THEN GOTO 70
 147: IF ASC(i$) < 123 AND ASC(i$) > 96 THEN i$ = CHR$(ASC(i$) - 32): PRINT i$;  ELSE PRINT i$;
 148: t$ = t$ + i$
 149: IF LEN(t$) >= chrs THEN t$ = MID$(t$, 1, LEN(t$) - 1): LOCATE CSRLIN, POS(0) - 1: PRINT " "; : LOCATE CSRLIN, POS(0) - 1
 150: 60 LOOP
 151: 70 PRINT ""
 152: END SUB
 153: 
 154: SUB Simpl (s$)
 155: OPEN "syon.is2" FOR INPUT AS #3
 156: m$ = MID$(s$, 1, 1)
 157: FOR q = 2 TO LEN(s$)
 158: IF MID$(s$, q, 1) = " " AND MID$(s$, q - 1, 1) <> " " THEN
 159: DO UNTIL EOF(3) OR UCASE$(g$) = UCASE$(m$)
 160: LINE INPUT #3, g$
 161: m$ = LTRIM$(RTRIM$(m$))
 162: g$ = UCASE$(LTRIM$(RTRIM$(g$)))
 163: f = INSTR(g$, "}")
 164: IF LEFT$(g$, 1) = "{" THEN r$ = MID$(g$, 2, f - 2)
 165: IF LEN(g$) = f THEN  ELSE Anton g$, a$
 166: LOOP
 167: 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$ = ""
 168: ELSE m$ = m$ + MID$(s$, q, 1)
 169: END IF
 170: NEXT q
 171: PRINT tt$
 172: CLOSE 3
 173: END SUB
 174: 
 175: SUB SolveDAProb (qt$)
 176: IF qt$ = "" THEN  ELSE m$ = qt$: GOTO 12
 177: 'ON ERROR GOTO 0
 178: OPEN "KNLDGE.IS2" FOR INPUT AS #2
 179: ln = 0
 180: DO UNTIL EOF(2)
 181: LINE INPUT #2, d$: ln = ln + 1
 182: LOOP
 183: CLOSE 2
 184: IF ln = 1 THEN a$ = "thing" ELSE a$ = "things"
 185: t$ = "ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»"
 186: PRINT t$
 187: PRINT "ºI currently know"; ln; a$; TAB(LEN(t$)); "º"
 188: PRINT "ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ"
 189: ReadKey "Enter Problem>", m$, 70, "Are you here?"
 190: 12 fst = INSTR(m$, "(")
 191: snd = INSTR(m$, ")")
 192: IF fst = 0 OR snd = 0 THEN PRINT "I don't know what to do.": EXIT SUB
 193: impotnt = INSTR(snd, m$, " ")
 194: IF impotnt = 0 THEN wdbd$ = MID$(m$, snd + 1, LEN(m$) - (snd + 1)): GOTO 2
 195: wdbd$ = MID$(m$, snd + 1, impotnt - snd - 1)
 196: 2 tt$ = UCASE$(MID$(m$, fst, snd - fst))
 197: OPEN "KNLDGE.IS2" FOR INPUT AS #2
 198: DO
 199: LINE INPUT #2, f$
 200: ff$ = MID$(f$, 1, LEN(tt$))
 201: IF UCASE$(ff$) = UCASE$(tt$) THEN GOTO 3
 202: 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
 203: LOOP UNTIL UCASE$(ff$) = UCASE$(tt$)
 204: 3 FOR s = 1 TO LEN(tt$)
 205: IF MID$(tt$, s, 1) = "$" THEN w$ = wdbd$
 206: NEXT s
 207: gw$ = MID$(f$, LEN(tt$) + 3, LEN(f$) - LEN(tt$) - 2)
 208: els = INSTR(gw$, "|")
 209: FOR sl = 1 TO LEN(wdbd$)
 210: 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
 211: NEXT sl
 212: IF slybl = 0 THEN PRINT "IS2000>"; TAB(10); "Use REAL words please.": EXIT SUB
 213: FOR s = 1 TO LEN(gw$)
 214: IF MID$(gw$, s, 2) = "*1" THEN IF slybl < 3 THEN f = 3 ELSE s = els
 215: 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)
 216: 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$
 217: NEXT s
 218: FOR d = 1 TO LEN(m$)
 219: IF d = fst THEN m2$ = m2$ + g$: d = impotnt - 1 ELSE m2$ = m2$ + MID$(m$, d, 1)
 220: NEXT d
 221: PRINT m2$
 222: END SUB
 223: 
 224: SUB StartMappingSpeech
 225: PRINT "IS2000>"; TAB(10); "What is your name?"
 226: ReadKey "Human>", nm2$, 69, "What is your name? " + TIME$
 227: OPEN "Spchpats.is2" FOR INPUT AS #2
 228: DO UNTIL EOF(2) OR nm$ = nm2$
 229: LINE INPUT #2, nm$
 230: LOOP
 231: IF EOF(2) AND nm$ <> nm2$ THEN new = 1 ELSE new = 0
 232: IF new = 1 THEN CLOSE 2: GOTO 1234
 233: DO UNTIL d$ = "{/}"
 234: LINE INPUT #2, d$
 235: 
 236: LOOP
 237: 
 238: 
 239: 
 240: 
 241: 
 242: 
 243: 
 244: 1234 END SUB
 245: 
 246: SUB Talk2Em
 247: 
 248: END SUB
 249: 
 250: SUB TeachMSmthing
 251: ON ERROR GOTO 0
 252: OPEN "KNLDGE.IS2" FOR INPUT AS #2
 253: ln = 0
 254: DO UNTIL EOF(2)
 255: LINE INPUT #2, d$: ln = ln + 1
 256: LOOP
 257: CLOSE 2
 258: IF ln = 1 THEN g$ = "thing" ELSE g$ = "things"
 259: t$ = "ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»"
 260: PRINT t$
 261: PRINT "ºI currently know"; ln; g$; TAB(LEN(t$)); "º"
 262: PRINT "ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ"
 263: 
 264: END SUB
 265: 
 266: SUB Upper (n$)
 267: FOR qw% = 1 TO LEN(n$)
 268: 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)
 269: NEXT qw%
 270: END SUB
 271: 
5748237 [rkeene@sledge /home/rkeene/devel/archive/quickbasic]$

Click here to go back to the directory listing.
Click here to download this file.
last modified: 2000-05-09 21:03:55