Beta Trial #1

--[[
--Tilt Island
--By: Austin W./CodeaNoob 
-- Major contributions by Dave1707
--Try this code and leave suggestions in the Comments
--Triple tap 3 fingers to bring up exit button

supportedOrientations(LANDSCAPE_ANY)
displayMode(FULLSCREEN_NO_BUTTONS)

function setup()
    parameter.watch("Lives")
    Lives = 3
    GAME_PLAYING = 0
    GAME_DEAD = 1
    GAME_PAUSED = 2
    state = GAME_PAUSED
    objectTable = {}
    lastGenerated = ElapsedTime
    interval = .16
    num = 5  
    table.insert(objectTable,Objects(math.random(1,WIDTH-1),math.random(1,4),num))
    pColor = color(0, 0, 0, 255)
    paddle = Paddle(WIDTH/2,5,80,15,pColor)
    highscore = readLocalData("highscore")

    if not highscore then
        highscore = 0
    end
end

function draw()
    spriteMode(CENTER)
    sprite("SpaceCute:Background",WIDTH/2,HEIGHT/2,WIDTH,HEIGHT)
    pushStyle()    
    fill(0, 0, 0, 255)
    textMode(CENTER)
    textAlign(CENTER)
    font("Copperplate-Light")
    fontSize(30)
    text("Tap Twice To Begin.", 500,250)
    text("Version 1.0.0",500,750)
    text("Made By: CodeaNoob",500,730)
    fontSize(50)
    text("Tilt Island!", 500, 550)
    fontSize(40)
    text("Tilt the device to dodge the falling objects!", 500, 525)
    if state == GAME_PLAYING then
        spriteMode(CENTER)
        sprite("SpaceCute:Background",WIDTH/2,HEIGHT/2,WIDTH,HEIGHT)
        pushStyle()
        randomObjectGenerate()   
        popStyle()       
        score = ElapsedTime 
        fill(255)
        font("Futura-CondensedExtraBold")
        fontSize(30)
        textMode(CORNER)
        score = ElapsedTime - start
        fill(255, 255, 255, 255)
        text("Score: "..string.format("%.1f",score),10,HEIGHT-50)
        text("Lives: "..Lives,10,690)
    
    end
                
    if state==GAME_OVER then
        fill(255)
        text(" Your Previous Score: "..string.format("%.1f",score),WIDTH/2,400)
        showHighScore()
        end
        drawPaddle()
  end
function randomObjectGenerate()
    for k,v in pairs(objectTable) do 
        v:draw()    
    end
    if ElapsedTime - lastGenerated > interval then
        lastGenerated = ElapsedTime
        num = num + 1
        table.insert(objectTable,Objects(math.random(1,WIDTH-1),math.random(1,4),num))  
    end
    for k,v in pairs(objectTable) do 
        if paddle:collide(v.a.x,v.a.y) and v.a.info.id > 0 then
            sound(SOUND_HIT, 46295)
            v.a.info.id=0
            Lives=Lives-1
            if Lives<1 then
                state=GAME_OVER
            end
        end
        if v.a.y < 0 or (v.a.x > WIDTH or v.a.x< 0) or v.a.info.id == 0 then
            table.remove(objectTable,k)
            v.a:destroy()
            v.a = nil
            v=nil
       end
    end
end

function checkGrav()
    if pos.x >= 0 and pos.x <= WIDTH - size.x then
        if Gravity.x > 0 then
            pos.x = pos.x + (20 * Gravity.x)
        end  
        if Gravity.x < 0 then
            pos.x = pos.x - (-20 * Gravity.x)
        end    
    end 
    if pos.x < 0 then
        pos.x = 0
    end
    if pos.x > WIDTH - size.x then
        pos.x = WIDTH - size.x
    end
end

function drawPaddle()
    paddle:draw()
end

function touched(touch)
    if touch.tapCount == 2 and touch.state == ENDED then
        state = GAME_PLAYING
        if touch.tapCount == 2 and touch.state == ENDED then
            start = ElapsedTime
            Lives=3
            
        end
       
    end
    
end

--The Paddle Tab

Paddle = class()

function Paddle:init(posx,posy,pWidth,pHeight,pColor)
    self.pWidth = pWidth
    self.pHeight = pHeight
    self.posx = posx
    self.posy = posy
    pos = vec2(posx,posy)
    size = vec2(pWidth,pHeight)
    self.pColor = pColor
end

function Paddle:draw()
    checkGrav()
    fill(pColor)   
    rect(pos.x,pos.y,self.pWidth,self.pHeight)
end


function Paddle:collide(x,y)
    if x>pos.x and x 0 then
            pos.x = pos.x + (20 * Gravity.x)
end


--This Function checks the Gravity
function checkGrav()
    if pos.x >= 0 and pos.x <= WIDTH - size.x then
        if Gravity.x > 0 then
            pos.x = pos.x + (20 * Gravity.x)
        end  
        if Gravity.x < 0 then
            pos.x = pos.x - (-20 * Gravity.x)
        end    
    end 
    if pos.x < 0 then
        pos.x = 0
    end
    if pos.x > WIDTH - size.x then
        pos.x = WIDTH - size.x
    end
end

--The Object Tab
Objects = class()

function Objects:init(x,cat,id)
    self.a = physics.body(CIRCLE,20)
    self.a.x = x
    self.a.y = HEIGHT
    self.a.gravityScale = 1
    self.a.restitution = 0.0
    self.a.interpolate = true
    self.asleepingAllowed = true
    self.flag = true
    self.category = cat
    self.a.info = {}
    self.a.info.id = id
end

function Objects:draw()
    pushMatrix()
    translate(self.a.x, self.a.y)
    if self.category == 1 then
        sprite("Planet Cute:Rock",0,0,50,88)
    elseif self.category == 2 then
        sprite("Small World:Rock",0,0,50,51)
    elseif self.category == 3 then
        sprite("Planet Cute:Brown Block",0,0,50,80)
    elseif self.category == 4 then
        sprite("Planet Cute:Plain Block",0,0,50,85)         
    end
    popMatrix()
end  
 
function Objects:touched(touch)
end



-- find this if statement in the draw function.

 



-- add this function anywhere in your code





-- find this if statement in the draw function.

  




-- add this function anywhere in your code

function showHighScore()
    pushStyle()
    fill(255)
    fontSize(40)
    font("Courier")
    hs=score
    for x=1,10 do
        str=string.format("TiltIsland%02d",x)
        sc=readLocalData(str)
        if sc==nil then
            saveLocalData(str,0)
            if hs>0 then
                saveLocalData(str,hs)
                hs=0
            end
        elseif hs==tonumber(sc) then
                break
        elseif hs>tonumber(sc) then
                saveLocalData(str,hs)
                hs=tonumber(sc)
        end
    end    
    for x=1,10 do
        str=string.format("TiltIsland%02d",x)
        sc=readLocalData(str) 
        str=string.format("%2d) %5.1f",x,sc)
        text(str,WIDTH-150,434-x*40)
    end
    popStyle()
end
--]]

```

I’ve made changes to the code.

Can anyone tell me y its just a black screen?

Change the Paddle:collide(x,y) function to what’s below. Also remove the beginning–[[ and ending --]] from the start and end of the code. If you didn’t, then the whole game is commented out. You might want to change Lives=3 to Lives=10 in setup() and touched() to make the game last longer. After making those changes, the game worked.


function Paddle:collide(x,y)
    if x>pos.x and x<pos.x+self.pWidth and y>self.posy and y<self.posy+self.pHeight*2 then
        return true
    end
end

. @CodeaNoob There is an error in the Paddle:collide function. Change the 1st if statement to look like this, I think. Also, you’re missing the checkGrav() function.


function Paddle:collide(x,y)
    if x>pos.x and x<self.posy and y==0 and pos.x <= WIDTH - size.x then
        if Gravity.x > 0 then
            pos.x = pos.x + (20 * Gravity.x)

(There were some issues with the code formatting which now seem to have been sorted out. In order to keep the focus of the discussion as it was originally intended, I have “deleted” the posts that were trying to sort out the formatting. I hope that this is acceptable to @CodeaNoob and @Keebo who posted them. Note that “deleted” really just means “removed from general view”. If you would like them reinstated then that can be easily done.)