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:
parent
b23865b090
commit
ae551703fd
BIN
data/images/screenshots/aStarLoop1.png
Normal file
BIN
data/images/screenshots/aStarLoop1.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 8.1 KiB |
BIN
data/images/screenshots/aStarLoop2.png
Normal file
BIN
data/images/screenshots/aStarLoop2.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 30 KiB |
BIN
data/images/screenshots/aStarLoop3.png
Normal file
BIN
data/images/screenshots/aStarLoop3.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 78 KiB |
BIN
data/images/screenshots/aStarSuccesor.png
Normal file
BIN
data/images/screenshots/aStarSuccesor.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 93 KiB |
Before Width: | Height: | Size: 228 KiB After Width: | Height: | Size: 228 KiB |
@ -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.*
|
||||||
|
@ -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/)
|
Loading…
Reference in New Issue
Block a user