I am trying to use values in a table to dictate which scene is being shown in the game. I defined the table 'S' at the top of the code but a piece at the bottom referring to it comes back nil. What's the problem?
function _init()
cls()
music(0)
s={}
s.menu=1
s.start=0
s.t1=0
s.one=0
map_setup()
make_player()
end |
if s.menu>0 then
screen_menu() end
if s.start>0 then
screen_start() end
if s.t1>0 then
screen_t1() end
if s.one>0 then
screen_scene1()
end |
It's hard to tell from just what you've shown. Here's some ideas just in case any of them help:
- Check to make sure you didn't accidentally reused the name "S" somewhere else
- Check which line number the error is indicating and see which statement that is, then look to see if you deleted the relevant value later.
- Try commenting out portions of the bottom code to see if only some of it gives errors
In general, I would advise posting the actual error message you get when asking for help with errors.
there are 3(4) special functions.
_init() - will be run onced, after the code is loaded and all commands outsides functions are executed
_update() / _update60() - this function will be called every 1/30 or 1/60 second. you should place your gamelogik here
_draw() - this function will be called to draw a screen. Important: It is not definied how often - it could be every 1/60s, 1/30s or even 1/15s. you should not place any gamelogik here.
by the way - you seems to want to create a "gamestate" - show menu, play game, endscreen and so on. I use this dispatcher:
function _init()
start="mainmenu"
end
function _update()
-- for the draw-routine, state could be changed!
oldstate=state
-- report an error, if the state doesn't exist
assert(update[state]!=nil,"unknwon state:"..state)
-- call the state-dependend update-function
-- remember you can store functions in tables!
update[state]()
end
function _draw()
if (draw[oldstate]!=nil) draw[oldstate]()
end
-- initalize the table
update, draw = {},{}
-- state "mainmenu"
function update.mainmenu()
-- do menu stuff, at some point change the state
state="play"
end
function draw.mainmenu()
-- draw the menu
end
-- state "play"
function update.play()
-- playing and finally
state="endscreen"
end
function draw.play()
-- drawing
end
-- state "endscreen"
function update.endscreen()
-- hiscore and so on
state="reset_to_menu"
end
function draw.endscreen()
-- drawing
end
-- state "reset to menu"
function update.reset_to_menu()
-- do some reset
state="menu"
end
-- a draw.reset_to_menu is not required
|
[Please log in to post a comment]



