„Strzelanka”

Transkrypt

„Strzelanka”
„Strzelanka”
–
opis appletu napisanego w jawie
Filip Łakomik
Bielska Wyższa Szkoła Biznesu i Informatyki im. J.Tyszkiewicza
Wstęp:
•
Opis gry:
Applet jest implementacją prostej gry w której gracz ma za zadanie zestrzeliwanie
potworów pojawiających się na planszy i kierujących się w jego stronę. Potwory
te z czasem stają się coraz bardziej opancerzone i poruszają się szybciej.
Zestrzelenie potwora jest punktowane (w zależności od jego pancerza), a za
zmarnowanie naboju odejmowany jest jeden punkt.
Gra kończy się kiedy jeden z potworów dotrze do gracza.
•
Sterowanie:
W grze sterujemy tzw. „strzelaczem”, który porusza się w lini poziomej, a po
kliknieciu lewego klawisza myszy wystrzeliwuje naboje w stronę potworów.
Opis klas:
•
Pole – to pole na którym rozgrywa się gra.
•
•
•
•
Naboj – wystrzeliwany przez strzelacza.
•
•
•
•
•
Dziedziczy z klasy Ellipse2D.Float
tworzony jest po kliknięciu myszką w miejscu w którym znajduje się
środek strzelacza.
posiada dodatkowo informacje o odległości o jaką ma być przesuwany
podczas lotu oraz o polu na którym się znajduje (żeby wywoływać jego
metodę repaint po przesunięciu)
posiada metodę (nextKrok) przesuwającą go oraz sprawdzającą czy trafił w
potwora (CzyTrafil(Potwor p)).
SilnikNaboju – wątek który: przesuwa nabój, sprawdza czy w coś trafił, czy
nie doleciał do końca oraz zmienia punktację.
•
•
•
Agreguje pozostałe widoczne elementy gry takie jak: strzelacz, wystrzelone
naboje, potwory oraz etykietę wyświetlającą wynik i zajmuje się ich
rysowaniem (w metodzie paintComponent).
Przechowuje informacje o stanie gry – aktualną punktację oraz informacje o
tym czy gra trwa czy jest już zakończona.
Obsługuje zdarzenia przesuwania myszy oraz kliknięcia przycisków.
Wątek wywołuje w pętli metodę naboju nextKrok dopóki nabój nie doleci
do końca planszy, lub nie trafi w któregoś potwora.
Po wyjściu z pętli usuwa nabój z listy nabojów (żeby nie był już rysowany)
i zmniejsza punktację – punktacja jest zmniejszana niezależnie od tego czy
nabój w coś trafił czy nie, ale jest to brane pod uwagę i jeśli w cos trafił
dodawane jest zawsze o 1 pkt więcej niż być powinno, więc w końcu
otrzymujemy zamierzony efekt.
Potwor – potworami są wrogowie oraz sam gracz.
•
•
•
funkcjonalność związana z rysowaniem obrazka, dostosowaniem
rozmiarów itp skopiowana z internetu :)
posiada dodatkowe informacje o potworze na temat: jego twardości i ilości
otrzymanych postrzałów.
Posiada metodę nextKrok podobną do metody naboju, jednak o tyle
ciekawszą że potwór posuwa się ruchem sinusoidalnym w dół z
dodatkowymi losowymi zaburzeniami w ruchu, co czyni go trudniejszym
do trafienia.
•
•
•
•
•
SilnikPotwora – wątek przesuwa potwora i sprawdza czy jest
„żywy” (pot.postrzaly<=pot.twardosc), jeśli żywy potwor dotrze do gracza
wywołuje metodę pola kończącą grę. Czas „snu” wątku jest parametrem co
pozwala sterować szybkością potwora.
ListaNab – Obudowana lista tablicowa przechowująca wszystkie lecące
naboje. Posiada synchronizowane ze sobą metody dodające/usuwające naboje
oraz metodę rysującą wszystkie naboje.
ListaWrogow – podobnie jak ListaNab z tym ze przechowuje wszystkich
„żywych” wrogów.
•
Posiada jedną ciekawą metodę ZabijTrafionych, która przyjmuje jako
parametr nabój i jeśli nabój leży na którymś z wrogów to wróg ten zostaje
postrzelony i jeśli nie żyje to jest usuwany z listy wrogów i punktacja
zwiększana jest zgodnie z jego twardością. Jeśli którykolwiek z wrogów
został trafiony to zwracana jest prawda, a jeśli nie to fałsz (żeby silnik
naboju wiedział co zrobić z nabojem).
DolozPotwora – TimerTask - Dokłada potwory do listy
•
Potwory dokładane są u góry planszy na wylosowanej współrzędnej ixowej
•
Przechowuje informacje o maksymalnej twardości oraz szybkości
dodawanych potworów która rośnie z czasem.
test – Klasa dziedziczy z appletu, inicjuje grę w metodzie init()
•
wczytuje obrazek potwora i strzelacza
•
tworzy pole gry
•
Tworzy dwa obiekty Timer których zadaniem jest dodawanie potworów w
określonych odstępach czasowych (drugi włącza się dopiero po pewnym
czasie).