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