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

Erro e não consigo localizar.

Estou tentanto refatorar a movimentação do jogador. mas não acho o erro. erro:[string "-- title: Fuga das sombras..."]:89: bad argument #1 to 'floor' (number expected, got nil) stack traceback: [C]: in function 'math.floor' [string "-- title: Fuga das sombras..."]:89: in function 'atualiza' [string "-- title: Fuga das sombras..."]:125: in function 'TIC' e o codigo:

-- title:  Fuga das sombras
-- author: Jeferson Silva
-- desc:   short description
-- script: lua

jogador = {
    sprite = 256,
    corDeFundo = 2,
    qDA = 1,
    x = 120-8,
    y = 68-8

}

Constantes = {
    LARGURA_DA_TELA = 240,
    ALTURA_DA_TELA = 138,
    VELOCIDADE_ANIMACAO_JOGADOR = 0.1
}

function temColisaoComMapa(ponto)
    blocoX = ponto.x / 8 
    blocoY = ponto.y / 8
        blocoId = mget(blocoX, blocoY)
        if blocoId >= 128 then
                    return true
        else
                    return false
        end

end

function tentaMoverPara(delta)

            meuDeslocamentoX = delta.deltaX
            meuDeslocamentoY = delta.deltaY

                -- botao pra cima --
            superiorEsquerdo = {
                    x = jogador.x + 1 + meuDeslocamentoX,
                    y = jogador.y - 0 + meuDeslocamentoY
         }
            superiorDireito = {
                    x = jogador.x + 15 + meuDeslocamentoX,
                    y = jogador.y - 0 + meuDeslocamentoY
            }
                    -- fecha --
                    -- botao pra baixo --
            inferiorDireito = {
                x = jogador.x + 1 + meuDeslocamentoX,
                y = jogador.y + 15 + meuDeslocamentoY
            }
            inferiorEsquerdo = {
                x = jogador.x + 15 + meuDeslocamentoX,
                y = jogador.y + 15 + meuDeslocamentoY
            }
            -- fecha ---
                    if temColisaoComMapa(superiorEsquerdo) or
                       temColisaoComMapa(superiorDireito) or
                       temColisaoComMapa(inferiorDireito) or
                       temColisaoComMapa(inferiorEsquerdo) then
                        --colisao!!
                        else
                            jogador.qDA = jogador.qDA + Constantes.VELOCIDADE_ANIMACAO_JOGADOR

                            if jogador.qDA >= 3 then
                            jogador.qDA = 1
                            end
                            jogador.y = jogador.y + meuDeslocamentoY
                            jogador.x = jogador.x + meuDeslocamentoX
                        end
end

function atualiza()

    AnimacaoJogador = {
    {256,258},{260,262},{264,266},{268,270}
    }
    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
            quadros = AnimacaoJogador[tecla + 1]
            quadro = math.floor(jogador.quadroDeAnimacao)
            jogador.sprite = quadros[quadro]
            tentaMoverPara(Direcao[tecla+1])
        end
end

function desenhaMapa()
    map(0,    -- posicao x no mapa
                    0,    -- posicao y no mapa
                    Constantes.LARGURA_DA_TELA,
                    Constantes.ALTURA_DA_TELA,
                    0,    -- em qual ponto colocar o x
                    0)    --    em qual ponto colocar o y
end

function desenhaJogador()
    spr(jogador.sprite, 
                    jogador.x, 
                    jogador.y, 
                    jogador.corDeFundo,
                    1, -- escala
                    0, -- espelhar
                    0, -- rotacionar
                    2, -- quantos blocos pra direita
                    2) -- quantos blocos pra baixo
end
end
function desenha()
    cls() --limpa tela
    desenhaMapa()
    desenhaJogador()


end

function TIC()
    atualiza()
    desenha()
end
1 resposta
solução!

Desculpe ja consegui resolver0.