Quando o código é executado, entro no jogo e consigo me movimentar para baixo, esquerda e direita normalmente, mas ao tentar ir pra cima, sou jogado de volta ao terminal e a seguinte mensagem de erro aparece:
- [string "-- title: Fuga das Sombras..."]: 18: attempt to index a nil value (local 'ponto') stack traceback:
- [string "-- title: Fuga das Sombras..."]:18: in function 'temColisaoComMapa'
- [string "-- title: Fuga das Sombras..."]: 37: in function 'atualiza'
- [string "-- title: Fuga das Sombras..."]: 87: in function 'TIC'
segue o código:
-- title: Fuga das Sombras
-- author: Jeferson Silva
-- desc: RPG de acao 2d
-- script: lua
jogador = {
sprite = 32,
x = 120,
y = 68
}
Constantes = {
LARGURA_DA_TELA = 30,
ALTURA_DA_TELA = 17
}
function temColisaoComMapa(ponto)
blocoId = mget(ponto.x / 8, ponto.y / 8)
if blocoId >= 128 then
return true
else
return false
end
end
function atualiza()
-- cima
if btn(0) then
superioresquerdo = {
x = jogador.x - 8,
y = jogador.y - 8 - 1
}
superiorDireito = {
x = jogador.x + 8,
y = jogador.y - 8 - 1
}
if temColisaoComMapa(superiorEsquerdo) or
temColisaoComMapa(superiorDireito) then
-- colisao!!
else
jogador.y = jogador.y -1
end
end
-- baixo
if btn(1) then
jogador.y = jogador.y + 1
end
--esquerda
if btn(2) then
jogador.x = jogador.x - 1
end
--direita
if btn(3) then
jogador.x = jogador.x + 1
end
end
function desenhaMapa()
map(
0, -- posicao x no mapa
0, -- posicao y no mapa
Constantes.LARGURA_DA_TELA, -- quantos blocos desenhar x
Constantes.ALTURA_DA_TELA, -- quantos blocos desenhar y
0, -- em qual ponto colocar o x
0) -- em qual ponto colocar o y
end
function desenhaJogador()
spr(jogador.sprite,
jogador.x - 8,
jogador.y - 8,
0, -- cor de fundo
1, -- escala
0, -- espelhar
0, -- rotacionar
2, -- quantos blocos para direita
2) -- quantos blocos para baixo
end
function desenha()
cls()
desenhaMapa()
desenhaJogador()
end
function TIC()
atualiza()
desenha()
end