Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Generowanie labiryntu metodą DFS - sfml

Ostatnio zmodyfikowano 2017-03-05 23:15
Autor Wiadomość
latajacaryba
Temat założony przez niniejszego użytkownika
Generowanie labiryntu metodą DFS - sfml
» 2017-03-05 00:09:46
Witam, potrzebuję pomocy. Chcę stworzyć losowo generowany labirynt (mapa jest kafelkowa) metodą deep first search.
Wiedza na temat jak ten algorytm działa jest niezbędna do zrozumienia dalszej części posta. To co obecnie mam to:
klasa "Kafelek" która zawiera informacje typu czy jest na niej gracz, lub jakiego jest rodzaju (ściana, podłoga itp.) rozmiar kafelka, dziedziczy po sf::Sprite

klasa "Mapa" składa się m.in. dynamicznie alokowanej tablicy dwuwymiarowej klasy Kafelek oraz wysokosci i szerokości tej tablicy.

i ostatnia powiązana z tematem:
klasa "komórka", składa się m.in: 4 wskaźniki na obiekty klasy Kafelek (dla kafelki nad, pod, po lewej i po prawej), bool czy_odwiedziny, czyli bool który mówi nam, czy dany kafelek został odwiedzony i wskaźnik, której kafelce na mapie odpowiada komórka

Sama funkcja składa się z tablicy 2d klasy Komórka. Każdy element tej tablicy jest przyporządkowywany odpowiadającemu mu elementowi z tablicy kafelków (tablicy 2d o której wspominałem, jest w klasie Mapa). Mówiąc to, mam na myśli:  Kafelek tab[y][x].wskaznik_do_kafelka = &tab_kafelkow[y][x];
I miałem następujący plan:
dzielimy mape "w kratkę" czyli układ kafelków jest taki: ściana - podloga - ściana - podłoga - ... - ściana
czyli każdego kafelka "podłoga" otaczają kafelki "ściana". (na dole posta link do rysunku)

jest jeszcze jedna tablica dwuwymiarowa, jest to tablica wskaźników na obiekty klasy Komórka". Mówi ona, po jakich komórkach się poruszaliśmy.

Ale kompletnie nie wiem jak sie do tego zabrać, to znaczy wiem, ale boje się, ze będzie to straszliwie niezopytmalizowane :(

Kodu nie daje, bo ma ok 70 linijek więc nie będę Was męczył. No chyba że ktoś będzie chciał to wrzucę.

Jak byście to zrobili?

koncepcja:
https://zapodaj.net/fd34607c898fb.png.html
P-158536
mokrowski
» 2017-03-05 10:59:57
Dlaczego chcesz optymalizować już na tym etapie? Zaimplementuj rozwiązanie i sprawdź czy implementacja ma wystarczającą wydajność. Jak nie będzie, wrócisz do problemu. Nie ma się czego bać :-)
P-158584
latajacaryba
Temat założony przez niniejszego użytkownika
» 2017-03-05 23:15:19
Ok, temat już nieaktualny, tak poplątałem i pomieszałem że kompletnie to schrzaniłem :(. Może kiedyś się za to jeszcze wezmę. Tymczasem, dzięki.
P-158617
« 1 »
  Strona 1 z 1