Casa > E > Eu Quero Gerar Um Labirinto Teta Ou Circular. Como Posso Gerá-Lo Porque Há Muitos Exemplos Para Outros Labirintos?

Eu quero gerar um labirinto teta ou circular. Como posso gerá-lo porque há muitos exemplos para outros labirintos?

Se você se afastar um pouco e considerar o que é um labirinto, você pode ver que ele'é apenas uma rede tipicamente aplicada a uma grade regular (ou retangular). Cada célula tem um ou mais vizinhos, e são criadas passagens entre esses vizinhos para formar o labirinto. Suficientemente simples.

main-qimg-9310717ccba450d3006549e85cc2710d.webp

>>br> Isto funciona para qualquer configuração de células. Você pode torná-las hexagonais, triangulares ou qualquer outra coisa, e desde que você possa descrever quais células são adjacentes a quais outras células, você pode continuar a juntar células adjacentes através de passagens.

main-qimg-e71f62403f424fc06187f5c1307da172.webp

>br> Até agora, tudo bem!

> Isto nos leva às grades polares. Estes são círculos concêntricos, com "raios" irradiando para fora da origem.

main-qimg-f26a46dbfcea15496e8ff4cc59794086.webp


Os raios dividem os círculos concêntricos em... adivinhou! --células, cada uma das quais tem vizinhos no sentido horário, anti-horário, para fora e para dentro. Como você conhece os vizinhos, você pode unir esses vizinhos com passagens para formar um labirinto!

As grades polares são um pouco especiais, no entanto, porque sem qualquer outra modificação, as células ficam cada vez mais largas à medida que você se afasta mais da origem. A fim de manter as células aproximadamente do mesmo tamanho em todo o labirinto, você precisa introduzir algumas subdivisões adaptativas, dividindo as células quando elas ficam muito largas. Isso complica um pouco a grade, já que algumas células podem ter dois vizinhos (ou mais!) na direção externa, e outras terão apenas um.

Mas isso's essencialmente isso. Se você conhece um algoritmo de geração de labirinto (como Growing Tree, Prim's, Kruskal's, Recursive Backtracker, etc.) então você pode fazer um labirinto em uma grade polar. A parte difícil é realmente apenas descobrir a melhor maneira de representar a grade polar.

main-qimg-61604ba3ae323eb71c18dbce982339e1.webp

>br>(A propósito, lá's um capítulo inteiro sobre este tópico no meu livro, "Labirintos para Programadores" -- https://pragprog.com/book/jbmaze/mazes-for-programmers.)

boa sorte! Os labirintos são muito divertidos.

De Evelin Stringfield

Porque é que os Estados Unidos não têm uma rede de transporte de água a nível nacional como a sua rede eléctrica? :: Como obter software para edição de vídeos do YouTube