Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Erro e não consigo localizar

Olá! Estou tentando fazer a refatoração do codigo mas quando coloco os 4 pontos no if btn(0) aparece erro.

jogador = {
sprite = 32,
x = 120,
y = 68

}
constantes = {
 LARGURA_DA_TELA = 240,
 ALTURA_DA_TELA = 138
}
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 atualiza()



-- cima
if btn(0) then
meuDeslocamentoY = 1
superiorEsquerdo = {
  x = jogador.x - 8,
  y = jogador.y - 8 + meuDeslocamentoY
    }    

superiorDireito = {
  x = jogador.x + 7,
  y = jogador.y - 8 - meuDeslocamentoY
    }
inferiorDireito = {
  x = jogador.x + 7,
  y = jogador.y + 7 + meuDeslocamentoY
    }
inferiorEsquerdo = {
  x = jogador.x - 8,
  y = jogador.y + 7 + meuDeslocamentoY
    }
    if temColisaoComMapa(superiorEsquerdo) or
       temColisaoComMapa(superiorDireito) or
       temColisaoComMapa(inferiorEsquerdo) or
       temColisaoComMapa(inferiorDireito) then   
     --colisao!!
    else
     jogador.y = jogador.y - 1
    end
end                
-- baixo
if btn(1) then
   meuDeslocamentoY = 1
   superiorEsquerdo = {
    x = jogador.x - 8,
    y = jogador.y - 8 - 1
    }
   superiorDireito = {
    x = jogador.x + 8,
    y = jogador.y - 8 - 1
    }
    inferiorDireito = {
        x = jogador.x + 7,
        y = jogador.y + 7
    }
   inferiorEsquerdo = {
        x = jogador.x - 8,
        y = jogador.y + 7 + meuDeslocamento
    }

   if temColisaoComMapa(inferiorDireito) or
        temColisãoComMapa(inferiorEsquerdo) or
        temColisaoComMapa(superiorDireito) or
        temColisaoComMapa(superiorEsquerdo) then
        -- colisao
   else
      jogador.y = jogador.y + 1
   end
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, -- quanto desenhar x
    constantes.ALTURA_DA_TELA, -- quanto 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 esquerda

end
function desenha()
cls()
desenhaMapa()
desenhaJogador()
print(jogador.y)





end

function TIC()
atualiza()
desenha()




end
2 respostas
solução!

Bom dia Malyk, tudo certo?

nessa parte:

   inferiorEsquerdo = {
        x = jogador.x - 8,
        y = jogador.y + 7 + meuDeslocamento
    }

o meuDeslocamento não seria meuDescolamentoY ?

sim. . . muito obrigado!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software