Advertisement
alestane

Untitled

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