Strona 1 z 1

Generowanie labiryntu, potrzebny wydajny algorymt

: 19 marca 2012, 17:46
autor: wytrzeszcz
Witajcie.
D
awno mnie tu nie było ale do rzeczy.
Dotychczas używałem następującego algorytmu:
  • zapisz tablicę 2d liczbami od 1 do pole tablicy (dla tablicy 2x3 jest to od 1 do 6) zapis ten przebiega losowo,
  • wylosuj współrzędne pokoju oraz zmienną odpowiedzialną za kierunek (N, S, W, E),
  • jeśli idąc w wylosowanym kierunku 1 pole nie wyjdę z zakresu oraz numer w polu początkowym będzie różny od pola w pokoju kolejnym to wpisuję w tablicy służącej do przetrzymywania informacji o przejściach tą informację oraz zamieniam wszystkie wyższe numery na niższe:

    [INDENT]np. jeśli otwieram drzwi między pokojem o numerku 13 i 69 to zamieniam wszystkie numerki pokoi 69 na 13[/INDENT]
    i kod taki wykonuje się aż każdy pokój będzie mieć numerek 1.
Niestety ten algorytm jest dość wolny.

Może ktoś z Was zaproponuje lepszy algorytm do generowania labiryntu prostokątnego o dość sporych wymiarach z zastrzeżeniem, że z dowolnego jednego pokoju można dojść do dowolnego innego jakąś drogą.
Za każdą odpowiedź serdecznie dziękuję.

: 22 marca 2012, 20:00
autor: noobek
Polecam warsztat.gd - tam ci pomogą w 5 min.