10 maxnode% = 50 50 DIM nodetype(maxnode%) AS INTEGER 60 DIM question(maxnode%) AS STRING 70 DIM ifyes(maxnode%) AS INTEGER 80 DIM ifno(maxnode%) AS INTEGER 90 REM Skeleton database knows one animal: The elephant 100 nodetype(1) = 1 110 question(1) = "elephant" 120 ifyes(1) = 0 130 ifno(1) = 0 140 seq% = 1 300 REM Ready to run 310 PRINT "Think of an animal ..." 315 INPUT "Are you ready?", a$ 320 IF (a$ = "list") THEN 321 FOR node% = 1 TO seq% 322 PRINT node%, question(node%), ifyes(node%), ifno(node%) 323 NEXT 324 GOTO 310 325 END IF 329 IF (a$ = "load") THEN 330 OPEN "animal.dat" FOR INPUT AS #1 331 node% = 1 332 DO 333 INPUT #1, seq%, type$, QorA$, iy%, in% 334 IF (seq% <> node%) THEN 335 PRINT "Bad node"; seq%; " at line "; node%; " of input file" 336 STOP 337 END IF 338 nodetype(node%) = 0 339 IF (type$ = "A") THEN nodetype(node%) = 1 340 ifyes(node%) = iy% 341 ifno(node%) = in% 342 question(node%) = QorA$ 343 node% = node% + 1 344 LOOP UNTIL EOF(1) 345 CLOSE (1) 346 GOTO 310 347 END IF 350 IF (a$ = "save") THEN 351 OPEN "animal.dat" FOR OUTPUT AS #2 352 FOR node% = 1 TO seq% 353 nt$ = ",Q," 354 IF (nodetype(node%)) THEN nt$ = ",A," 355 PRINT #2, node%; nt$; question(node%); ","; ifyes(node%); ","; ifno(node%) 356 NEXT node% 358 CLOSE (2) 359 GOTO 310 360 END IF 370 IF (a$ = "quit") THEN SYSTEM 380 IF (a$ <> "yes") THEN GOTO 310 400 REM play 405 node% = 1 408 IF (nodetype(node%) = 1) THEN GOTO 510 410 PRINT question(node%), "?" 420 INPUT a$ 430 IF (a$ = "yes") THEN 440 node% = ifyes(node%) 450 ELSE 460 node% = ifno(node%) 470 END IF 480 IF (nodetype(node%) = 0) THEN GOTO 410 500 REM answer node 510 PRINT "Is it a ", question(node%), "?" 520 INPUT a$ 530 IF (a$ = "yes") THEN 540 PRINT "Yeah, I did it !!" 550 GOTO 310 560 END IF 570 PRINT "I give up ... What is it?" 580 INPUT animal$ 590 PRINT "What is a question to distinguish between a ", question(node%), " and a ", animal$, "?" 600 INPUT q$ 610 PRINT "For a ", question(node%), "the answer is?" 620 INPUT a$ 630 question(seq% + 1) = question(node%) 635 nodetype(seq% + 1) = 1 640 question(seq% + 2) = animal$ 645 nodetype(seq% + 2) = 1 650 question(node%) = q$ 651 nodetype(node%) = 0 660 IF (a$ = "yes") THEN 670 ifyes(node%) = seq% + 1 680 ifno(node%) = seq% + 2 690 ELSE 700 ifyes(node%) = seq% + 2 710 ifno(node%) = seq% + 1 720 END IF 730 seq% = seq% + 2 740 GOTO 310