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

Pergunta !!!

Alguem sabe me responder porque o guilherme validou a posição no mapa copiado também ?

direita = [posicao[0] , posicao[1] + 1 ]
  if  posicaoValida?(mapa , direita) && posicaoValida?(novoMapa , direita)

    posicoes << direita

  end
3 respostas

Oi Matheus, como o mapa está sempre passando por mudanças, do seu personagem ou dos fantasmas, é possível que em algum momento, possa haver um conflito entre as possibilidades de movimento nos dois mapas. Por isso a validação. Entende?

Mas se um mapa se espelha no outro só retirando os fantasmas que tipo de conflito poderia dar?

solução!

Vamos ver o processo num todo. O que acontece a cada jogada? Há um mapeamento de todas as possibilidades de jogadas tanto do Heroi quanto do fantasma.

A estrategia de movimentos se baseia em dois mapas, um que mostra as posições atuais e outro onde serão colocados os personagens a cada movimento. E ai que surge o perigo. Como você garante que as possibilidades de jogadas do personagem no mapa atual, continua válido no novo mapa? Eis o que pode acontecer sem essa validação.

Suponha que dois fantasmas estão próximos um do outro. Os dois podem mover um contra o outro, fazendo com que apenas um fantasma acabe sendo posto no novo mapa. O que pode acontecer também é que os dois fantasmas passem um pelo outro, trocando de posição, o que algumas vezes por não fazer sentido.

O problema é que a cada movimento no mapa, uma posição pode se tornar inválida para um dos jogadores. Este é o conflito que é evitado fazendo esta validação.

Os mapas sim, são reflexos um do outro, mas não são o mesmo mapa em memória. São basicamente dois objetos e você está mapeando coisas de um para o outro.

Consegui esclarecer agora? Espero que sim. Bons estudos.