Gra 2D, część 8: Dobrze mieć wybór... poziomu
25.08.2010 - Marcin Milewski
![]() ![]() Poziom ukończony? Idziemy do następnego! Ale... dlaczego ma to następować automatycznie? Weźmy sprawy w swoje ręce i zdecydujmy, który poziom jako następny chcemy odwiedzić. Odświeżymy też grafikę, żeby gra była przyjemnością. Poprzedni artykuł - Diabeł tkwi w szczegółach Następny artykuł - Efektowne przejścia między poziomami Poniżej możemy zobaczyć efekt prac, które wykonamy w tym artykule:
Animacja wersji końcowej gry.
Czym będziemy się zajmować?Celem tego artykułu jest przedstawienie sposobu realizacji prostego i wygodnego systemu wyboru poziomu. Określenie kolejnego etapu gry będzie następowało w sposób nieliniowy. Oznacza to, że gracz po przejściu poziomu będzie mógł wybrać kolejny, spośród kilku dostępnych. Inną możliwością będzie cofnięcie się do już rozegranych poziomów. Przykładowe połączenia prezentuje poniższy obrazek:
Graf połączeń między poziomami. Istnienie krawędzi oznacza możliwość przejścia między poziomami.
Pobierz zatem początkowy kod źródłowy do tego artykułu i zaczynamy! Jak to będzie działać?Wybieranie poziomów w naszej grze będzie przypominało poruszanie się po grafie połączeń. Wierzchołkami (zwanymi także węzłami) będą u nas poziomy gry, a krawędziami - połączenia między nimi. Oznacza to, że stojąc w którymś z węzłów możemy przemieścić się do innego, z którym jest on połączony bezpośrednią krawędzią. Znajdując się w pewnym wierzchołku będziemy mogli nacisnąć Enter wyrażając w ten sposób chęć zagrania w poziom przypisany do danego węzła. Zastanówmy się teraz, jakie informacje potrzebujemy przechowywać. Najważniejsze z nich to:
Uwagi dotyczące rozwiązaniaOto kilka uwag, dzięki którym implementowane rozwiązanie będzie nie tylko proste, ale także przyjemne w użytkowaniu:
Przyjrzyjmy się bliżej ostatniemu z punktów. Aby go zrealizować, będziemy w klasie Game pamiętać wskaźnik na stan LevelChoiceScreen. Dzięki temu, kiedy uznamy poziom za zakończony, nie będziemy tworzyć nowego stanu LevelChoiceScreen, lecz do m_next_app_state przypiszemy właśnie ten zapamiętany. Wymaga to od nas dodania metody BindLevelChoiceScreen oraz pola m_level_choice_screen do klasy Game. Dodany kod jest bardzo krótki:
|
Copyright © 2008-2010 Wrocławski Portal Informatyczny
design: rafalpolito.com