Advertisement
alestane

Untitled

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