home *** CD-ROM | disk | FTP | other *** search
/ Corel Draw 6 / corel-draw-6-cd1.iso / scripts / animals.csc next >
Text File  |  1995-08-18  |  6KB  |  240 lines

  1. REM Computer guesses your animals and learns them.
  2. REM Animals.csc July 24, 1995
  3.  
  4. '#########################################################################
  5.  
  6. ' FUNCTION declarations
  7. DECLARE SUB intro()
  8. DECLARE SUB endmessage()
  9. DECLARE SUB loaddatabase( filename$ )
  10. DECLARE SUB savedatabase( filename$ )
  11. DECLARE FUNCTION quser() AS BOOLEAN
  12. DECLARE SUB psugg()
  13. DECLARE FUNCTION guess( a% ) AS integer
  14. DECLARE SUB Findanimal()
  15.  
  16. ' GLOBAL variables and constants
  17. GLOBAL CONST maxdata=255            ' Size of database
  18. GLOBAL CONST YES=6                ' Messagebox yes value
  19. GLOBAL CONST YESNOBUTTONS=4        ' messagebox YES/NO buttons
  20. GLOBAL CONST Title="Animal Game"    ' Game title
  21. GLOBAL anim(maxdata) AS STRING     ' holds animal database
  22.  
  23. ' local main variable
  24. CONST filename = "animals.gme"    ' name of the file
  25. DIM again AS BOOLEAN            ' program looping condition
  26.  
  27.  
  28. '=========================================================================
  29. ' Display intro
  30. intro
  31.  
  32. ' Fill up databASe
  33. loaddatabase(filename)
  34.  
  35. ' question loop
  36. again = TRUE
  37. DO
  38.     again = quser()
  39. LOOP UNTIL again = FALSE
  40.  
  41. IF MESSAGEBOX("Do you want to save this game?",Title,YESNOBUTTONS)=YES THEN
  42.     ' Save database
  43.     savedatabase(filename)
  44. end IF
  45.  
  46. ' end message
  47. endmessage
  48.  
  49.  
  50. '=========================================================================
  51. ' Display introduction message
  52. SUB intro
  53.     DIM temp AS string    ' holds temporary value
  54.     temp = "Play GUESS THE ANIMAL with Corel SCRIPT" + CHR(13)
  55.     temp = temp + "Think of an animal and the computer will try to guess it..."
  56.     MESSAGE temp
  57. END SUB
  58.  
  59. '=========================================================================
  60. ' Display end message
  61. SUB endmessage
  62.     DIM temp AS STRING    ' holds temporary value
  63.     temp = "Thank you for playing."
  64.     MESSAGE  temp 
  65. END SUB
  66.  
  67.  
  68. '=========================================================================
  69. ' Try to load database from file.
  70. ' if file is currupted or not present, assign default values
  71. SUB loaddatabase( filename )
  72.     ON ERROR GOTO errorhandler
  73.     DIM num AS INTEGER        ' number of element in database
  74.     DIM a AS INTEGER        ' loop var
  75.  
  76.     OPEN filename FOR INPUT AS 1
  77.     INPUT #1, num
  78.     FOR a=2 TO num
  79.         INPUT #1, anim(a)
  80.     NEXT a
  81.     CLOSE #1
  82.     anim(1)= STR(num)
  83.     
  84.     subend:
  85.     EXIT SUB
  86.     errorhandler:
  87.         ' We could not load database
  88.         ' ASsign default values
  89.         CLOSE #1
  90.         anim(1)="4"
  91.         anim(2)="?"+CHR(3)+CHR(4)+"Does it swim?"
  92.         anim(3)="!gold fish"
  93.         anim(4)="!Hawk"
  94.         resume at subend
  95. END SUB
  96.  
  97. '=========================================================================
  98. ' Try to save database to file.
  99. SUB savedatabase( filename )
  100.     ON ERROR GOTO errorhandler
  101.     DIM num AS INTEGER        ' number of element in database
  102.     DIM a AS INTEGER        ' loop var
  103.  
  104.     num = VAL(anim(1))
  105.     OPEN filename FOR OUTPUT AS 1
  106.     FOR a = 1 TO num
  107.         WRITE #1, anim(a)
  108.     NEXT a
  109.     CLOSE #1
  110.     
  111.     subend:
  112.     EXIT SUB
  113.     errorhandler:
  114.         ' We could not save database
  115.         CLOSE #1
  116.         MESSAGE "Error saving game!"
  117.         RESUME AT subend
  118. END SUB
  119.  
  120.  
  121. '=========================================================================
  122. ' Question user on a animal
  123. FUNCTION quser
  124.     DIM ans AS INTEGER            ' holds the answer value
  125.  
  126.     ans = MESSAGEBOX("Are you thinking of an animal?",Title,YESNOBUTTONS)
  127.     IF ans=YES THEN
  128.         ' answer is YES
  129.         Findanimal
  130.     ELSE
  131.         ' answer is NO
  132.         ans = MESSAGEBOX("Can I give you some suggestions?",Title,YESNOBUTTONS)
  133.         IF ans=YES THEN psugg
  134.     END IF    
  135.     
  136.     ' Decide IF we want to continue
  137.     IF ans<>YES THEN 
  138.         quser=FALSE
  139.     ELSE
  140.         quser = TRUE
  141.     END IF
  142. END FUNCTION
  143.  
  144. '=========================================================================
  145. ' Prints suggestion list
  146. SUB psugg
  147.     DIM mess AS STRING    ' Message buffer
  148.     DIM a AS INTEGER    ' loop counter
  149.     DIM num AS INTEGER  ' number of elements in array
  150.     DIM ani AS INTEGER  ' number of animals found
  151.     
  152.     ani=0
  153.     num = VAL( anim(1) )
  154.     mess = "Here are some suggestions:" + CHR(13) + CHR(13) + CHR(10)
  155.     
  156.     ' Prints all animals
  157.     FOR a = 2 TO num
  158.         IF LEFT( anim(a),1)="!" THEN 
  159.             mess = mess + MID( anim(a),2)
  160.             ani=ani+1
  161.     
  162.             ' Format string
  163.             IF ani MOD 5 = 0 THEN
  164.                 mess = mess + CHR(13)
  165.             ELSE
  166.                 mess = mess + CHR(9)
  167.             END IF
  168.         END IF
  169.     NEXT a
  170.     MESSAGE mess
  171. END SUB
  172.  
  173.  
  174. '=========================================================================
  175. ' Try to guess animal
  176. FUNCTION guess( question% ) 
  177.     IF MESSAGEBOX(MID( anim(question),4),Title,YESNOBUTTONS)=YES THEN
  178.         guess = ASC (MID( anim(question),2,1))
  179.     ELSE
  180.         guess = ASC (MID( anim(question),3,1))
  181.     END IF
  182. END FUNCTION
  183.  
  184.  
  185. '=========================================================================
  186. ' Find next question and guess
  187. SUB Findanimal
  188.     DIM mess AS STRING        ' Message buffer
  189.     DIM g AS INTEGER        ' guess
  190.     DIM answer AS INTEGER    ' tempo answer
  191.     DIM newval AS INTEGER    ' next empty space
  192.     DIM animal AS STRING    ' player animal
  193.     DIM question AS STRING    ' player question
  194.  
  195.     ' Question :Animal
  196.     BEGIN DIALOG qanimal 144, 70, Title
  197.         TEXT  5, 4, 120, 21, "This animal you were thinking of was a "
  198.         TEXTBOX  5, 15, 125, 14, animal
  199.         OKBUTTON  50, 35, 40, 14
  200.     END DIALOG
  201.  
  202.     ' Start guessing with first question
  203.     g = 2
  204.     
  205.     ' find animal
  206.     WHILE LEFT(anim(g),1) = "?"
  207.         g = guess(g)            
  208.     WEND
  209.     
  210.     ' verIFy guess
  211.     answer=MESSAGEBOX("The animal you were thinking of was a " + MID(anim(g),2) + "?", Title,YESNOBUTTONS)
  212.     IF answer=YES OR VAL(anim(1))>maxdata-2 THEN
  213.         ' We have it
  214.         MESSAGE "Why not think of another animal?"
  215.     ELSE
  216.         ' Enter in database
  217.         DIALOG qanimal
  218.         mess = "Please enter a question that would distinguish a " 
  219.         mess = mess + animal + " from a " + MID(anim(g),2)
  220.         BEGIN DIALOG qquestion 144, 82, Title
  221.             TEXT  5, 4, 120, 21, mess
  222.             TEXTBOX  5, 31, 125, 14, question
  223.             OKBUTTON  50, 50, 40, 14
  224.         END DIALOG
  225.         DIALOG qquestion
  226.         newval = VAL(anim(1)) + 1
  227.         answer = MESSAGEBOX("For a " + animal + " the answer would be?",Title,YESNOBUTTONS)
  228.         IF answer=YES THEN
  229.             anim(newval) = "!" + animal
  230.             anim(newval+1) = anim(g)
  231.         ELSE
  232.             anim(newval+1) = "!" + animal
  233.             anim(newval) = anim(g)
  234.         END IF
  235.         anim(g) = "?" + CHR(newval) + CHR(newval+1) + question
  236.         anim(1) = STR(newval+1)
  237.     END IF
  238. END SUB
  239.  
  240.