route-planning.md add all screenshots and correct project progress section
This commit is contained in:
parent
ae551703fd
commit
3632a9ffbb
BIN
data/images/screenshots/approximate.png
Normal file
BIN
data/images/screenshots/approximate.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 9.0 KiB |
@ -6,21 +6,22 @@ w plikach [AStarNode.py](https://git.wmi.amu.edu.pl/s444409/DSZI_Survival/src/ma
|
||||
|
||||
## Postęp projektu
|
||||
Teraz nasz agent ma możliwość automatycznego poruszania się.
|
||||
Po wciśnięciu *u* nasza postać zacznie zmierzać do losowego obszaru za pomocą algorytmu A*.
|
||||
Po wciśnięciu *u* nasza postać zacznie zmierzać do losowego obszaru za pomocą algorytmu A*.
|
||||
Jeśli pole przed agentem będzie interaktywne zostanie podniesione.
|
||||
|
||||
## Pętla główna strategii przeszukiwania
|
||||
**Metoda *a_Star(self)* w [AutomaticMovement.py](https://git.wmi.amu.edu.pl/s444409/DSZI_Survival/src/master/src/AI/AutomaticMovement.py)**
|
||||
* Na początku sprawdza czy kolejka jest pusta, jeśli tak zwraca *None*
|
||||
![screenshot1](https://git.wmi.amu.edu.pl/s444409/DSZI_Survival/raw/master/data/images/screenshots/)
|
||||
![screenshot1](https://git.wmi.amu.edu.pl/s444409/DSZI_Survival/raw/master/data/images/screenshots/aStarLoop1.png)
|
||||
* Jeśli test spełnienia celu się powiedzie, sprawdzamy dodatkowo czy nasz punkt docelowy nie jest elementem kolizyjnym, jeśli jest, to *cel = cel.parent* i zwracamy ciąg akcji
|
||||
![screenshot2](https://git.wmi.amu.edu.pl/s444409/DSZI_Survival/raw/master/data/images/screenshots/)
|
||||
![screenshot2](https://git.wmi.amu.edu.pl/s444409/DSZI_Survival/raw/master/data/images/screenshots/aStarLoop2.png)
|
||||
* Dodajemy dane miejsce do listy *explored*
|
||||
* Następnie w pętli *for* deklarujemy nowy stan i priorytet zgodnie z funkcją następnika, jego priorytet określamy za pomocą funkcji priorytetu *self.priority*
|
||||
* Jeśli stan nie jest w kolejce i nie ma go w odwiedzonych polach, umieszczamy go w kolejce
|
||||
zgodnie z priorytetem, zapobiegamy też wystąpienia dwóch takich samych priorytetów poprzes *self.testCount += 1*
|
||||
* A jeśli stan *newNode* należy do kolejki i jakiś inny stan *node* z kolejki posiada od niego większy priorytet,
|
||||
to usuwamy z kolejki *node* i dodajemy *newNode*
|
||||
![screenshot3](https://git.wmi.amu.edu.pl/s444409/DSZI_Survival/raw/master/data/images/screenshots/)
|
||||
![screenshot3](https://git.wmi.amu.edu.pl/s444409/DSZI_Survival/raw/master/data/images/screenshots/aStarLoop3.png)
|
||||
|
||||
## Funkcja następnika
|
||||
**Metoda *succesor(self, elemState)* w [AutomaticMovement.py](https://git.wmi.amu.edu.pl/s444409/DSZI_Survival/src/master/src/AI/AutomaticMovement.py)**
|
||||
@ -30,11 +31,11 @@ to usuwamy z kolejki *node* i dodajemy *newNode*
|
||||
* Sprawdzamy czy przed nami jest jakaś kolizja, jeśli jest to weryfikujemy
|
||||
czy to nie jest nasz cel
|
||||
* Jeśli to jest nasz cel to dodajemy ruch do przodu do wyniku funkcji następnika, jeśli nie to zwracamy jedynie listę z obrotami
|
||||
![screenshot4](https://git.wmi.amu.edu.pl/s444409/DSZI_Survival/raw/master/data/images/screenshots/)
|
||||
![screenshot4](https://git.wmi.amu.edu.pl/s444409/DSZI_Survival/raw/master/data/images/screenshots/aStarSuccesor.png)
|
||||
|
||||
|
||||
## Heurystyka
|
||||
**Metoda *approximateDistanceFromTarget(self, tileX, tileY)* w [AutomaticMovement.py](https://git.wmi.amu.edu.pl/s444409/DSZI_Survival/src/master/src/AI/AutomaticMovement.py)**
|
||||
* Oszacowuje koszt dotarcia do celu końcowego z aktualnej pozycji gracza.
|
||||
* Od tileX i tileY (aktualna pozycja gracza) odejmowana jest pozycja docelowa, zwracana jest wartość zaniżonego kosztu osiągnięcia celu.
|
||||
![screenshot7](https://git.wmi.amu.edu.pl/s444409/DSZI_Survival/raw/master/data/images/screenshots/)
|
||||
![screenshot7](https://git.wmi.amu.edu.pl/s444409/DSZI_Survival/raw/master/data/images/screenshots/approximate.png)
|
Loading…
Reference in New Issue
Block a user