por alguma razão a sprite da chave não aparece, e não apareceu nenhum código de erro, não sei se a ordem das functions interfere em algo, mas aqui esta.
jogador = {
sprite = 32,
x = 120,
y = 68,
corDeFundo = 0,
quadroDeAnimacao = 1
}
constantes = {
LARGURA_DA_TELA = 240,
ALTURA_DA_TELA = 138,
VELOCIDADE_ANIMACAO_JOGADOR = 0.1
}
-------------------------------------
--acao
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)
superiorEsquerdo = {
x = jogador.x - 8 + delta.deltaX,
y = jogador.y - 8 + delta.deltaY
}
superiorDireito = {
x = jogador.x + 7 + delta.deltaX,
y = jogador.y - 8 + delta.deltaY
}
inferiorDireito = {
x = jogador.x + 7 + delta.deltaX,
y = jogador.y + 7 + delta.deltaY
}
inferiorEsquerdo = {
x = jogador.x - 8 + delta.deltaX,
y = jogador.y + 7 + delta.deltaY
}
if not (temColisaoComMapa(inferiorDireito) or
temColisaoComMapa(inferiorEsquerdo) or
temColisaoComMapa(superiorDireito) or
temColisaoComMapa(superiorEsquerdo)) then
jogador.quadroDeAnimacao = jogador.quadroDeAnimacao + constantes.VELOCIDADE_ANIMACAO_JOGADOR
if jogador.quadroDeAnimacao >= 3 then
jogador.quadroDeAnimacao = 1
end
jogador.y = jogador.y + delta.deltaY
jogador.x = jogador.x + delta.deltaX
end
end
function atualiza()
AnimacaoJogador = {
{40, 42},
{32, 34},
{44, 46},
{36, 38}
}
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
end
-------------------------------------
--chave
objeto = {}
function criaChave(coluna, linha)
local chave = {
sprite = 64,
x = coluna * 8,
y = linha * 8,
corDeFundo = 0
}
return chave
end
function inicializa()
local chave = criaChave(3,3)
objetos = {}
table.insert(objetos, chave)
end
inicializa()
-------------------------------------
--visual
function desenhaMapa()
map(0,
0,
constantes.LARGURA_DA_TELA,
constantes.ALTURA_DA_TELA,
0,
0)
end
function desenhaJogador()
spr(jogador.sprite,
jogador.x -8,
jogador.y -8,
0,
1,
0,
0,
2,
2)
end
function desenhaObjetos()
for indice, objeto in pairs(objeto) do
spr(objeto.sprite,
objeto.x,
objeto.y,
objeto.corDeFundo,
1,
0,
0,
2,
2)
end
end
function desenha()
cls()
desenhaMapa()
desenhaJogador()
desenhaObjetos()
end
-------------------------------------
function TIC()
atualiza()
desenha()
end