add screenshots folder and images to route-planning.md raport

correct path in environment.md
style progress in route-planning.md
This commit is contained in:
Mateusz 2020-04-27 13:33:01 +02:00
parent b23865b090
commit ae551703fd
7 changed files with 19 additions and 8 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 93 KiB

View File

Before

Width:  |  Height:  |  Size: 228 KiB

After

Width:  |  Height:  |  Size: 228 KiB

View File

@ -33,7 +33,7 @@ Statystyki agenta można zmieniać poprzez interakcję z objektami **entities**,
nasze pragnienie, a zjedzenie królika nasz głód, możemy również odpocząć przy ognisku. nasze pragnienie, a zjedzenie królika nasz głód, możemy również odpocząć przy ognisku.
Posiadamy również konsolę, która wypisuje różnorodne zdarzenia i ich skutki, na przykład gry agent coś podniesie. Posiadamy również konsolę, która wypisuje różnorodne zdarzenia i ich skutki, na przykład gry agent coś podniesie.
W konsoli znajduję się również Timer, który pozwala nam ustalić ile czasu udało się agentowi przetrwać._ W konsoli znajduję się również Timer, który pozwala nam ustalić ile czasu udało się agentowi przetrwać._
![screenshot](https://git.wmi.amu.edu.pl/s444409/DSZI_Survival/raw/master/data/images/adventure.png?fbclid=IwAR0lBN3bQIK4-LQuVPw-vTLxBrN3xMTrNjKjcrOp4idzaZvkOwdbYZQRQc0) ![screenshot](https://git.wmi.amu.edu.pl/s444409/DSZI_Survival/raw/master/data/images/screenshots/adventure.png?fbclid=IwAR0lBN3bQIK4-LQuVPw-vTLxBrN3xMTrNjKjcrOp4idzaZvkOwdbYZQRQc0)
### Statystyki ### Statystyki
**Health points:** *Punkty życia agenta, gdy pasek spadnie do zera agent umiera.* **Health points:** *Punkty życia agenta, gdy pasek spadnie do zera agent umiera.*
**Hunger:** *Głód agenta, gdy pasek podniesie się do wartości 100, agent umiera.* **Hunger:** *Głód agenta, gdy pasek podniesie się do wartości 100, agent umiera.*

View File

@ -3,27 +3,38 @@
**Całą implementacje automatycznego poruszania się można znaleźć **Całą implementacje automatycznego poruszania się można znaleźć
w plikach [AStarNode.py](https://git.wmi.amu.edu.pl/s444409/DSZI_Survival/src/master/src/AI/AStarNode.py) oraz w plikach [AStarNode.py](https://git.wmi.amu.edu.pl/s444409/DSZI_Survival/src/master/src/AI/AStarNode.py) oraz
[AutomaticMovement.py](https://git.wmi.amu.edu.pl/s444409/DSZI_Survival/src/master/src/AI/AutomaticMovement.py).** [AutomaticMovement.py](https://git.wmi.amu.edu.pl/s444409/DSZI_Survival/src/master/src/AI/AutomaticMovement.py).**
## Pętla główna strategii przeszukiwania
## 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*.
## 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* * 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/)
* 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 * 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/)
* Dodajemy dane miejsce do listy *explored* * 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* * 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 * 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* 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, * 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* to usuwamy z kolejki *node* i dodajemy *newNode*
![screenshot3](https://git.wmi.amu.edu.pl/s444409/DSZI_Survival/raw/master/data/images/screenshots/)
## Funkcja następnika ## 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)**
* Do wynik inicjujemy obrót w lewo i prawo, gdyż to zawsze nasz agent może wykonać * Do wynik inicjujemy obrót w lewo i prawo, gdyż to zawsze nasz agent może wykonać
* Sprawdzamy czy jest możliwość ruchu do przodu: * Sprawdzamy czy jest możliwość ruchu do przodu:
* Sprawdzamy czy przed nami jest jakaś kolizja jeśli jest to weryfikujemy * Sprawdzamy czy przed nami jest jakaś kolizja, jeśli jest to weryfikujemy
czy to nie jest nasz cel, jeśli jest to dodajemy ruch do przodu do wyniku funkcji następnika, jeśli nie to zwracamy jedynie listę z obrotami 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/)
## Heurystyka ## 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. * Oszacowuje koszt dotarcia do celu końcowego z aktualnej pozycji gracza.
* Opisana metodą approximateDistanceFromTarget(self, tileX, tileY) w pliku AutomaticMovement.py * Od tileX i tileY (aktualna pozycja gracza) odejmowana jest pozycja docelowa, zwracana jest wartość zaniżonego kosztu osiągnięcia celu.
* 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/)