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