I’m using director class, and what im trying to do is after time is up to take it to next screen (game over screen) and there to put option to restart game. there is no level 2.Or if times up to stop my game and give option to restart, like button would pop up when time is up.
this is my game:
[code]_W = display.contentWidth
_H = display.contentHeight
module ( … , package.seeall )
function new( )
local localGroup = display.newGroup ( )
local time_remain = 24
time_up = false
ready = false
local time_remain = 24
– Display countdown text
local countdowntxt = display.newText( time_remain, 300, 0, native.systemFont, 16 )
countdowntxt:setTextColor ( 255, 0, 0 )
–Add funtion for countdown
local function countdown (e)
if (time_remain == 24) then
ready = true
end
time_remain =time_remain -1
print(time_remain)
countdowntxt.text = time_remain
if(time_remain == 0) then
time_up = true
end
end
gametimer = timer.performWithDelay ( 1000, countdown, 24 )
–> Add physics engine, start up the engine, and apply gravity
local physics = require (“physics”)
physics.start( )
– Set gravity to act “down” (ie, toward the bottom of the device)
physics.setGravity(0, 9.8)
– physics.setDrawMode(“hybrid”)
–> Add background image
local background = display.newImage(“grid_basketball.jpg”)
localGroup:insert(background)
–> Add ball to stage and position
local ball = display.newImage(“Basketball.png”)
ball.x = display.contentWidth/2
–> Turn ball into physics body
physics.addBody(ball, { bounce = 0.5, radius = 40, friction = 1.0 } )
localGroup:insert(ball)
–> Add ball2
local ball2 = display.newImage(“Basketball.png”)
ball2.x = ball.x - 105
physics.addBody(ball2, {bounce = 0.5, radius = 40, friction = 1.0 } )
localGroup:insert(ball2)
–> Add ball3
local ball3 = display.newImage(“Basketball.png”)
ball3.x = ball.x + 105
physics.addBody (ball3, {bounce = 0.5, radius = 40, friction = 1.0 } )
localGroup:insert(ball3)
system.activate( “multitouch” )
– Define wall graphics (rectangles)
local leftWall = display.newRect(0, 0, 0.1, display.contentHeight )
local rightWall = display.newRect(display.contentWidth, 0, 0.1, display.contentHeight)
local ceiling = display.newRect(0, 0, display.contentWidth, 0.1 )
– Turn wall graphics into physical bodies
physics.addBody( leftWall, “static”, { bounce = 0.1 } )
physics.addBody( rightWall, “static”, { bounce = 0.1 } )
physics.addBody(ceiling, “static”, { bounce = 0.1 } )
–> Add floor image and position
local floor = display.newImage(“floor.png”)
floor.y = display.contentHeight - floor.contentHeight/2
–> Turn floor into physics body
physics.addBody(floor, “static”, { bounce = 0.2, friction = 1.0 } )
localGroup:insert(floor)
– Define our touch event listner
function moveBall(event)
local ball = event.target
ball:applyLinearImpulse( 0, -0.3, event.x, event.y )
end
– Add the listener to our ball
ball:addEventListener(“touch”, moveBall)
ball2:addEventListener(“touch”, moveBall)
ball3:addEventListener(“touch”, moveBall)
–Saving/Loading Stuff
local ego = require “ego”
local saveFile = ego.saveFile
local loadFile = ego.loadFile
– Create score text
local score = 0
local scoreText = display.newText(score, 35, 0, native.systemFont, 16)
scoreText:setTextColor( 255, 255, 255 )
scoreText.text = "score: "…score
– Function to add to score and update scoreText
local function addToScore()
score = score + 1
scoreText.text = "score: "…score
end
–Load highscore value from file. (It will initally be a string.)
highscore = loadFile (“highscore.txt”)
–If the file is empty (this means it is the first time you’ve run the app) save it as 0
local function checkForFile ()
if highscore == “empty” then
highscore = 0
saveFile(“highscore.txt”, highscore)
end
end
checkForFile()
–Print the current highscore
print ("Highscore is: ", highscore)
local highscoreText = display.newText(highscore, 200, 0, native.systemFont, 16)
highscoreText:setTextColor( 255, 255, 0 )
highscoreText.text = "Highscore is: "…highscore
–When the app is quit (or simulator refreshed) save the new highscore
–(If score > highscore the data will not be changed)
local function onSystemEvent ()
if score > tonumber(highscore) then --We use tonumber as highscore is a string when loaded
saveFile(“highscore.txt”, score)
local highscoreText = display.newText(highscore, 200, 0, native.systemFont, 16)
highscoreText:setTextColor( 255, 255, 0)
highscoreText.text = "Highscore is: "…highscore
end
end
Runtime:addEventListener( “system”, onSystemEvent )
– Add listeners to balls so it will add to score when they are touch
ball:addEventListener(“touch”, addToScore)
ball2:addEventListener(“touch”, addToScore)
ball3:addEventListener(“touch”, addToScore)
–Function to change scene
function changeScene(e)
if (e.phase == “ended” ) then
director:changeScene(e.target.scene)
end
end
countdown:addEventListener (time_remain== 0 , changeScene)
return localGroup
end
[/code]
and this is game over screen
[code]module ( … , package.seeall )
function new( )
local localGroup = display.newGroup ( )
local background = display.newImage( “game-over.jpg” )
–Add button to play again
local play_again = display.newImage( “restartbutton.png”, 50, 240)
play_again.scene = “game”
function changeScene(e)
if ( e.phase == “ended”) then
director:changeScene(e.target.scene)
end
end
localGroup:insert(background)
localGroup:insert(play_again)
play_again:addEventListener ( “touch” , changeScene )
return localGroup
end
[/code]Can screen transition be done without touch event? If not how can i stop my game after game time is up and make button to appear after game is done to restart it and i dont want this button to be displayed on my screen while game is running? [import]uid: 189039 topic_id: 32569 reply_id: 129479[/import]