1
resposta

me responde por favor

quando eu dou run e vou testar a colisao no bloco da direita na parte esquerda nao vai mais na direita vai e no bloco da esquerda a parte esquerda nao vai e a parte direita vai

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

}
constantes = {
 LARGURA_DA_TELA = 240,
 ALTURA_DA_TELA = 138
}
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.x - 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, -- 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

eu nao consegui encontrar nenhum erro se vcs puderem me falar oq esta de errado por favor me respondem por favor ou me fale uma jeito pra funcionar

1 resposta

Olá Patricia, peço desculpas pela resposta muito demorada.

O único problema nesse código foi um valor criado incorretamente, dentro do atualiza() o superiorDireito foi criado com o valor de jogador.x no lugar de jogador.y:

superiorDireito = {
  x = jogador.x + 8,
  y = jogador.x - 8 - 1 <-- aqui o correto é jogador.y
}

Corrigindo isso o seu código deve funcionar.