1
resposta

aa chave nao e pega

eu fiz tudo certo e dei run ai quando eu vou pegar a chave eu nao consigo

-- title:  Fuga Das Sombras
-- author: Jeferson Silva
-- desc:   RPG de acao 2D
-- script: lua

jogador = {
 sprite = 260,
    x = 83,
    y = 84,
    corDeFundo = 6,
    quadroDeAnimacao = 1
}

Constantes = {
  LARGURA_DA_TELA = 30,
  ALTURA_DA_TELA = 17,
        VELOCIDADE_ANIMACAO_JOGADOR = 0.1
}

objetos = {}

function temColisaoComMapa(ponto)
 blocoX = ponto.x / 8
 blocoY = ponto.y / 8
 blocoId = mget(blocoX, blocoY)
      return blocoId >= 128
      end

function tentaMoverPara(delta)

          superiorEsquerdo = {
                  x = jogador.x + 43 + delta.deltaX,
                        y = jogador.y - 26 + delta.deltaY
                }
                superiorDireito = {
                  x = jogador.x + 28 + delta.deltaX,
                        y = jogador.y - 26 + delta.deltaY
                }
             inferiorDireito = {
               x = jogador.x + 28 + delta.deltaX,
            y = jogador.y - 11 + delta.deltaY
             }
             inferiorEsquerdo = {
               x = jogador.x + 43 + delta.deltaX,        
            y = jogador.y - 11 + delta.deltaY
          }

                if temColisaoComMapa(superiorEsquerdo) or
                   temColisaoComMapa(superiorDireito) or
                         temColisaoComMapa(inferiorDireito) or
                temColisaoComMapa(inferiorEsquerdo)then

                    -- colisao!!!        
          else

                 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 = {
       {256, 258},
                            {260, 262},
                            {264, 266},
                            {268, 270}
    }

    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

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 + 28,
                        jogador.y - 26,
                     jogador.corDeFundo,
                        1,-- escala
                        0,-- espelhar
                        0,-- rotacionar
                        2,-- quantos blocos para direita
                        2)-- quantos blocos para baixo

  end

function desenhaObjetos()
   for indice, objeto in pairs(objetos) 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 fazColisaoDoJogador(indice)
    table.remove(objetos, indice)
end    

function temColisao(objetoA, objetoB)

  local esquerdoaDeB = objetoB.x - 8
        local direitaDeB = objetoB.x + 7
  local cimaDeB = objetoB.y + 7
  local baixoDeB = objetoB.y - 8

  local direitaDeA = objetoA.x +7
        local esquerdaDeA = objetoA.x - 8 
        local baixoDeA =  objetoA.y + 7
        local cimaDeA =  objetoA.y - 8

  if esquerdoaDeB > direitaDeA or
           direitaDeB < esquerdaDeA or
           baixoDeA < cimaDeB or
           cimaDeA > baixoDeB then
    return false
   end
            return true
end

function    verificaColisaoComObjetos()
  for indice, objeto in pairs(objetos) do
    if temColisao(jogador, objeto) then
                  fazColisaoDoJogador(indice)
                    end
            end
 end

function TIC()
  atualiza()
        verificaColisaoComObjetos()
  desenha()
end

function criaChave(coluna, linha)
  local chave = {
          sprite = 364,
                x = coluna * 8,
                y = linha * 8,
                corDeFundo = 6
        }
  return chave
end

function inicializa()
  local chave = criaChave(3,3)
  table.insert(objetos, chave)
end

inicializa()
1 resposta
O post foi fechado por inatividade. Para continuar o assunto, recomendamos criar um novo tópico. Bons Estudos!