--- 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.