5748126 [rkeene@sledge /home/rkeene/devel/archive/quickbasic]$ cat -n is2000a.bas
   1: DECLARE SUB SolveDAProb (qt$)
   2: DECLARE SUB ReadKey (prm$, t$, chrs!, brd$)
   3: DECLARE SUB TeachMSmthing ()
   4: DECLARE SUB Define (t$)
   5: DECLARE SUB Corr (n$)
   6: DECLARE SUB Upper (n$)
   7: RANDOMIZE TIMER
   8: lne = 0
   9: CLS
  10: OPEN "greet.ai" FOR INPUT AS #1
  11: DO UNTIL EOF(1): lne = lne + 1: LINE INPUT #1, a$: LOOP:
  12: CLOSE 1
  13: OPEN "Greet.ai" FOR INPUT AS #1
  14: le = CINT(RND * lne)
  15: IF le = 0 THEN le = lne
  16: FOR qw = 1 TO le
  17: LINE INPUT #1, grt$
  18: NEXT qw
  19: Corr grt$
  20: PRINT "IS2000 Inteligentce Simulator 2000"
  21: PRINT STRING$(LEN("-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\"), 205)
  22: PRINT "IS2000>"; TAB(10); grt$
  23: LOCATE 4, 1, 0
  24: ReadKey "Human>", grt2$, 69, "Hello?"
  25: FOR sl = 1 TO LEN(grt2$)
  26: 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
  27: NEXT sl
  28: IF slybl = 0 THEN g = -1: GOTO 333
  29: Corr grt2$
  30: grt2$ = RTRIM$(grt2$)
  31: grt2$ = LTRIM$(grt2$)
  32: CLOSE #1
  33: OPEN "Greets.ai" FOR INPUT AS #1
  34: DO UNTIL EOF(1)
  35: LINE INPUT #1, Mystr$
  36: IF grt2$ = Mystr$ THEN g = 1
  37: LOOP
  38: CLOSE 1
  39: OPEN "NGreets.ai" FOR INPUT AS #1
  40: DO UNTIL EOF(1)
  41: LINE INPUT #1, Mystr$
  42: IF grt2$ = Mystr$ THEN g = -1
  43: LOOP
  44: CLOSE 1
  45: OPEN "greet.ai" FOR APPEND AS #1
  46: 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
  47: GOTO 334
  48: 333 LOCATE CSRLIN, 1, 0: PRINT "IS2000>"; TAB(10); "Ok?"
  49: 334 ReadKey "Human>", m$, 69, "Hello?"
  50: IF m$ = "TEACH" THEN TeachMSmthing
  51: IF INSTR(m$, ")") > 0 THEN SolveDAProb m$
  52: IF m$ = "USE INFO" THEN SolveDAProb ""
  53: 
  54: SUB Corr (n$)
  55: IF n$ = " " THEN EXIT SUB
  56: IF n$ = "" THEN EXIT SUB
  57: 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)
  58: IF LEN(n$) > 1 THEN  ELSE EXIT SUB
  59: FOR qw% = 2 TO LEN(n$)
  60: 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)
  61: NEXT qw%
  62: END SUB
  63: 
  64: SUB Define (t$)
  65: DIM aii(0 TO LEN(t$)) AS STRING
  66: ab = 1
  67: bb% = 1
  68: FOR ab = 1 TO LEN(t$)
  69: t$ = LTRIM$(t$)
  70: t$ = RTRIM$(t$)
  71: t$ = t$ + " "
  72: DO UNTIL MID$(t$, ab, 1) = " "
  73: aii(bb%) = aii(bb%) + MID$(t$, ab, 1)
  74: ab = ab + 1
  75: LOOP
  76: bb% = bb% + 1
  77: NEXT ab
  78: FOR bba = 1 TO bb% - 1
  79: Upper a$
  80: c$ = aii(bba) + ":"
  81: OPEN "vocab.ai" FOR INPUT AS #2
  82: DO UNTIL b$ = c$
  83: IF EOF(2) THEN CLOSE 2: OPEN "vocab.ai" FOR INPUT AS #2
  84: LINE INPUT #2, b$
  85: LOOP
  86: LINE INPUT #2, meng$
  87: PRINT meng$
  88: CLOSE #2
  89: a$ = ""
  90: c$ = ""
  91: NEXT bba
  92: END SUB
  93: 
  94: SUB DelRepChars (t$)
  95: IF LEN(t$) < 3 THEN EXIT SUB
  96: FOR q = 3 TO LEN(t$)
  97: c$ = MID$(t$, q - 2, 1)
  98: b$ = MID$(t$, q - 1, 1)
  99: a$ = MID$(t$, q, 1)
 100: 'IF a$ = b$ AND b$ = c$ AND c$ = a$ THEN
 101: NEXT q
 102: END SUB
 103: 
 104: SUB FindWrd (phr$, wrd$, fd)
 105: 'wrd$ = LTRIM$(RTRIM$(wrd$)): phr$ = LTRIM$(RTRIM$(phr$)): wrd$ = " " + wrd$ + " ": phr$ = " " + phr$ + " ": fd = 0
 106: 
 107: 'FOR q = 0 TO LEN(phr$) - LEN(wrd$) + 1
 108: '    FOR w = 1 TO LEN(wrd$)
 109: '        p$ = p$ + MID$(phr$, q + w, 1)
 110: '    NEXT w
 111: '    IF UCASE$(p$) = UCASE$(wrd$) THEN fd = q + 1: phr$ = LTRIM$(RTRIM$(phr$)): EXIT SUB
 112: '    p$ = ""
 113: 'NEXT q
 114: END SUB
 115: 
 116: SUB ReadKey (prm$, t$, chrs, brd$)
 117: t$ = ""
 118: PRINT prm$; TAB(10);
 119: DO UNTIL i$ = CHR$(13) OR i$ = CHR$(27)
 120: 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
 121: 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
 122: i$ = INKEY$
 123: IF i$ = "" THEN GOTO 60
 124: q = 0
 125: IF (ASC(i$) > -1 AND ASC(i$) < 32) THEN GOTO 60
 126: IF i$ = CHR$(13) OR i$ = CHR$(27) THEN GOTO 70
 127: IF ASC(i$) < 123 AND ASC(i$) > 96 THEN i$ = CHR$(ASC(i$) - 32): PRINT i$;  ELSE PRINT i$;
 128: t$ = t$ + i$
 129: IF LEN(t$) >= chrs THEN t$ = MID$(t$, 1, LEN(t$) - 1): LOCATE CSRLIN, POS(0) - 1: PRINT " "; : LOCATE CSRLIN, POS(0) - 1
 130: 60 LOOP
 131: 70 PRINT ""
 132: END SUB
 133: 
 134: SUB SolveDAProb (qt$)
 135: IF qt$ = "" THEN  ELSE m$ = qt$: GOTO 12
 136: 'ON ERROR GOTO 0
 137: OPEN "KNLDGE.IS2" FOR INPUT AS #2
 138: ln = 0
 139: DO UNTIL EOF(2)
 140: LINE INPUT #2, d$: ln = ln + 1
 141: LOOP
 142: CLOSE 2
 143: IF ln = 1 THEN a$ = "thing" ELSE a$ = "things"
 144: t$ = "ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»"
 145: PRINT t$
 146: PRINT "ºI currently know"; ln; a$; TAB(LEN(t$)); "º"
 147: PRINT "ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ"
 148: ReadKey "Enter Problem>", m$, 70, "Are you here?"
 149: 12 fst = INSTR(m$, "(")
 150: snd = INSTR(m$, ")")
 151: IF fst = 0 OR snd = 0 THEN PRINT "I don't know what to do.": EXIT SUB
 152: impotnt = INSTR(snd, m$, " ")
 153: IF impotnt = 0 THEN wdbd$ = MID$(m$, snd + 1, LEN(m$) - (snd + 1)): GOTO 2
 154: wdbd$ = MID$(m$, snd + 1, impotnt - snd - 1)
 155: 2 tt$ = UCASE$(MID$(m$, fst, snd - fst))
 156: OPEN "KNLDGE.IS2" FOR INPUT AS #2
 157: DO
 158: LINE INPUT #2, f$
 159: ff$ = MID$(f$, 1, LEN(tt$))
 160: IF UCASE$(ff$) = UCASE$(tt$) THEN GOTO 3
 161: 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
 162: LOOP UNTIL UCASE$(ff$) = UCASE$(tt$)
 163: 3 FOR s = 1 TO LEN(tt$)
 164: IF MID$(tt$, s, 1) = "$" THEN w$ = wdbd$
 165: NEXT s
 166: gw$ = MID$(f$, LEN(tt$) + 3, LEN(f$) - LEN(tt$) - 2)
 167: els = INSTR(gw$, "|")
 168: FOR sl = 1 TO LEN(wdbd$)
 169: 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
 170: NEXT sl
 171: IF slybl = 0 THEN PRINT "IS2000>"; TAB(10); "Use REAL words please.": EXIT SUB
 172: FOR s = 1 TO LEN(gw$)
 173: IF MID$(gw$, s, 2) = "*1" THEN IF slybl < 3 THEN f = 3 ELSE s = els
 174: 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)
 175: 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$
 176: NEXT s
 177: FOR d = 1 TO LEN(m$)
 178: IF d = fst THEN m2$ = m2$ + g$: d = impotnt - 1 ELSE m2$ = m2$ + MID$(m$, d, 1)
 179: NEXT d
 180: PRINT m2$
 181: END SUB
 182: 
 183: SUB TeachMSmthing
 184: ON ERROR GOTO 0
 185: OPEN "KNLDGE.IS2" FOR INPUT AS #2
 186: ln = 0
 187: DO UNTIL EOF(2)
 188: LINE INPUT #2, d$: ln = ln + 1
 189: LOOP
 190: CLOSE 2
 191: IF ln = 1 THEN g$ = "thing" ELSE g$ = "things"
 192: t$ = "ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»"
 193: PRINT t$
 194: PRINT "ºI currently know"; ln; g$; TAB(LEN(t$)); "º"
 195: PRINT "ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ"
 196: 
 197: END SUB
 198: 
 199: SUB Upper (n$)
 200: FOR qw% = 1 TO LEN(n$)
 201: 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)
 202: NEXT qw%
 203: END SUB
 204: 
5748127 [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:52