0
respostas

A chave não aparece

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