SoftwareObliczanie wyniku

    Obliczanie wyniku

    Tym razem stworzysz w pełni funkcjonalny mechanizm punktacji, a także zadbasz o to, aby samolot reagował na wrogów. Większość z tych zadań zrealizujesz za pomocą odpowiednich reguł.

    Obliczanie wyniku

    Na płycie dołączonej do tego numeru znajdziesz plik z projektem gry zapisanym po wykonaniu czynności objaśnionych miesiąc temu. Jeżeli nie masz swojego pliku, możesz wgrać go w serwisie GameSalad.com, by zacząć zabawę z tworzeniem gier od tego odcinka kursu.

    Starcie z wrogiem i „game over”

    Uruchom program GameSalad Creator, przejdź do zakładki File w lewym górnym rogu i wybierz Open.... Następnie wskaż swój projekt z grą zapisany po ukończeniu poprzedniej części kursu lub załaduj plik z naszej płyty DVD.

    Krok 1

    W obszarze Library wejdź do zakładki Actors i wybierz głównego bohatera – Samolot. Teraz trzeba wprowadzić element logiki, z którego będzie wynikać, że kiedy bohater zderzy się z samolotami lecącymi z prawej lub lewej strony, gra musi się zakończyć.

    Krok 2

    W sekcji Rules (reguły) stwórz nową regułę, klikając przycisk +Rule, widoczny z prawej strony. Nazwij regułę Zderzenie, a następnie wybierz Any z menu rozwijanego obok słowa When. Wybierając Any, sprawisz, że reguła będzie miała zastosowanie wtedy, gdy którykolwiek z poniżej dodanych warunków zostanie spełniony.

    Obraz
    Obraz

    Krok 3

    Teraz w polu tekstowym type or drag in a conditio wpisz słowo Collision i wciśnij Enter, aby dodać warunek do reguły. Teraz zostaw zaznaczone pole actor or type, natomiast z menu obok wybierz WrógLewydoPrawej. Dzięki temu reguła będzie się aktywować, gdy Samolot zderzy się z wrogiem lecącym od lewej do prawej strony.

    Obraz

    Krok 4

    Dodaj jeszcze jeden warunek, wpisując w polu tekstowym Collision i wciskając Enter. Tym razem wybierz WrógPrawydoLewej. Od tej pory gdy główny samolot zderzy się z jednym z wrogów, reguła będzie działać. Ciągle jednak nie ustawiłeś, co dokładnie ma się wydarzyć, gdy samolot się zderzy – na razie stworzyłeś tylko część logiki gry.

    Obraz

    Krok 5

    W grze Plane Pong, kiedy samolot zderzy się z wrogiem, następuje koniec gry („game over”), wyświetlany jest obecny i najwyższy wynik, jak również pojawia się przycisk służący do uruchomienia gry ponownie. Wszystkie te informacje pojawiają się na nowej scenie o nazwie Game Over. Trzeba więc stworzyć taką scenę! W tym celu przejdź do zakładki Scenes w obszarze Library i kliknij przycisk +, aby dodać nową scenę, którą nazwiesz Game Over.

    Obraz

    Krok 6

    Teraz możesz skonfigurować regułę Zderzenie, w której podasz, że kiedy samolot zderzy się z wrogiem (polecenie When), to należy wyświetlić scenę Game Over (pole > do widoczne w regule). Do pola > do dodaj zatem zachowanie o nazwie Change Scene (zmiana sceny), które znajdziesz w zakładce Behaviors (zachowania).

    Obraz

    Krok 7

    W Change Scene, w polu go to (przejdź do), wybierz scenę Game Over, a obok zaznacz No ad, aby na tej scenie nie wyświetlały się reklamy.

    Obraz

    Krok 8

    Wciśnij przycisk Play, aby sprawdzić, czy reguła działa poprawnie. Kiedy samolot się zderzy, powinieneś zobaczyć pustą (czarną) scenę. Właśnie tak wygląda na razie scena Game Over, ponieważ nic do niej jeszcze nie dodałeś. W kolejnych częściach poradnika wyjaśnimy, jak wstawić tam odpowiednie grafiki i informacje, w tym tę o najlepszym wyniku. Zapisz zmiany i przejdź do następnego kroku.

    Tworzenie systemu punktacji

    Pora na stworzenie systemu punktacji. Kiedy samolot zbierze monetę, powinien zostać doliczony 1 punkt. Do czasu, aż samolot nie zderzy się z wrogiem, punkty powinny się zliczać i być przechowywane w pamięci gry.

    Krok 1

    Aby stworzyć punktację, trzeba dodać nowy atrybut do samej gry. W tym celu przejdź do zakładki Game w obszarze Attributes i wciśnij przycisk +, aby dodać nowy atrybut. Wybierz atrybut typu Index, ponieważ będzie on przechowywał (indeksował) dane o zdobytym wyniku.

    Obraz

    Krok 2

    Nowo utworzony atrybut możesz teraz nazwać Wynik. Pozostaw jego wartość na poziomie 0, ponieważ taki właśnie będzie wynik, gdy zaczniesz grać.

    Krok 3

    Przejdź do zakładki Actors i zaznacz bohatera o nazwie Moneta. Przejdź do zakładki z regułami – zobaczysz tam stworzoną we wcześniejszych odcinkach regułę Reakcja monety. W regule jest już dodane jedno zachowanie o nazwie Change Attribute. Dodaj dokładnie takie samo zachowanie poniżej i wybierz w polu set: Attributes, Game i Wynik. W polu to wskaż Attributes, Game, Wynik i w górnym polu dodaj jeszcze +1. Następnie wciśnij zielony ptaszek, aby zapisać to zachowanie. Teraz gdy samolot zbierze monetę, do wyniku zostanie dodany 1 punkt (+1).

    Obraz

    Krok 4

    Jak sprawdzić, czy punktacja rzeczywiście będzie się naliczać? Udaj się do zakładki Actors i stwórz nowego bohatera – nazwij go Punkty. Następnie w obszarze Attributes w zakładce Actor wskaż kolor Color i zmień go na zielony.

    Obraz

    Krok 5

    Kolejno przeciągnij bohatera Punkty na scenę gry, umieszczając go w lewym górnym rogu. Teraz w polu z regułami dla tego bohatera przeciągnij zachowanie o nazwie Display Text (wyświetlaj tekst). W polu <display> wybierz Attributes, Game i Wynik. Wciśnij Play i przekonaj się, że punkty są dodawane i wyświetlane.

    Obraz

    Krok 6

    Pojawi się pierwszy „bug” w grze, czyli błąd najczęściej wynikający z niedopatrzenia twórcy. We wcześniejszych lekcjach stworzyłeś mechanizm działania monet (punktów) w taki sposób, że po zebraniu zmienia się ich kolor na niewidoczny, ale same monety ciągle znajdują się na planszy. Z tego powodu jeśli samolot znajduje się np. w górnej części, będzie on stale zbierał monety – te bowiem wydają się niewidoczne, ale w rzeczywistości są na planszy i wynik będzie się powiększał. Trzeba to zmienić w taki sposób, aby samolot zdobywał punkt tylko wtedy, gdy zbierze monetę, która faktycznie wyświetla się na planszy.

    Krok 7

    W jaki sposób naprawić ten błąd? Trzeba edytować regułę Reakcja monety bohatera Moneta. W jej polu tekstowym wpisz Attribute i dodaj nowy atrybut. W polu if wybierz Attributes, Moneta, Color i Alpha, natomiast w polu obok wybierz znak równości i wpisz wartość 1. Teraz reguła będzie działać tylko wtedy, gdy samolot zbierze monetę, która jest rzeczywiście widoczna na planszy. Wciśnij Play, a zobaczysz, że system punktacji działa już prawidłowo. Zapisz zmiany.

    Obraz

    Przechowywanie najlepszego wyniku

    Choć system punktacji działa, kiedy tylko zresetujesz grę, wyświetlany wynik wynosi 0, nawet jeśli w ostatniej rundzie zdobyłeś 10 czy 20 punktów. Można jednak stworzyć mechanizm zapisywania najwyższego wyniku, by był on stale wyświetlany w trakcie rozgrywki. Równocześnie trzeba się upewnić, że za każdym razem, gdy gra będzie uruchamiana, wynik na początku rundy będzie równał się zeru. Od czego zacząć?

    Krok 1

    Stwórz nowego bohatera w zakładce Actors i nazwij go Zasady rundy. Możesz zmienić jego kolor np. na niebieski i przeciągnąć go na planszę, ale poza obszarem gry (poza białą ramką). Następnie dodaj zachowanie do tego bohatera o nazwie Change Attribute. Zwróć uwagę, że dodajesz zachowanie bezpośrednio do bohatera, a nie tworzysz regułę, przez co dane zachowanie będzie aktywować się natychmiast po uruchomieniu gry, jeśli tylko na planszy (lub poza nią) znajduje się bohater Zasady rundy.

    Obraz

    Krok 2

    W zachowaniu Change Attribute, w polu set wybierz Attributes, Game i Wynik, a w polu to wpisz 0. Od tej pory wynik gry na początku zawsze będzie wynosił 0, więc nigdy nie dojdzie do niespodziewanego błędu (te zdarzają się w każdym kreatorze gier, również w GameSalad!).

    Obraz

    Krok 3

    Podstawowa punktacja jest już całkowicie gotowa. Teraz stworzysz regułę w bohaterze Zasady rundy, która będzie odpowiadać za zapisywanie i wyświetlanie najwyższego uzyskanego wyniku. Wejdź do sekcji reguł bohatera Zasady rundy i stwórz nową regułę. Nazwij ją Topowy wynik. Teraz w polu tekstowym reguły wpisz Attribute i wciśnij Enter.

    Obraz

    Krok 4

    W nowo utworzonym atrybucie w polu if wybierz Attributes, Game, Wynik. Następnie zmień znak równości na „większy niż” (>) i obok wpisz 0.

    Obraz

    Krok 5

    W obszarze Attributes w zakładce Game stwórz nowy atrybut, klikając przycisk + i wybierając Index. Nazwij go Topowy wynik i pozostaw wartość 0. Następnie przejdź z powrotem do reguły z b<Zasady rundy i zmień wartość 0 na Attributes, Game i Topowy wynik.

    Obraz

    Krok 6

    Teraz dodaj zachowanie Change Attribute do reguły Topowy wynik, ale do jej sekcji do. W polu set wybierz Topowy wynik, a w polu toWynik. Reguła będzie działać w następujący sposób: jeśli wynik jest wyższy niż wynik topowy, to wtedy następuje zmiana wyniku topowego na wynik aktualnej rozgrywki. To sprawi, że zawsze będzie zapisywał się najwyższy osiągnięty wynik.

    Obraz

    Krok 7

    Stwórz teraz nowego bohatera i nazwij go Topowy wynik. Przeciągnij do jego obszaru reguł zachowanie Display Text (wyświetlaj tekst) i wybierz w polu <display> kolejno Attributes, Game i Topowy wynik. Przeciągnij teraz bohatera Topowy wynik na planszę gry i umieść go w prawym górnym rogu.

    Obraz

    Krok 8

    Zanim wciśniesz przycisk Play, aby zobaczyć, jak zachowuje się Topowy wynik, trzeba jeszcze dodać funkcję zapisywania najwyższego wyniku, aby ten zawsze znajdował się w pamięci gry. W tym celu przejdź do bohatera Zasady rundy i dodaj do jego obszaru reguł zachowanie o nazwie Save Attribute, umieszczając je w polu do z reguły Topowy wynik, zaraz pod poprzednio dodanym Change Attribute.

    Krok 9

    Teraz w polu save wybierz Attributes>, Game, Topowy wynik, a obok w as wpisz Topowy wynik (taką nazwę będzie miał zapisywany wynik). Dodatkowo dodaj licznik nad zachowaniem Save Attribute – przeciągnij zachowanie Timer i umieść je pomiędzy Change Attribute a Save Attribute.

    Obraz

    Krok 10

    W zachowaniu Timer zmień pierwsze pole na After (domyślnie jest „Every”), by zapisywanie wyniku odbywało się po upływie 0,03 sekundy (wpisz 0.03 w polu obok). Zaznacz pole Run to Completion, aby zachowanie było realizowane zawsze do końca i nic nie mogło go przerwać.

    Obraz

    Krok 11

    Stworzyłeś już funkcję zapisywania wyników, ale trzeba jeszcze dodać ładowanie wyników, aby najwyższy wynik wyświetlał się za każdym razem, gdy uruchomisz grę Plane Pong. Aby dodać funkcję wczytywania, stwórz nowego bohatera i nazwij go Wgrywanie wyniku. Przeciągnij go na planszę, ale umieść poza widocznym obszarem. Następnie w jego obszarze reguł dodaj zachowanie Load Attribute. W polu from wpisz Topowy wynik, a w load wybierz Attributes, Game i Topowy wynik.

    Obraz

    Krok 12

    Wciśnij Play i zobacz, jak zachowuje się gra. Wynik jest liczony za każdym razem, a najwyższy wynik jest zapisywany i przechowywany w pamięci. Dodatkowo samolot reaguje na zderzanie się z wrogami.

    Wybrane dla Ciebie