home *** CD-ROM | disk | FTP | other *** search
/ CD-ROM Magazine 28 Bonus / CDRomMagazine-SoftKey-ArtPassion-FrenchVersion-Win31Mac.bin / data / lfpplay.dir / 00161_Script_161 < prev    next >
Text File  |  1996-06-11  |  7KB  |  281 lines

  1. -- Art Puzzle game Handlers -----------------------------
  2.  
  3. -- *** NOTE: You must set the correct sprite numbers and cast numbers in the GeoMosaicDrag handler ***
  4.  
  5. on initializePuzzleGame
  6.   global introNarration,beginnerNarration
  7.   global intermediateNarration,placedItemSprites
  8.   global advancedNarration,terribleNarr,averageNarr,goodNarr,successNarr, finish
  9.   
  10.   -- set names of soundFiles
  11.   
  12.   
  13.   set beginnerNarration     = "LFPLAY5.AIF"
  14.   set intermediateNarration = "LFPLAY4.AIF"
  15.   set advancedNarration     = "LFPLAY3.AIF"
  16.   set terribleNarr          = "LFPLAY6.AIF"
  17.   set goodNarr           = "LFPLAY8.AIF"
  18.   set successNarr              = "LFPLAY9.AIF"
  19.   set averageNarr         = "LFPLAY7.AIF"
  20.   set placedItemSprites = []
  21.   set finish = FALSE
  22. end
  23.  
  24. on zeroTotalCorrect
  25.   global totalCorrect
  26.   put 0 into totalCorrect
  27. end zeroTotalCorrect
  28.  
  29.  
  30. on setTime allotedTime
  31.   global allotedSeconds
  32.   put allotedTime into allotedSeconds
  33.   set the text of cast "GameTimer" to string(allotedSeconds) 
  34. end
  35.  
  36.  
  37. on playNarration aNarration
  38.   sound playFile 2, aNarration
  39.   waitSound 2
  40.   sound stop 2
  41. end
  42.  
  43. -- not interruptable by pressing mouse
  44. on playNarrationNoInterrupt aNarration
  45.   sound playFile 2, aNarration
  46.   waitSoundNoInterrupt 2
  47.   sound stop 2
  48. end
  49.  
  50.  
  51. on startGeoGame
  52.   global gameStartTicks
  53.   
  54.   timeOutOff
  55.   when mouseDown then GeoMosaicDrag
  56.   put the ticks into gameStartTicks
  57.   zeroTotalCorrect
  58.   puppetSound "Start Game"
  59. end startGeoGame
  60.  
  61.  
  62. on endGeoGame 
  63.   when mouseDown then nothing
  64.   --puppetSound 0
  65. end endGeoGame
  66.  
  67.  
  68. on setPuppets firstPiece,lastPiece,status
  69.   repeat with currSprite = firstPiece to lastPiece
  70.     puppetSprite currSprite,status    
  71.   end repeat
  72. end
  73.  
  74.  
  75. on GeoMosaicDrag
  76.   global placedItemSprites
  77.   put the clickOn into whichSprite
  78.   if (whichSprite >= 5) and (whichSprite <= 24) and (the castNum of sprite whichSprite >=1) and (the castNum of sprite whichSprite <=40) and getOne(placedItemSprites,whichSprite) = 0 then TrackAndCheck (whichSprite, 2, 5, 4, "RS")
  79. end GeoMosaicDrag
  80.  
  81.  
  82. on updateGameTimer
  83.   global gameStartTicks,allotedSeconds,gameOver
  84.   
  85.   put allotedSeconds - ((the ticks - gameStartTicks) / 60) into gameSecondsRemain
  86.   set the text of cast "GameTimer" to string(gameSecondsRemain)
  87.   if gameSecondsRemain <= 0 then
  88.     waitticks 30 -- so you hear the "correct" sound onfast computers
  89.     set gameOver = TRUE
  90.     finished
  91.   end if
  92.   
  93. end updateGameTimer
  94.  
  95.  
  96. on gameOutOfTime
  97.   global totalCorrect,terribleNarr,averageNarr,goodNarr
  98.   if TotalCorrect >= 0 AND TotalCorrect < 8 then set result = terribleNarr
  99.   if TotalCorrect >= 8 AND TotalCorrect < 16 then set result = averageNarr
  100.   if TotalCorrect >= 16 AND TotalCorrect <= 20 then set result = goodNarr
  101.   
  102.   return result
  103.   
  104. end gameOutOfTime
  105.  
  106.  
  107. on addToTotalCorrect
  108.   global totalCorrect
  109.   put totalCorrect + 1 into totalCorrect
  110.   if TotalCorrect = 20 then finishedSpecial
  111. end addToTotalCorrect
  112.  
  113.  
  114. on finished
  115.   global finish
  116.   set finish = TRUE
  117.   endGeoGame
  118.   playNarrationNoInterrupt gameOutOfTime()
  119.   waitticks 120
  120.   setPuppets 5,24,FALSE
  121.   go to frame "LfPlSt1"
  122. end
  123.  
  124. on finishedSpecial
  125.   global finish
  126.   set finish = TRUE
  127.   global successNarr
  128.   endGeoGame
  129.   playNarrationNoInterrupt successNarr
  130.   waitticks 120
  131.   setPuppets 5,24,FALSE
  132.   go to frame "LfPlSt1"
  133. end
  134.  
  135.  
  136. on getTotalCorrect
  137.   global totalCorrect
  138.   return totalCorrect
  139. end getTotalCorrect
  140.  
  141.  
  142. on doBeginners
  143.   global beginners
  144.   set the visible of sprite beginners to TRUE
  145.   updateStage
  146.   setTime 70
  147.   
  148.   waitTicks 30
  149.   
  150. end
  151.  
  152.  
  153. on dointermediate
  154.   global intermediate
  155.   set the visible of sprite intermediate to TRUE
  156.   updateStage
  157.   setTime 50
  158.   waitTicks 30
  159. end
  160.  
  161.  
  162. on doAdvanced
  163.   global advanced
  164.   set the visible of sprite advanced to  TRUE
  165.   updateStage
  166.   setTime 30
  167.   waitTicks 30
  168. end
  169.  
  170.  
  171. -- Reusable handlers --------------------------------
  172.  
  173. on waitSoundNoInterrupt soundChannel
  174.   repeat while soundBusy (soundChannel)
  175.     processFrame
  176.     updateStage
  177.   end repeat
  178. end
  179.  
  180.  
  181. on SpriteFollowMouse whichSprite
  182.   set the locH of sprite whichSprite to the mouseH
  183.   set the locV of sprite whichSprite to the mouseV
  184.   updateGameTimer
  185.   updateStage
  186. end SpriteFollowMouse
  187.  
  188. on SerialFromCoords GridSprite, NumCols, NumRows, HGlobal, VGlobal
  189.   put the width of sprite GridSprite into GridWidth
  190.   put the height of sprite GridSprite into GridHeight
  191.   put GridWidth / NumCols into CellWidth
  192.   put GridHeight / NumRows into CellHeight
  193.   put HGlobal - the left of sprite GridSprite into HLocal
  194.   put VGlobal - the top of sprite GridSprite into VLocal
  195.   
  196.   put ( ( VLocal / CellHeight ) * NumCols ) + ( HLocal / CellWidth ) + 1 into theResult
  197.   
  198.   return theResult
  199. end SerialFromCoords
  200.  
  201. on GetSerialCenter GridSprite, NumCols, NumRows, whichSerial
  202.   put the width of sprite GridSprite into GridWidth
  203.   put the height of sprite GridSprite into GridHeight
  204.   put GridWidth / NumCols into CellWidth
  205.   put GridHeight / NumRows into CellHeight
  206.   
  207.   put  ((whichSerial - ( ( (whichSerial-1) / NumCols ) * NumCols))*CellWidth)- (CellWidth / 2 )+ (the left of sprite GridSprite) into TheResult
  208.   put ","&&(( (whichSerial-1) / NumCols ) * CellHeight) + (CellHeight / 2 )+(the top of sprite GridSprite) after theResult
  209.   
  210.   return theResult
  211. end GetSerialCenter
  212.  
  213.  
  214. on TrackAndCheck ClickedSprite, GridSprite, NumCols, NumRows, NewName
  215.   global gameOver,finish
  216.   put the locH of sprite ClickedSprite into storeH
  217.   put the locV of sprite ClickedSprite into storeV
  218.   
  219.   put Word 2 of the name of cast (the castNum of sprite ClickedSprite) into oldSerial 
  220.   
  221.   repeat while the stillDown
  222.     SpriteFollowMouse( ClickedSprite)
  223.     if gameOver then
  224.       if finish = FALSE then
  225.         finished
  226.       end if
  227.       
  228.       exit 
  229.       
  230.     end if
  231.   end repeat
  232.   
  233.   put SerialFromCoords (GridSprite, NumCols, NumRows, the mouseH, the mouseV) into GridSerial
  234.   
  235.   if oldSerial = GridSerial then 
  236.     doMatch (ClickedSprite, GridSerial, NewName, GridSprite, NumCols, NumRows)
  237.   else
  238.     doReturn (ClickedSprite, storeH, storeV)
  239.   end if
  240. end TrackAndCheck
  241.  
  242.  
  243. on doMatch ClickedSprite, GridSerial, NewName, GridSprite, NumCols, NumRows
  244.   global placedItemSprites
  245.   puppetSprite ClickedSprite, true
  246.   puppetSound "Correct"
  247.   set the castNum of sprite ClickedSprite to (the number of cast (NewName&&GridSerial))
  248.   
  249.   put GetSerialCenter (GridSprite, NumCols, NumRows, GridSerial) into serialCenter
  250.   
  251.   set the locH of sprite ClickedSprite to value(item 1 of serialCenter)
  252.   set the locV of sprite ClickedSprite to value(item 2 of serialCenter)
  253.   
  254.   
  255.   addToTotalCorrect
  256.   add placedItemSprites,ClickedSprite
  257. end doMatch
  258.  
  259.  
  260. on doReturn ClickedSprite, storeH, storeV
  261.   puppetsound "Missed"
  262.   -- return the sprite to its original location
  263.   set the locH of sprite ClickedSprite to storeH
  264.   set the locV of sprite ClickedSprite to storeV  
  265. end doReturn
  266.  
  267.  
  268. on buttonStart 
  269.   puppetSprite the clickOn, TRUE
  270.   set CastNumber = the castNum of sprite the clickOn
  271.   set CastName = the name of cast CastNumber
  272.   set NumChars = the number of chars in CastName
  273.   set ShortChars = NumChars - 3
  274.   set NewName =  char 1 to ShortChars of CastName &  "in"
  275.   set the castNum of sprite the clickOn = cast NewName
  276.   updateStage
  277.   waitTicks 30
  278.   puppetSprite the clickOn, FALSE
  279.   updateStage
  280. end
  281.