Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

eu não consigo achar o erro

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
end
function 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)
end
function atualizaIntro()
    if btn(4) then
        sfx (constantes.sfxInicio,
            72,
            32,
            0,
            8,
            0)
        tela = tela.jogo
    end
end
function TIC()
    tela.atualiza()
    tela.desenha()
end
tela = {
    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
1 resposta
solução!

eu tentei trocar as constantes da tela para que eu conseguisse diferenciar melhor e assim eu consegui fazer funcionar