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