Projekt 2. Strzelanka 2D
Transkrypt
Projekt 2. Strzelanka 2D
Projekt 2. Strzelanka 2D Zadaniem gracza będzie unikanie nadlatujących meteorytów. Aby ułatwić mu nieco zadanie, wyposażymy go w możliwość ich niszczenia wystrzeliwanymi ze statku kosmicznego gracza pociskami. Ogólna koncepcja gry. Gra kończy się w momencie, gdy któraś z asteroid dotknie statku gracza. Na podstawie powyższego szkicu identyfikujemy obiekty, jakie będzie zawierał nasz projekt. Gra będzie symulować wykreowany przez projektanta/programistę świat. Wszystkie obiekty, jakie istnieją w świecie naszej gry, przedstawione są na szkicu. Następnym zadaniem jest ich prawidłowe opisanie. Aby logika naszej gry mogła wychwycić warunek jej zakończenia, musi „wiedzieć”, w jakim miejscu znajdują się obiekty. W tym celu każdy z elementów musimy wyposażyć w atrybut mówiący o ich aktualnym położeniu. Należy stworzyć strukturę, która umożliwia przechowywanie współrzędnych w dwuwymiarowej przestrzeni (może to być np. punkt2D lub vector2). Takie struktury podobnie jak wektory na płaszczyźnie można dodawać, odejmować i mnożyć przez skalar. Mając informacje o położeniu danego obiektu, musimy jeszcze wyposażyć go w metody, które umożliwią mu poruszanie się po ekranie. W przypadku asteroid sytuacja jest dość prosta. Musimy tylko zadbać o to, aby przemieszczały się one z góry na dół ekranu, odbijając się od bocznych krawędzi. Statek musimy natomiast wyposażyć w metody pozwalające na sterowanie nim przez gracza i zadbać, aby nie mógł on opuścić widocznego na ekranie obszaru. Następnym problemem jest sposób, w jaki rozwiążemy kwestię wystrzeliwania pocisków. Możemy przyjąć założenie, że gracz może oddać kolejny strzał tylko wtedy, gdy poprzedni trafił w asteroidę lub opuścił pole widzenia gracza (takie założenie uprości nam trochę logikę gry, a tym samym odpowiedzialny za nią kod). Wszelkie informacje na temat stanu pocisku umieścimy w obiekcie gracza, a następnie wyposażymy go w dodatkowe metody pozwalające na ich odczytanie. Kolejnym problemem do rozwiązania jest sposób, w jaki gracz będzie sterował swoim statkiem kosmicznym. Interfejs gry może być obsługiwany za pomocą fizycznej klawiatury, lub myszy. Kodowanie Prace nad kodem naszej gry zaczniemy od klasy reprezentującej obiekt gracza. Zawarte w niej pola oraz metody opisują obiekt, którym steruje gracz. Atrybut „tekstura” może przechowywać teksturę ze specjalnie przygotowanym plikiem graficznym przedstawiającym pojazd kosmiczny gracza. Parametr „pozycja” określa aktualną pozycję statku. Możemy również wszystkie informacje na temat pocisku przechowywać w klasie gracza. Struktura pocisku powinna składać się z dwóch atrybutów: aktualne położenie pocisku, określenie, czy pocisk został już wystrzelony przez gracza (atrybut przyjmie wartość false, jeśli graczowi uda się trafić asteroidę lub jeśli pocisk wyleci poza górną krawędź ekranu). Będziemy potrzebować metodę zwracającą aktualną pozycję statku gracza, która będzie nam potrzebna podczas wykrywania kolizji. Metody „ruchu” mają zmieniać pozycję statku gracza o ustaloną liczbę pikseli w danym kierunku. Podczas ich wywołania odbywa się sprawdzenie, czy obiekt gracza nie przekroczy granicy obszaru widocznego ekranu (wartości graniczne powinny być tak ustawione, żeby brały pod uwagę wielkość tekstury reprezentującej statek gracza). Metoda „strzał” będzie przydatna, jeśli gracz zechce wystrzelić pocisk. Jej zadanie polega na zasygnalizowaniu wystrzału, a także ustawieniu pozycji początkowej w ten sposób, aby pocisk sprawiał wrażenie wystrzelonego z dziobowej wyrzutni statku. Metoda „uaktualnijPocisk” może zmieniać pozycję pocisku w taki sposób, by pocisk leciał w linii prostej od pozycji, z której został wystrzelony, do górnej krawędzi ekranu. Po jej osiągnięciu następuje jego dezaktywacja i gracz może oddać kolejny strzał. Animacja Statycznie poruszające się po ekranie grafiki asteroid i statku kosmicznego możemy zastąpić prostymi animacjami. Dzięki temu nasza gra zyska trochę na dynamice. Efekt animacji można osiągnąć poprzez odpowiednio szybkie wyświetlenie serii grafik, przedstawiających kolejne fazy ruchu animowanego obiektu. Plik graficzny zawierający kolejne klatki animacji: Grafika będzie odpowiadała za animację strumienia ognia wydobywającego się z dyszy statku. Kolejny etap pracy to stworzenie klasy opisującej asteroidy. Każda asteroida będzie poruszała się samodzielnie, co oznacza, że będziemy musieli wyposażyć ją w odpowiednie metody, które pozwolą jej na swobodne przemieszczanie się po ekranie. W klasie „asteroida” należy kontrolować położenie asteroidy. Wykrywanie kolizji to podstawowe zagadnienie każdej gry. Gra, którą tu omawiamy, jest na tyle prosta, że zbudowanie odpowiedniej metody nie powinno być trudne.