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
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.