Tworzenie kwadratnego labiryntu - różne podejścia dla różnych wyników

Tworzenie kwadratnego labiryntu - różne podejścia dla różnych wyników
RodionGork
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 47
2

Jakie sposoby generowania labiryntów możecie wymyślić? W słowach wystarczy :)
Bo od sposoba zależy jakie cechy labirynt będzie miał.

Na przykład: najpierw łabirynt składa się z jednej klatki (losowej).
w każdym kroku wybieramy losowo jakąś kłatkę (z obecnego labiryntu) a losowo wybieram jednę z jej sąsiadek -
jeśli ta nie jest jeszcze w łabiryncie, dodajemy ja (oraz usuwamy scianę miedzy nimi).

Kopiuj
 _ _ _ _ _ _ _ _ _ 
|_ _ _  |_ _  |_  |
| |_ _   _  |  _| |
| | |_ _|_ _  | | |
| | |  _ _ _ _ _  |
|  _ _|_ _   _ _  |
|_|_ _  | |_|     |
|_   _   _ _ _| | |
| |_| |_|_ _ _ _| |
|_ _ _ _ _ _ _ _ _|

W ten sposób labirynt ma wiele małych gałężi lub bocznych komorek.

Myślę że można zrobić labirynt z małą liczbą długich gałężi (ale nie widzę jak to zrobić prosto)

FA
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: warszawa
  • Postów: 317
1

Myślę że można zrobić labirynt z małą liczbą długich gałężi (ale nie widzę jak to zrobić prosto)

Jezeli to jest to co chcesz osiagna to. Mozesz zmodtfikowac Twoja metode i dac algorytm który me mniejsze prawdopodbienstwo na slepe zauki i rozwidlenia.

Mozesz tez wygenereowac dlugie sciezki a potem wyciac drwi w odpowiednich miejscach by je poczlaczyc.

Riddle
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 10307
4

Ja podszedłbym do tematu od strony oczekiwań - czego oczekuję od labiryntu? Czy ma mieć ślepe uliczki? Czy ma mieć zapętlone ścieżki? Czy ma mieć więcej rozgałęzień czy prostych dróg, ile ma mieć wejść, czy cel labiryntu ma być w jego środku czy po jego przeciwnych stronach? Sprecyzowałbym to, i zaczął szukać algorytmu pod moje konkretne oczekiwania.

RodionGork
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 47
0

czego oczekuję od labiryntu?

Bardzo dobre pytanie! 😅

Myślę że chcę właściwie nie labiryntu ale methody - najliepiej takiej, która zawiera jakiś parametr (od którego załeży "rozgałęzenie").

Riddle
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 10307
jarekr000000
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: U krasnoludów - pod górą
  • Postów: 4730
loza_prowizoryczna
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1628
2
RodionGork napisał(a):

Jakie sposoby generowania labiryntów możecie wymyślić? W słowach wystarczy :)
Bo od sposoba zależy jakie cechy labirynt będzie miał.

Oto słowa:

  • bierzesz kilkanaście równych kresek, układasz z nich równe linie
  • bierzesz grupę kresek nierównej długości
  • rzucasz je z wysokości na te ułożone
  • uzupełniasz pustki
  • masz labirynt

Co do cech to na pewno nie masz pewności czy powyższy labirynt zawiera wejście jak również nie czy nie zawiera nieosiągalnych korytarzy. Ale przynajmniej powyższy algorytm jest szybki i nieskomplikowany.

CZ
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2743
0

Tak sobie myślę na szybko, że:
-> ustalasz gdzie chcesz mieć wejście i wyjście
-> losowo generujesz ścieżke z jednego punktu do drugiego
-> dodajesz ścieżki do już istniejących i do tamtych dodajesz następne.

A technicznie to może to być graf skierowany.

Masz labirynt.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.