Skocz do zawartości

Szukanie ścieżki po obiektach albo budowa dróg


Draconis

Rekomendowane odpowiedzi

Witam

 

Szukam sposobu by sprawdzić czy obiekt A(Nazwijmy go Dom) jest połączony z obiektem B(Nazwijmy go Rynek) przy pomocy obiektów C(Nazwijmy je Droga)

Położenie wszystkich obiektów jest wybierane przez gracza, może być tylko jeden Rynek, z którym wszystkie Dom muszą być połączone przy pomocy Dróg, przy czym dozwolone jest łączenie pośrednie (Za pośrednictwem kilku obiektów Droga)

Jakby co całość jest w rzucie top-down i wszystkie obiekty są dopasowane do siatki (32x32 czyli tyle ile mają dom i droga, rynek jest cztery razy większy i zajmuje 64x64)

 

Pozdrawiam

Odnośnik do komentarza
Udostępnij na innych stronach

W sumie prosta sprawa jeśli mamy jeden rynek. Utwórz sobie tablicę, stos w którym będziesz przechowywał ID instancji drogi, później dodaj te ID instancji które znajdują się bezpośrednio koło rynku, następnie w pętli zdejmuj ze stosu kolejne ID i ustawia flagę "rynek" tej instancji np. na true, następie sprawdzaj czy w ich okolicy znajdują się inne drogi bez ustawionej flagi na true, a jeśli tak, do dodaj je do stosu... i w ten sposób w kółko, aż do opróżnienia stosu. Drogi bez ustawionej flagi na 100% nie będą miały połączenia z rynkiem.

Odnośnik do komentarza
Udostępnij na innych stronach

albo

GML
var kakauko, kashka, i, j;

kakauko=(szerokość kratki /2)

kashka=(wysokość kratki /2)

 

for(i=0;i<=room_width-1;i+=1)

{

for(j=0;j<=room_width-1;j+=1)

{

if collision_point(i*(szerokosc kratki)+kakauko,j*(wysokość kratki)+kashka,par_przejezdne,1,1)

{

// (zaznaczanie kratki i, j, jako przejezdna)

}

}

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ę...