Labirynt w C

Fristajler
Użytkownik
Użytkownik
Posty: 45
Rejestracja: 9 sty 2008, o 12:22
Płeć: Mężczyzna
Lokalizacja: Warszawa
Podziękował: 4 razy

Labirynt w C

Post autor: Fristajler »

Należy napisać program labirynt, w którym ścianki będą zaznaczane ‘#’ , a wolne pola po których można chodzić przez ‘.’. Labirynt ma za każdym razem wyglądać inaczej. A jak już będzie labirynt, to powinien poprosić o podanie punktu i wskazać drogę do niego zmieniając wolne pola z ‘.’ na ‘x’. Przykładowy labirynt z zaznaczoną drogą wyglądać powinien tak:


#########
#A#xxxxx#
#x#x###x#
#xxx#.#x#
#####.#x#
#...#xxx#
#.#.#x###
#.#..xxB#
#########


Będę wdzięczny za rozwiązanie ;]
Awatar użytkownika
kadiii
Użytkownik
Użytkownik
Posty: 642
Rejestracja: 20 gru 2005, o 21:04
Płeć: Mężczyzna
Lokalizacja: Wrocław
Pomógł: 130 razy

Labirynt w C

Post autor: kadiii »

Proponuję oprogramować graf na dytamicznej strukturze lub jak tego nie potrafisz użyć zwykłej tablicy. Do znalezienia drogi sugeruję użyć np. metodę z nawrotami czy w głąb. Co do losowania to mam taką radę, wylosuj najpierw spójną drogę, a dopiero potem wypełnij resztę pól ściankami. Z pomocnej literatury polecam książkę M.M.Sysło "Piramidy, szyszki i inne konstrukcje algorytmiczne".
Fristajler
Użytkownik
Użytkownik
Posty: 45
Rejestracja: 9 sty 2008, o 12:22
Płeć: Mężczyzna
Lokalizacja: Warszawa
Podziękował: 4 razy

Labirynt w C

Post autor: Fristajler »

kadiii pisze:Proponuję oprogramować graf na dytamicznej strukturze lub jak tego nie potrafisz użyć zwykłej tablicy. Do znalezienia drogi sugeruję użyć np. metodę z nawrotami czy w głąb. Co do losowania to mam taką radę, wylosuj najpierw spójną drogę, a dopiero potem wypełnij resztę pól ściankami. Z pomocnej literatury polecam książkę M.M.Sysło "Piramidy, szyszki i inne konstrukcje algorytmiczne".
O kurcze. To nie dla mnie ;/
Xitami

Labirynt w C

Post autor: Xitami »

przejscie nie jest trudne

Kod: Zaznacz cały

nastkrok(x, y) 
    if  t[x,y] != '.' 
         exit
    if (x==meta_x) && (y==meta_y)
         mam rozwiazanie
    else 
         kroki=kroki+1
         droga[kroki].x=x
         droga[kroki].y=y

         nastkrok(x-1, y)
         nastkrok(x+1, y)
         nastkrok(x, y-1)
         nastkrok(x, y-1)

         kroki=kroki-1
a zabawę zaczynamy

Kod: Zaznacz cały

  kroki=0
  nastkrok(start_x, start_y)
prawda, że nie skomplikowane?
ODPOWIEDZ