Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- display.setStatusBar(display.HiddenStatusBar)
- local storyboard = require "storyboard"
- local scene = storyboard.newScene()
- require("physics")
- require("sprite")
- function scene:createScene(event)
- local group = self.view
- physics.start()
- local background = display.newImage("visuals/game_background.png", 0, 0)
- ground = display.newImage("visuals/game_ground.png", 0, 590)
- physics.addBody(ground, "static")
- local characterSheet = sprite.newSpriteSheet("visuals/game_character.png", 100, 100)
- local characterSet = sprite.newSpriteSet(characterSheet, 1, 8)
- sprite.add(characterSet, "charsl", 1, 1, 60000, 0)
- sprite.add(characterSet, "charml", 2, 3, 150, 0)
- sprite.add(characterSet, "charsr", 5, 1, 60000, 0)
- sprite.add(characterSet, "charmr", 6, 3, 150, 0)
- character = sprite.newSprite(characterSet)
- physics.addBody(character, "static")
- character.x = display.contentWidth / 2
- character.y = 540
- local buttonSheet = sprite.newSpriteSheet("visuals/game_buttons.png", 75, 75)
- local buttonSet = sprite.newSpriteSet(buttonSheet, 1, 6)
- sprite.add(buttonSet, "leftu", 1, 1, 60000, 0)
- sprite.add(buttonSet, "leftt", 2, 1, 60000, 0)
- sprite.add(buttonSet, "rightu", 3, 1, 60000, 0)
- sprite.add(buttonSet, "rightt", 4, 1, 60000, 0)
- sprite.add(buttonSet, "pauseu", 5, 1, 60000, 0)
- sprite.add(buttonSet, "pauset", 6, 1, 60000, 0)
- buttonLeft = sprite.newSprite(buttonSet)
- buttonLeft:prepare("leftu")
- buttonLeft:play("leftu")
- buttonLeft.x = 57.5
- buttonLeft.y = 582.5
- buttonRight = sprite.newSprite(buttonSet)
- buttonRight:prepare("rightu")
- buttonRight:play("rightu")
- buttonRight.x = 902.5
- buttonRight.y = 582.5
- buttonPause = sprite.newSprite(buttonSet)
- buttonPause:prepare("pauseu")
- buttonPause:play("pauseu")
- buttonPause.x = 902.5
- buttonPause.y = 57.5
- storyboard.money = 0
- textMoney = display.newText(string.format("$%.02f", storyboard.money), 0, 20, native.systemFont, 75)
- textMoney:setReferencePoint(display.CenterReferencePoint)
- textMoney.x = display.contentWidth / 2
- textMoney:setTextColor(0, 0, 0)
- isFirstStart = true
- group:insert(background)
- group:insert(ground)
- group:insert(character)
- group:insert(buttonLeft)
- group:insert(buttonRight)
- group:insert(buttonPause)
- group:insert(textMoney)
- end
- function scene:enterScene(event)
- local group = self.view
- function collisionGround(event)
- event.other:removeSelf()
- end
- function collisionCharacter(event)
- if (event.other.type == "penny") then
- storyboard.money = storyboard.money + 0.01
- elseif (event.other.type == "nickel") then
- storyboard.money = storyboard.money + 0.05
- elseif (event.other.type == "dime") then
- storyboard.money = storyboard.money + 0.10
- elseif (event.other.type == "quarter") then
- storyboard.money = storyboard.money + 0.25
- elseif (event.other.type == "rock") then
- storyboard.gotoScene("gameover", "slideLeft", 1000)
- end
- textMoney.text = string.format("$%.02f", storyboard.money)
- event.other:removeSelf()
- end
- local motion = 0
- function moveLeft(event)
- motion = -9
- buttonLeft:prepare("leftt")
- buttonLeft:play("leftt")
- character:prepare("charml")
- character:play("charml")
- character.type = "left"
- end
- function moveRight(event)
- motion = 9
- buttonRight:prepare("rightt")
- buttonRight:play("rightt")
- character:prepare("charmr")
- character:play("charmr")
- character.type = "right"
- end
- function moveCharacter(event)
- character.x = character.x + motion
- if character.x < 50 then character.x = 50
- elseif character.x > 910 then character.x = 910 end
- buttonLeft:toFront()
- buttonRight:toFront()
- end
- function stopCharacter(event)
- if event.phase == "ended" then
- motion = 0
- buttonLeft:prepare("leftu")
- buttonLeft:play("leftu")
- buttonRight:prepare("rightu")
- buttonRight:play("rightu")
- if (character.type == "left") then
- character:prepare("charsl")
- character:play("charsl")
- elseif (character.type == "right") then
- character:prepare("charsr")
- character:play("charsr")
- end
- end
- end
- local isPaused = false
- function pauseGame()
- isPaused = not isPaused
- if isPaused then
- buttonPause:prepare("pauset")
- buttonPause:play("pauset")
- physics.pause()
- buttonLeft:removeEventListener("touch", moveLeft)
- buttonRight:removeEventListener("touch", moveRight)
- Runtime:removeEventListener("enterFrame", moveCharacter)
- Runtime:removeEventListener("touch", stopCharacter)
- timer.pause(createCoinsTimer)
- else
- buttonPause:prepare("pauseu")
- buttonPause:play("pauseu")
- physics.start()
- buttonLeft:addEventListener("touch", moveLeft)
- buttonRight:addEventListener("touch", moveRight)
- Runtime:addEventListener("enterFrame", moveCharacter)
- Runtime:addEventListener("touch", stopCharacter)
- timer.resume(createCoinsTimer)
- end
- end
- function createCoins()
- local coinSheet = sprite.newSpriteSheet("visuals/game_coins.png", 50, 50)
- local coinSet = sprite.newSpriteSet(coinSheet, 1, 25)
- sprite.add(coinSet, "penny", 1, 5, 250, 0)
- sprite.add(coinSet, "nickel", 6, 5, 250, 0)
- sprite.add(coinSet, "dime", 11, 5, 250, 0)
- sprite.add(coinSet, "quarter", 16, 5, 250, 0)
- sprite.add(coinSet, "rock", 21, 5, 250, 0)
- local coin = sprite.newSprite(coinSet)
- physics.addBody(coin, "dynamic")
- coin.isSensor = true
- coin.isFixedRotation = true
- local chooseCoin = math.random(1, 100)
- if chooseCoin >= 1 and chooseCoin <= 25 then
- coin.type = "penny"
- elseif chooseCoin >= 26 and chooseCoin <= 45 then
- coin.type = "nickel"
- elseif chooseCoin >= 46 and chooseCoin <= 65 then
- coin.type = "dime"
- elseif chooseCoin >= 66 and chooseCoin <= 80 then
- coin.type = "quarter"
- elseif chooseCoin >= 81 and chooseCoin <= 100 then
- coin.type = "rock"
- end
- coin:prepare(coin.type)
- coin:play()
- local chooseLocation = math.random(0, 1)
- coin.y = 400
- coin.x = -25 + chooseLocation * 1010
- coin:applyLinearImpulse(0.2 - (chooseLocation * 0.4), -math.random(0.50, 3.45) / 10, coin.x, coin.y)
- function coin.exitScene(coin, event)
- timer.performWithDelay(1,
- function(...)
- self:removeEventListener('exitScene', coin)
- end
- )
- display.remove(coin)
- end
- self:addEventListener('exitScene', coin)
- group:insert(coin)
- end
- storyboard.money = 0
- ground:addEventListener("collision", collisionGround)
- character:addEventListener("collision", collisionCharacter)
- buttonLeft:addEventListener("touch", moveLeft)
- buttonRight:addEventListener("touch", moveRight)
- Runtime:addEventListener("enterFrame", moveCharacter)
- Runtime:addEventListener("touch", stopCharacter)
- buttonPause:addEventListener("tap", pauseGame)
- if isFirstStart then
- physics.setGravity(0, 9.8)
- createCoinsTimer = timer.performWithDelay(500, createCoins, 0)
- else
- physics.resume()
- timer.resume(createCoinsTimer)
- end
- end
- function scene:exitScene(event)
- local group = self.view
- physics.pause()
- ground:removeEventListener("collision", collisionGround)
- character:removeEventListener("collision", collisionCharacter)
- buttonLeft:removeEventListener("touch", moveLeft)
- buttonRight:removeEventListener("touch", moveRight)
- Runtime:removeEventListener("enterFrame", moveCharacter)
- Runtime:removeEventListener("touch", stopCharacter)
- buttonPause:removeEventListener("tap", pauseGame)
- timer.pause(createCoinsTimer)
- end
- function scene:destroyScene(event)
- local group = self.view
- physics.stop()
- timer.cancel(createCoinsTimer)
- end
- scene:addEventListener("createScene", scene)
- scene:addEventListener("enterScene", scene)
- scene:addEventListener("exitScene", scene)
- scene:addEventListener("destroyScene", scene)
- return scene
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement