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
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
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
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?
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.