W tym artykule wykonamy prowizorkę gry plaformowej opartej na warstwach. Aby go zrozumieć musisz zapoznać się z podstawowymi informacjami na temat DelphiX. Znajdziesz je w poprzednich artykułach tego działu.

1. Na początku wstawmy na formę odpowiednie komponenty :

Komponent – Proponowana nazwa
DXSpriteEngine – Engine
DXTimer – DXTimer1 (Interval 0)
DXDraw – DXDraw1 (align alClient)
DXImageList – Grafika
DXInput – DXInput
MediaPlayer – Muza

Gra będzie składać się z trzech warstw :
tło gry
plansza
elementy po których się poruszamy.

Teraz zadeklarujmy nasze zmienne oraz obiekty :

Utwórzmy procedurę, która będzie tworzyła wszystkie obiekty wykorzystane w grze :

Teraz przejdźmy do OnTmier komponentu DXTimer1 :

Powyższy kod odpowiedzialny jest za przesuwanie planszy, jeżeli gracz dojdzie do brzegu ekranu.

Wykorzystujemy zmienną start do informowania nas o stanie gracza oraz wczytywania początkowego rysunku podczas uruchamiania gry. Obiekt muza to TMediaPlayer. Jest odpowiedzialny za odtwarzanie muzyki.

Następnie otwórzmy procedurę OnCreate naszej formy. Umieścimy tam polecenia ładujące pliki graficzne :

Do wyjścia z gry będziemy używać klawisza q. Aby to zrobić wejdź w OnKeyPress naszej formy i zapisz :

2. Procedury związane z ruchem postaci :

Spadanie podczas opuszczenia terenu :

Wyjaśnienie : Gdy nasz obiekt gracz będzie w powietrzu, on i jego kopia mają spadać w dół. Po co kopia ? – wyjaśnię później.

w pierwszej części sprawdzamy czy gracz nie spadł z planszy. Jeśli tak to kończymy grę. Następnie mamy polecenia : jeśli teren jest prosty to podskakujemy o 12 w górę, jeśli jest górka to o 20. Oto ten kod :

Poniżej przedstawiam procedurę odpowiedzialną za ruch naszej postaci :

Gdy zostanie wciśnięta strzałka do góry (isUp) wtedy gracz ma podskoczyć o 100 pikseli w górę.

Po wciśnięciu strzałki w dół (isDown) gracz ma przykucnąć. Zmianie ulega tylko grafika.

Przy poruszaniu się w lewo lub prawo (isLeft, is Right) zmieniamy rysunek, następnie wykonujemy lekki podskok. Sprawdzamy czy postać jest w powietrzu. Przesuwamy ją w określonym kierunku. Podajemy informację o wykonanej czynności.

Kopie ukrytą gracza tworzyliśmy po to, abyśmy mogli dokonać animacji naszej postaci. Podczas przemiany jednego rysunku animacji w drugi nie jest możliwe dokładne wykrycie, czy nasz obiekt znajduje się poza warstwą planszy. My wykonaliśmy drugą nieanimowaną oraz niewidoczną postać, która umożliwiała nam kontrolę położenia. Takie rozwiązanie problemu kolizji nie jest idealne (inne sprawniejsze znajdziesz w dziale projekty) i potrzebuje dopracowania, ale to pozostawiam już wam…

Autor: Nakiel

Załączniki