Jesteśmy już w drugiej części artykułu poświęconego platformówce. Tym razem zrobimy, aby nasza postać ruszała nogami podczas ruchu. Czerwoną kulkę zamienimy na psa. Zmienimy grafikę terenu, dodamy losowy wygląd niektórych kratek, a na koniec dodamy ekran na uruchomienie gry i jej zakończenie. Nasza postać zginie po spadnięciu w przepaść.

1.Animacja postaci »
2.Rozszerzamy grafikę »
3.Ekrany gry »

1. .: Animacja postaci :. 

Nasza postać poruszając się powinna ruszać nogami, aby to zrobić będziemy potrzebować min. dwóch grafików tej postaci. Na każdej o innym ułożeniu nóg. Przykładowe grafiki możesz znaleźć w dziale o tej samej nazwie – Grafiki. My użyjemy dwa rysunki psa

Po ich połączeniu powstaje animacja ruchu. Zastępujemy stare grafiki w pliku vtd nowymi.
Spróbujmy to umieścić teraz w kodzie. Przechodzimy do znanej nam już procedury Idz w unicie plikTGracz i zapisujemy:

Na początku zapisaliśmy dwa warunki animacji chodzenia. Po pierwsze, jednostka musi się ruszać (kierunekX 0), po drugie nie może być w trakcie skoku(RuchY =0). Jeśli te warunki zostają spełnione to sprawdzamy w jakim przedziale jest wartość zmiennej AnimStan. W obiekcie TGracz dodajemy dwie zmienne :

Pierwsza określa aktualną klatkę animacji ruchu. W naszym przypadku 1 lub 2. Druga zaś, opóźnia nam czas przechodzenia jednej klatki w drugą. W kodzie wyżej zapisaliśmy, że jeżeli wartość zmiennej AnimStan będzie w przedziale 1..10 i 11.20 to odpowiednio do tego ma ustawić numer klatki animacji gracza. Po co to ? Jest nam to potrzebne to opóźnienia przechodzenia klatek, ponieważ FPS gry jest bardzo wysokie zmiany grafiki animacji byłyby niemal nie widoczne lub bardzo szybkie. Po poleceniu else ustawiamy grafikę w czasie skoku na tą z nogami rozstawionymi, a w czasie spoczynku odwrotnie.

2. .: Rozszerzamy grafikę :. 

Tak jak widać na rysunku wymieniłem grafikę na trochę ciekawszą. W poprzednim tutorialu przydzieliliśmy każdemu polu jedną grafikę, tym razem to rozszerzymy i takim elementom jak trawa czy skały przydzielimy po cztery grafiki, z których przy uruchamianiu będzie losowo przypisywał jedną dla każdego pola. Dzięki temu gra nie będzie, aż tak jednolita graficznie. Niżej są umieszczone wykorzystane grafiki podzielone na klatki:

Dobrze, wiemy już jak to działa. Nadszedł czas, aby wykorzystać tę technikę w grze. Najpierw utwórzmy tablicę, która będzie zawierać numer klatki przypisany danemu polu. W tym celu wejdźmy do unitu Zmienne i dopiszmy :

Przechodzimy teraz do unitu plikTGra, szukamy procedury Tworz i zadeklarujmy w niej dwie zmienne, które będą nam potrzebne podczas generowania tablicy z numerami klatek :

W ten sposób utworzyliśmy naszą tablicę. Funkcja random losuje nam liczbę z przedziału 0..3.

Kolejnym, a zarazem ostatnim krokiem jest nakazanie funkcji rysującej rysowanie klatek pól według tablicy. Czynimy to w prosty sposób, zamieniamy w procedurze RysujPlansze numer klatki 0 na numer z tablicy. Procedura po przebudowie powinna wyglądać tak:

Zapraszam do następnej części.

3. .: Ekrany gry :. 

Każda gra składa się z oprócz części do grania z innych ekranów takich jak ekran powitalny, menu gry, ekran po przejściu rundy czy po straceniu życia. My podzielimy grę na trzy ekrany.

Pierwszy to ekran powitalny, drugi to część do grania, a trzeci na zakończenie gry. Przejdźmy do unitu Zmienne i dodajmy odpowiadające im stałe:

oraz jedną zmienną, która bedzie przechowywała numer aktualnego ekranu:

Mamy już zadeklarowane to co trzeba. Teraz ustawmy, aby podczas uruchamiania gry wybrany był ekran pierwszy. W tym celu przejdźmy do OnCreate naszego projektu i dopiszmy

Następnie musimy zrobić, aby na ekranie pojawiał się dany ekran. Poszukajmy procedury ZegarRender, przebudujmy ją na podaną poniżej:

Nie ma tu wielkiej filozofii, to co jest wyświetlane na ekranie zależy od wartości zmiennej ekran. Jak widać w tej procedurze będą wykonywane różne czynności do kliknięciu przycisku Enter, w przypadku ekranu pierwszego będzie on uruchamiał grę, a w przypadku trzeciego wychodził z gry. Aby obsłużyć te czynności przejdźmy do procedury FormKeyPress, a w niej dopiszmy :

Sądzę, że nie wymaga ona komentarza. Podobnie jak wyżej wykonywane są różne polecenia zależnie od wartości zmiennej ekran Zostało nam jeszcze tylko wykonanie, aby jeśli postać grające spadnie z terenu pojawiał się ekran kończący grę. W tym celu przejdźmy jeszcze raz do unitu plikTGracz, poszukajmy procedurę Oddech, a na jej końcu dopiszmy taką linijkę

Oznacza ona, że jeśli gracz będzie znajdował się poniżej terenu gry ( 500-nego piksela), to ma się pojawić ekran kończący grę.

Kończymy tę lekcję, mam nadzieję, że się nauczyliście czegoś nowego. Przypominam, że poszukuję redaktorów do nowych działów (DirectX, bazy danych, algorytmy,..), które pojawią się podczas nowej odsłony strony. Jeśli jesteś zainteresowany to proszę o kontakt.

Oczywiście to nie jest ostatnia część tego tutorialu, cdn..

Autor: Nakiel

Załączniki