Skocz do zawartości

Generowanie labiryntu


techinf

Recommended Posts

Dołóż heurystykę, która będzie z prawdopodobieństwem szła zgodnie ze wskazówkami zegara, niż w losowe strony. Labirynt generuj na zasadzie otwierania ścian do sąsiedniego punktu

Pro Paint :

0FZPiZQ.png

Pseudokod:

Jeśli (random() < prawdopodobieństwo okręgu && można otworzyć ścianę po okręgu):
   Otwórz ścianę po okręgu
W przeciwnym przypadku
   Otwórz losową ścianę

Żeby wiedzieć która ściana jest na okręgu, wyliczasz sobie na podstawie trygonometrii z podanego kąta i odległości od środka planszy(promień). Dzięki temu uzyskasz punkt, w który powinieneś celować.

Pamiętaj również o dwóch rzeczach przy generowaniu labiryntu:

  • Nie otwieraj dwa razy ściany do tego samego punktu (by nie tworzyć cykli)
  • Pamiętaj o powrotach, gdy natrafisz na miejsce, gdzie nie możesz już otworzyć żadnej ściany. Dzięki temu wszystkie punkty będą miały przynajmniej jedną otwartą ścianę.
Link do komentarza
Udostępnij na innych stronach

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gość
Odpowiedz...

×   Wkleiłeś zawartość bez formatowania.   Usuń formatowanie

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Utwórz nowe...