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.

Podobne dokumenty