Remx Opublikowano 27 Marca 2005 Udostępnij Opublikowano 27 Marca 2005 Szukam ..aby ktos podsunol mi pomysłu kawałek :) na cos takiego: Planuje zrobic labirynt ale za kazydym odpaleniem gry lub wejsciem do rooma ( fragment-obszar, lokacja w grze ) był inny lub podobny sciany byly by kreowane poleceniem instance_create(x,y,obj). w obj tym poprostu byla by sciana znaczy sie kawałek jej taki jagby klocek nastepnie generator by kreowal labirynt z tych klockow ale tak ze bylo by tylko jeddno przejscie z punktu A do punktu B. labirynt bylby wielkosci okolo 20x20 segmentow tak jak szachownica i kazda scianka takiego bola to 32x32 pixele. I tu jest problem jak tu zrobic generator :( najprostrze rozwiazanie to samemu zaprojektowac ze 4-5 labiryntow roznych i ifami wybrac ze jezeli x (= wylosowana liczba) jest tam jakies to ten labirynt a jak inna to inny to kolejny labirynt ma sie wygenerowac. Ale ja tak zbytnio niechce chcialby aby skrypcie ustawialo sie dyfinicje jakiej wielkosci ma byc labirynt XoY i on by kreowal poniewaz w kilku miejscach bym zastosowal taki kreator ale jak marna szansa na niego to musze zastosowac alternatywe :( Dzieki i Pozdrawaim oraz Zycze Wesołych świat oraz mokrego świngusa dingusa z mis mokrej podkoszulki :P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Marmot Opublikowano 28 Marca 2005 Udostępnij Opublikowano 28 Marca 2005 Wg. mnie to dość trudne pojęcie, bo wygenerowanie tej jedynej drogi przejścia labiryntu będzie trudne. Co do łączenia murów to jest przykład na GMCLAN, ale z takim generatorkiem labiryntów :) to razem z Free Pascalem jest przykład na coś takiego, ale to już nie GM :( Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Remx Opublikowano 28 Marca 2005 Autor Udostępnij Opublikowano 28 Marca 2005 yhm to chyba zastosuje metode rospisywania sie wpierw na kartce zaprojektuje z 10 labiryntow :D i bede je przerabial na kod GML :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Filar Społeczności Ranmus Opublikowano 28 Marca 2005 Filar Społeczności Udostępnij Opublikowano 28 Marca 2005 Powiem jak takie cos sie robi (bo pisac przykladu nie bede, za duzo roboty): 1) Ustalamy rozmiar labiryntu oraz punkty wejscia i wyjscia. Najpierw ustalamy prawidlowa droge przejscia labiryntu: 1) Losujemy jakas losowa pozycje obok poprzedniego kroku (na poczatku wejscia) z uwzglednieniem pozycji obok, ktorych algorytm ma zakaz losowania. 2) Od wylosowanego pola algorytmem znajdowania drogi sprawdzamy czy jest jakiekolwiek mozliwe wyjscie. Jesli nie ma, wracamy do punktu 1) przy okazji wykluczajac ta pozycje podczas losowania. 3) Dodajemy informacje o tej pozycji to tabeli, w ktorej przechowujemy parametry wlasciwej sciezki. 4) Czyscimy wykluczone pozycje losowania i wracamy do punktu 1). Postepujemy tak, az zostanie wylosowana wlasciwa droga. Teraz mozna losowac sciezki, odgalezienia od drogi glownej. Losujemy takze czy scianki maja byc zamkniete czy otwarte. Gotowe. Jak widac, duzo z tym roboty, dlatego przykladu pisac nie bede. Jest jeszcze drugi, posredni sposob. Mamy np labirynt 50x50. Przygotowujemy sobie pakiety malych labiryncikow o rozmiarach 5x5, zeby bylo ich jak najwiecej w puli. I teraz zapelniamy tymi labiryncikami caly labirynt. Tylko nalezy pamietac by wejscia i wyjscia z takich labiryncikow mialy zawsze te same pozycje. Tak wylosowany labirynt niestety ma duzo sposob na wyjscie z niego. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Tymon Opublikowano 28 Marca 2005 Udostępnij Opublikowano 28 Marca 2005 A jakby zrobić gotowe labirynty :] ale żeby były zapisane np. jakimś kodem 101010101111110100010101001000 1 - Ściana 0 - Puste pole :] Puźniej odczytać pierwszy znak i stworzyć obiekt jeżeli znak=1 :] a jeżeli nie to przejść do kolejnej pozycji. Niestety takie rozwiązanie nie nadaje sie do dużych labiryntów :( za długo wykonywany jest kod. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Remx Opublikowano 28 Marca 2005 Autor Udostępnij Opublikowano 28 Marca 2005 sczeze malo przydatny bo skad wiesz ze 1 oznacza pionowa sciane czy pozioma :P :D a 2 razy dla pionu i poziomu to przechodzic ;/ to juz chyba lepiej zrobic czesc labiryntu samemu z 10 sztuk ale w srodku naprzyklad zastosowac jakies male segmenty naprzyklad ze 2 sztuki ktore by sie losowo ukladaly. tak ze ja nawed niemuglbym zapamietac okolo 20 labiryntow ;) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Woock Opublikowano 28 Marca 2005 Udostępnij Opublikowano 28 Marca 2005 1 nie musi oznaczać ani takiej, ani takiej. Skrypt dobierający odpowiednią klatkę sprite'a ze względu na obecność innych obj_ścian w pobliżu to nic nowego. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Quetzacotl Opublikowano 29 Marca 2005 Udostępnij Opublikowano 29 Marca 2005 Ja bym to zrobił podobnie jak mówił Ranma, masz pole tam 20x20, losuje najpierw miejsce startu, potem dlugosc labiryntu w polach, i potem zaczyna generowac, z miejsca startowego losuje droge dajmy na to w lewo i tam stawia kolejny odcinek, i tak dla kazdego pola losuje, jesli jest juz jakies zajete pole, to wtedy szuka innego, jesli nie ma innego to mozesz zrobic ze tam sie wlasnie konczy, albo, ze musi sie cofnac krok w tyl i poszukac innego przejscia. Tych krokow zrobi tyle ile wynosi dlugosc labiryntu, chyba ze juz nie ma innych wyjsc to wtedy zakonczy. Aha i caly labirynt powinien byc automatycznie obudowywany scianami. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się