aparece isso para mim
>[string "--...."]:318: attempt to 
index a nil value (global 'tela')
stack traceback:
    [string "--...."]:318: in function 
'TIC'
só que eu não consigo entender onde o código está errado, ja peguei o projeto completo do professor para poder comprar e mesmo assim não consegui achar nada.
segue algumas partes do código
function atualizaOJogo()
    local animacaoJogador = {
        {256, 258},
        {260, 262},
        {264, 266},
        {268, 270}
    }
    local direcao = {
        {deltaX = 0, deltaY = -1},
        {deltaX = 0, deltaY = 1},
        {deltaX = -1, deltaY = 0},
        {deltaX = 1, deltaY = 0}
    }
    for tecla = 0,3 do
        if btn(tecla) then
            local quadros = animacaoJogador[tecla + 1]
            local quadro = math.floor(jogador.quadroDeAnimacao)
            jogador.sprite = quadros[quadro]
            tentaMoverPara(jogador, direcao[tecla+1])
        end
    end
    verificaColisaoObj(jogador, {x = jogador.x, y = jogador.y})
    for indice, objeto in pairs(objetos) do
      if objeto.tipo == constantes.inimigo then
          atualizaInimigo(objeto)
      end
   end
endfunction desenhaIntro()
    cls()
    spr(constantes.sprTitulo,
        80,
        12,
        8,
        1,
        0,
        0,
        constantes.sprTituloLargura,
        constantes.sprTituloAltura)
    spr(constantes.sprAlura,
        94,
        92,
        8,
        1,
        0,
        0,
        constantes.sprAluraLargura,
        constantes.sprAluraAltura)
    print("www.alura.com.br", 78, 122, 12)
endfunction atualizaIntro()
    if btn(4) then
        sfx (constantes.sfxInicio,
            72,
            32,
            0,
            8,
            0)
        tela = tela.jogo
    end
endfunction TIC()
    tela.atualiza()
    tela.desenha()
endtela = {
    inicio = {
        atualiza = atualizaIntro,
        desenha = desenhaIntro
    },
    jogo = {
        atualiza = atualizaOJogo,
        desenha = desenhaOJogo
    }
}function inicializa()
   objetos = {}
    local chave = criaChave (3, 3)
    table.insert(objetos, chave)
    local porta = criaPorta (16, 7)
    table.insert(objetos, porta)
   local inimigo = criaInimigo (22, 12)
   table.insert(objetos, inimigo)
   jogador = {
       tipo = constantes.jogador,
        sprite = 260,
        x = 110,
        y = 68,
        corDeFundo = 2,
        quadroDeAnimacao = 1,
        chaves = 0
    }
    tela = tela.inicio
end