Generowanie labiryntu metodą DFS - sfml
Ostatnio zmodyfikowano 2017-03-05 23:15
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 |
|
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ć :-) |
|
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. |
|
« 1 » |