Skocz do zawartości

Labirynt - The begin


Remx

Rekomendowane odpowiedzi

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

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

  • Filar Społeczności

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

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

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

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

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ę
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...