From 6ff2085b21ec938b5c99a283622594e154350051 Mon Sep 17 00:00:00 2001 From: Karol Piotrowski Date: Mon, 27 Apr 2020 22:54:38 +0000 Subject: [PATCH] Zaktualizuj 'route-planning.md' --- route-planning.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/route-planning.md b/route-planning.md index 845563a..e6876bc 100644 --- a/route-planning.md +++ b/route-planning.md @@ -55,3 +55,9 @@ Następnie do zmiennej *waga* przypisuje się wagę tego pola. ![](images/actionCheck.png) Następnie po kolei dla wszystkich akcji ruchu następuje sprawdzenie za pomocą *isValid*, czy z obecnego stanu można tę akcję wykonać. Jeśli następnie powiedzie się test celu dla stanu komórki otrzymanej po wykonaniu danej akcji, zapisujemy adres poprzedniej komórki jako poprzednika obecnej, wykonujemy funkcję *tracePath* i zamykamy program. W przeciwnym wypadku obliczmy nowe *f*, wyliczając uprzednio *g* i *h*. Jeśli *f* osiągnęło już zbyt wysoką wartość, dodajemy do *openList* nową parę złożoną z nowego *f* oraz współrzędnych obecnego pola i nadpisujemy stare *f*, *g* i *h* nowymi i ustawiamy poprzednika obecnej komórki na adres poprzedniego pola. + +# Funkcja tracePath + +Ta funkcja składa się z dwóch funkcji while. W pierwszej z nich na stos *Path* odkładane są wszystkie adresy, które tworzą ścieżkę z celu do pola początkowego naszego agenta. Wykorzystujemy do tego wcześniej zapisane adresy poprzedników danych komórek w ścieżce. W drugiej pętli następuje translacja zebranych danych na faktyczny ruch agenta na planszy. + +![](images/tracePath.png) \ No newline at end of file