---
title: Dokumentacja projektu
tags: PO
author: Mateusz Reis
---
# Dokumentacja projektu
>autor : Mateusz Reis
### Game
* Klasa game to klasa obsługująca główne menu, stąd można przejść do rozgrywki,
sprawdzić instrukcje lub autorów oraz zakończyć grę.
### MainLoop
* MainLoop to trzon rozgrywki, obsługuje ruchy gracza,
steruje przeciwnikami, zmienia poziomy oraz
przekazuje sterowanie do innych klas takich jak: Inventory czy Hero.
Podczas jednego obrotu pętli w metodzie play, odczytuje ruch gracza,
analizuje i wykonuje ruch przeciwnikow oraz przekazuje okno do wszytskich klas,
które mają swój graficzny obiekt, aby mogły go narysować a następnie wyświetla
pełne okno rozgrywki dla użytkownika.
Pozostałe metody:
moveenemies - porusza przeciwnikami
isok - sprawdza czy ruch gracza spowoduje przejscie do kolejnego pomieszczenia
distance - sprawdza czy gracz i przeciwnik są obok siebie
isenemy - zwraca indeks przeciwnika którego gracz atakuje
makeenemies - tworzy nowych przeciwnikow podczas przejscia do nowego pomieszczenia
nextemove - generuje ruch przeciwnikow
### Room
* Klasa Room odpowiada za poziomy po których porusza się gracz.
Metoda draw rysuje cały poziom w oknie
isvalidmove sprawdza czy ruch gracza jest poprawny
genboard generuje plansze i dla każdego pola wybiera wartość od 0 do 2, gdzie
0 - puste pole, po którym obiekty Entity nie mogą sie poruszać
1 - zwykłe pole, po którym wszytskie obiekty mogą sie poruszać
2 - pole z przedmiotem, na które wejść może tylko gracz
validemove - sprawdza czy ruch przeciwnika jest poprawny
drawexits - pomocnicza metoda, która rysuje wyjścia z pomieszczenia
### Item
* Klasa Item reprezentuje przedmiot w ekwipunku gracza.
Posiada statystyki odpowiadająca tym u gracza oraz metodę draw, która rysuje graficzny wygląd przedmiotu
wraz z statystykami.
### Inventory
* Klasa odpowiadająca za ekwipunek gracza przechowuje maksymalnie 21 obiektów klasy Item.
Metoda lookatitems przejmuje sterowanie od mainloop,
rysuje ekwipunek i pozwala graczowi założyć lub usunąć zebrane wcześniej przedmioty.
add przyjmuje podniesiony przedmiot i dodaje go do ekwipunku.
Metody getit*** zwracają statystki aktualnie noszonych przez gracza przedmiotów
Metoda delit usuwa przedmiot z ekwipunku.
Metoda equip dodaje do aktualnie noszonych przez gracza przedmiotów, przedmiot wybrany z ekwipunku
### Gui
* Klasa Gui reprezntuje interfejs, wyświetlany podczas rozgrywki,
pokazuje aktualny stan zdrowia i doświadczenia gracza oraz
obsługuje listę zdarzeń wypisując ostatnie 10 wiadomości wysłanych przez obiekty.
Metoda draw rysuje interfejs w oknie podanych jako argument.
Metoda addmsg przyjmuje wiadomości od innych klas jako obiekt klas String i dodaje go do kolejki.
W razie przepełnienia usuwa najstarsze wiadomości.
### Enemy
* Klasa reprezentująca przeciwnika, dzidziczy po klasie Entity.
Metoda attack odpowiada za atak na graczu i wypisanie komunikatu na
liscie zdarzen w gui.
Metoda isdead zwraca wartość prawda/fałsz w zależności od zdrowia przeciwnika.
### Entity
* Klasa Entity reprezentuje byt w grze taki jak gracz lub przeciwnik.
Implementuje metody:
hit ~ odpowiada za otrzymanie obrazeń,
przy odpowiedniej przewadze obiekt może uniknąć obrażeń,
co jest reprezentowane jako otrzymanie 0 punktów obrażeń
draw ~ rysuje graficzny wygląd obiektu w oknie
move ~ przemieszcza obiekt po planszy,
poniewaz plansza sklada sie z pol,
przesuwanie graczy i przeciwnków wygląda tak samo
### Hero
* Klasa gracza, dziedziczy po Entity pola ze statystykami oraz metody draw i move.
Hero nadpisuje metode hit ponieważ gracz oprócz własnych statystyk
posiada również dodatkowe punkty za przedmioty które nosi.
Metoda addexp odpowiada za przyjmowanie punktow doswiadczenia i podnoszenie poziomu gracza.
upgradehero to metoda, która przejmuje sterowanie od klasy mainloop i rysuje menu gracza
w którym użytkownik może rozdzielić punkty statystyk
pryznawane za zdobycie kolejnego poziomu doświadczenia.