Advertisement
alestane

Untitled

Dec 21st, 2011
172
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. display.setStatusBar(display.HiddenStatusBar)
  2. local storyboard = require "storyboard"
  3. local scene = storyboard.newScene()
  4. require("physics")
  5. require("sprite")
  6.  
  7. ----------------------------
  8. -- Functions
  9. ----------------------------
  10.  
  11. local function collisionGround(event)
  12.     event.other:removeSelf()
  13. end
  14.  
  15. local function collisionCharacter(event)
  16.     if (event.other.type == "penny") then
  17.         storyboard.money = storyboard.money + 0.01
  18.         event.other:removeSelf()
  19.     elseif (event.other.type == "nickel") then
  20.         storyboard.money = storyboard.money + 0.05
  21.         event.other:removeSelf()
  22.     elseif (event.other.type == "dime") then
  23.         storyboard.money = storyboard.money + 0.10
  24.         event.other:removeSelf()
  25.     elseif (event.other.type == "quarter") then
  26.         storyboard.money = storyboard.money + 0.25
  27.         event.other:removeSelf()
  28.     elseif (event.other.type == "rock") then
  29.         timer.performWithDelay(1, function() storyboard.gotoScene("gameover", "slideLeft", 1000) end)
  30.     end
  31.     textMoney.text = string.format("$%.02f", storyboard.money)
  32. end
  33.  
  34. local motion = 0
  35. local isPaused = false
  36.  
  37. local function moveLeft(event)
  38.     if not isPaused then
  39.         motion = -9
  40.         buttonLeft:prepare("leftt")
  41.         buttonLeft:play()
  42.         character:prepare("charml")
  43.         character:play()
  44.         character.type = "left"
  45.     end
  46. end
  47.  
  48. local function moveRight(event)
  49.     if not isPaused then
  50.         motion = 9
  51.         buttonRight:prepare("rightt")
  52.         buttonRight:play()
  53.         character:prepare("charmr")
  54.         character:play()
  55.         character.type = "right"
  56.     end
  57. end
  58.  
  59. local function moveCharacter(event)
  60.     character.x = character.x + motion
  61.     if character.x < 50 then character.x = 50
  62.     elseif character.x > 910 then character.x = 910 end
  63.     buttonLeft:toFront()
  64.     buttonRight:toFront()
  65. end
  66.  
  67. local function stopCharacter(event)
  68.     motion = 0
  69.     buttonLeft:prepare("leftu")
  70.     buttonLeft:play("leftu")
  71.     buttonRight:prepare("rightu")
  72.     buttonRight:play("rightu")
  73.     if (character.type == "left") then
  74.         character:prepare("charsl")
  75.         character:play("charsl")
  76.     elseif (character.type == "right") then
  77.         character:prepare("charsr")
  78.         character:play("charsr")
  79.     end
  80. end
  81.  
  82. local function pauseGame(scene)
  83.     isPaused = not isPaused
  84.     if isPaused then
  85.         buttonPause:prepare("pauset")
  86.         buttonPause:play()
  87.         physics.pause()
  88.         timer.pause(createCoinsTimer)
  89.     else
  90.         buttonPause:prepare("pauseu")
  91.         buttonPause:play()
  92.         physics.start()
  93.         timer.resume(createCoinsTimer)
  94.     end
  95. end
  96.  
  97. ----------------------------
  98. -- Storyboard
  99. ----------------------------
  100.  
  101. function scene:createScene(event)
  102.     local group = self.view
  103.     physics.start()
  104.     physics.pause()
  105.     local background = display.newImage(group, "visuals/game_background.png", 0, 0)
  106.     ground = display.newImage(group, "visuals/game_ground.png", 0, 590)
  107.         physics.addBody(ground, "static")
  108.         ground:addEventListener("collision", collisionGround)
  109.     local buttonSheet = sprite.newSpriteSheet("visuals/game_buttons.png", 75, 75)  
  110.     local buttonLeftSet = sprite.newSpriteSet(buttonSheet, 1, 2)
  111.         sprite.add(buttonLeftSet, "leftu", 1, 1, 60000, 0)
  112.         sprite.add(buttonLeftSet, "leftt", 2, 1, 60000, 0)
  113.     local buttonRightSet = sprite.newSpriteSet(buttonSheet, 3, 2)
  114.         sprite.add(buttonRightSet, "rightu", 3, 1, 60000, 0)
  115.         sprite.add(buttonRightSet, "rightt", 4, 1, 60000, 0)
  116.     local buttonPauseSet = sprite.newSpriteSet(buttonSheet, 5, 2)
  117.         sprite.add(buttonPauseSet, "pauseu", 5, 1, 60000, 0)
  118.         sprite.add(buttonPauseSet, "pauset", 6, 1, 60000, 0)
  119.     buttonLeft = sprite.newSprite(buttonLeftSet)
  120.         buttonLeft:addEventListener("touch", moveLeft)
  121.         buttonLeft.x = 57.5
  122.         buttonLeft.y = 582.5
  123.         group:insert(buttonLeft)
  124.     buttonRight = sprite.newSprite(buttonRightSet)
  125.         buttonRight:addEventListener("touch", moveRight)
  126.         buttonRight.x = 902.5
  127.         buttonRight.y = 582.5
  128.         group:insert(buttonRight)
  129.     buttonPause = sprite.newSprite(buttonPauseSet)
  130.         buttonPause:addEventListener("tap", function(event) pauseGame(self) end) -- Shorten?
  131.         buttonPause.x = 902.5
  132.         buttonPause.y = 57.5
  133.         group:insert(buttonPause)
  134.     local characterSheet = sprite.newSpriteSheet("visuals/game_character.png", 100, 100)   
  135.     local characterSet = sprite.newSpriteSet(characterSheet, 1, 8)
  136.         sprite.add(characterSet, "charsl", 1, 1, 60000, 0)
  137.         sprite.add(characterSet, "charml", 2, 3, 150, 0)
  138.         sprite.add(characterSet, "charsr", 5, 1, 60000, 0)
  139.         sprite.add(characterSet, "charmr", 6, 3, 150, 0)
  140.     character = sprite.newSprite(characterSet)
  141.         physics.addBody(character, "static")
  142.         character:addEventListener("collision", collisionCharacter)
  143.         self.view:addEventListener("enterFrame", moveCharacter)
  144.         self.view:addEventListener('Stop', stopCharacter)
  145.         character.x = display.contentWidth / 2
  146.         character.y = 540
  147.         group:insert(character)
  148.     storyboard.money = 0
  149.     textMoney = display.newText(string.format("$%.02f", storyboard.money), 0, 20, native.systemFont, 75)
  150.         textMoney:setReferencePoint(display.CenterReferencePoint)
  151.         textMoney.x = display.contentWidth / 2
  152.         textMoney:setTextColor(0, 0, 0)
  153.         group:insert(textMoney)
  154.     Runtime:addEventListener('enterFrame', self.view)
  155.     Runtime:addEventListener('touch', self.view)
  156. end
  157.  
  158. local function createCoins(scene)
  159.     local group = scene.view
  160.     local coinSheet = sprite.newSpriteSheet("visuals/game_coins.png", 50, 50)  
  161.     local coinSet = sprite.newSpriteSet(coinSheet, 1, 25)
  162.         sprite.add(coinSet, "penny", 1, 5, 250, 0)
  163.         sprite.add(coinSet, "nickel", 6, 5, 250, 0)
  164.         sprite.add(coinSet, "dime", 11, 5, 250, 0)
  165.         sprite.add(coinSet, "quarter", 16, 5, 250, 0)
  166.         sprite.add(coinSet, "rock", 21, 5, 250, 0)
  167.     local coin = sprite.newSprite(coinSet)
  168.         physics.addBody(coin, "dynamic")
  169.         coin.isSensor = true
  170.         coin.isFixedRotation = true
  171.     local chooseCoin = math.random(1, 100)
  172.     if chooseCoin >= 1 and chooseCoin <= 25 then
  173.         coin.type = "penny"
  174.     elseif chooseCoin >= 26 and chooseCoin <= 45 then
  175.         coin.type = "nickel"
  176.     elseif chooseCoin >= 46 and chooseCoin <= 65 then
  177.         coin.type = "dime"
  178.     elseif chooseCoin >= 66 and chooseCoin <= 80 then
  179.         coin.type = "quarter"
  180.     elseif chooseCoin >= 81 and chooseCoin <= 100 then
  181.         coin.type = "rock"
  182.     end
  183.     coin:prepare(coin.type)
  184.     coin:play()
  185.     local chooseLocation = math.random(0, 1)
  186.         coin.y = 400
  187.         coin.x =  -25 + chooseLocation * 1010
  188.         coin:applyLinearImpulse(0.2 - (chooseLocation * 0.4), -math.random(0.50, 3.45) / 10, coin.x, coin.y)
  189.     local nativeRemove = coin.removeSelf
  190.     function coin:removeSelf(...)
  191.         scene:removeEventListener('exitScene', self)
  192.         nativeRemove(self, ...)
  193.     end
  194.     function coin:exitScene(event)
  195.         timer.performWithDelay(1,
  196.             function(...)
  197.                 scene:removeEventListener('exitScene', self)
  198.             end
  199.         )
  200.        
  201.     end
  202.     scene:addEventListener('exitScene', coin)
  203.     group:insert(coin)
  204. end
  205.  
  206. local function sceneEnterFrame(self, event)
  207.     if not isPaused then
  208.         self:dispatchEvent(event)
  209.     end
  210. end
  211.  
  212. local function sceneTouch(self, event)
  213.     if not isPaused and event.phase == "ended" then
  214.         self:dispatchEvent{name = "Stop"}
  215.     end
  216. end
  217.  
  218. function scene:enterScene(event)
  219.     physics.start()
  220.     physics.setGravity(0, 9.8)
  221.     scene.view.enterFrame = sceneEnterFrame
  222.     scene.view.touch = sceneTouch
  223.     createCoinsTimer = timer.performWithDelay(500, function() createCoins(self) end, 0) -- Shorten?
  224. end
  225.  
  226. function scene:exitScene(event)
  227.     physics.stop()
  228.     self.view.enterFrame = nil
  229.     self.view.touch = nil
  230.     timer.cancel(createCoinsTimer)
  231.     storyboard.purgeScene("game")
  232. end
  233.  
  234. function scene:destroyScene(event)
  235.     Runtime:removeEventListener('enterFrame', self)
  236.     Runtime:removeEventListener('touch', self)
  237.  
  238. end
  239.  
  240. scene:addEventListener("createScene", scene)
  241. scene:addEventListener("enterScene", scene)
  242. scene:addEventListener("exitScene", scene)
  243. scene:addEventListener("destroyScene", scene)
  244. return scene
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement