Zadania praktyczne do samolotowej strzelanki Zadanie 1 By przystąpić do trudniejszych zadań musimy najpierw nauczyć się edytować sprajty w edytorze graficznym GameMakera. Sprawdź czy w folderze Resources masz plik 1945_sprites.bmp, który zawiera pełno różnych obrazków z samolotami i nie tylko, sklejonych w jedną całość. GameMaker oferuje narzędzia do łatwego wycinania i edytowania takich obrazków. Załóżmy, że chcemy dodać nowy niebieski samolot, który widać w środku obrazka (składa się on z 3 klatek). 1. Utwórz nowego sprajta (menu Resources, Create Sprite). 2. Nadaj mu nazwę np. spr_enemyblue lub inaczej. 3. Naciśnij na guzik Edit sprite, który otwiera edytor graficzny (trochę podobny do Painta) umożliwiający edycję sprajtów. 4. Z menu File wybierz opcję tworzenia paska z klatkami (Create from strip). 5. Znajdź i załaduj naszą paletę obrazków 1945_sprites.bmp. 6. Teraz najtrudniejsza część. Musimy uzupełnić pola po lewej stronie tak, aby zaznaczyły one dokładnie niebieski samolot. Po pierwsze wpisujemy: Chcemy mieć 3 obrazki, i wszystkie 3 mają być w rzędzie poziomym. 7. Każdy z tych obrazków ma rozmiary 32x32, więc zostawiamy je: 8. Chcemy żeby nasza kratka zaznaczenia przesunęła się o 5 kratek w prawo i 6 w dół. Dlatego uzupełniamy przesunięcia kratek następująco: 9. Kratki nadal nie będą dobrze leżały, bo cały obraz ma z brzegu ramkę o grubości 4 pikseli. Dlatego kratki musimy dodatkowo przesunąć o 4 piksele w prawo i 4 na dół. Uzupełniamy więc przesunięcie pikselowe:
10. Niestety nadal coś jest nie tak. Wszystkiemu są winne białe linie, które rozdzielają obrazki (gdyby ich nie było, to kratki byłyby ustawione idealnie). Musimy więc ustawić wartości poziomego i pionowego rozdzielania na 1: Wszystkie powyższe wartości można oczywiście próbować uzupełniać eksperymentalnie. Ważne żebyś rozumiał co oznaczają wszystkie pola. Kliknij OK by zakończyć. 11. Z wielkiego obrazu zostały wycięte 3 obrazki i umieszczone w edytorze. Niestety wymagają one poprawki, bo tło wokół samolotu jest niebieskie a musi być przezroczyste (żeby można było widzieć wodę i wyspy pod samolotem). Zmienimy więc tło na przezroczyste. Kliknij dwa razy na pierwszy obrazek. 12. W edytorze ustaw, by kolor miał nieprzezroczystość (Opacity) równą 0, co oznacza, że będzie kompletnie przezroczysty. Tryb kolorowania zmień z Blend (Mieszaj) na Replace (Zamieniaj), w ten sposób jeden kolor zamieni się na drugi. 13. Po lewej stronie, wybierz narzędzie wypełniania kolorem: i kliknij na skrawki niebieskiego tła wokół samolotu (możesz go powiększyć by lepiej widzieć te kawałki tła). Niebieskie tło zniknie. Tło samolotu będzie przezroczyste (przezroczyste tło jest przedstawione jako białoszara szachownica). 14. Kliknij na zieloną strzałkę w prawo, by edytować kolejną klatkę samolotu (z lekko zmienioną pozycją śmigła): Usuń niebieskie tło spod drugiej klatki. 15. Zrób to samo dla trzeciej klatki samolotu i naciśnij by zakończyć edytowanie. 16. W ten sposób mamy trzy ładnie zedytowane klatki samolotu: Możesz zaznaczyć opcję Show preview (Pokaż podgląd) bo zobaczyć czy śmigło ładnie się kręci i animacja samolotu jest OK. 17. Naciśnij zielony dziubek by zakończyć. Sprajt zostanie dodany i można go wykorzystać w grze (czy to zrobisz, będzie zależało od Ciebie).
Zadanie 2 By gra była bardziej interesująca dodamy do niej możliwość leczenia samolotu. Co jakiś czas będą pojawiały się apteczki zdrowia. Zadanie to zrobisz w dużej mierze samodzielnie. Oto co należy zrobić: 1. Dodaj sprajta apteczki. Możesz skorzystać z zestawu sprajtów tak jak w poprzednim zadaniu. Przykładowo ikonka samolotu tarczą może się nadać: Nie zapomnij o usunięciu niebieskiego tła. Możesz też ustawić punkt Origin na środek w sprajcie. 2. Dodaj obiekt na podstawie tego sprajta. W zdarzeniu tworzenia nadaj temu obiektowi odpowiednią prędkość w dół. Możesz umieścić jedną apteczkę w pokoju i zobaczyć czy będzie leciała na dół przy uruchomieniu gry. 3. A co się stanie gdy apteczka zleci na dół pokoju? Musi zostać usunięta. Dodaj odpowiedni test na współrzędne i odpowiednią akcję (usuwanie instancji). 4. A co się stanie gdy apteczka zderzy się z naszym samolotem? To znaczy, że udało nam się ją złapać. W zdarzeniu kolizji z samolotem musimy: usunąć instancję apteczki i ustawić życie na 100. Można też dodać jakiś dźwięk. Czy zrobisz to zdarzenie wewnątrz samolotu czy wewnątrz apteczki zależy od Ciebie. 5. Pozostaje jeszcze ustawienie pojawiania się apteczek co jakiś czas. Można to zrobić w obiekcie controller_enemy, który kontroluje pojawianie się wrogich samolotów (lub zrobić nowy obiekt np. controller_bonus). Pojawianie się apteczek będzie działało niemal zupełnie tak samo jak pojawianie się wrogich samolotów. Trzeba pobawić się w ustawianie odpowiednich alarmów. Możesz się też zastanowić nad zmianą działania apteczki. Zamiast ustawiać zawsze życie na 100, będzie dodawała do obecnego stanu zdrowia 20 punktów. Dzięki temu gra nie będzie taka łatwa. Musisz tutaj uważać, bo jeśli gracz ma 90 punktów zdrowia i zgarnie apteczkę to wyskoczy mu zdrowie ponad maksymalne 100 punktów. Trzeba więc zrobić test na zmienną health by wiedzieć czy nie dodajemy za dużo. Zadanie 3 Zadanie to ma na celu wprowadzenie kolejnego bonusa do gry, a mianowicie zwiększania prędkości. Na początek jednak zastanówmy się jak obsługiwać zmianę prędkości. Przyciskając klawisze, samolot przesuwa się o 4 piksele w lewo lub prawo, lub o 2 piksele w górę lub dół (możesz to sprawdzić w zdarzeniach naciskania strzałek w obiekcie obj_myplane). 1. Ustawmy w zdarzeniu tworzenia samolotu zmienną speed_bonus na 0. Zmienna ta będzie obsługiwała szybkość samolotu. 2. W każdym ze zdarzeń na naciskanie klawiszy strzałek dodaj (bądź odejmij) tą zmienną, by zwiększyć szybkość samolotu. Dla strzałki w lewo będzie to wyglądać tak:
A dla strzałki na dół tak: Już pewnie wiesz jak uzupełnić pozostałe strzałki. 3. Zapisz i odpal grę. Pewnie będzie działa tak samo, bo nasz speed_bonus jest równy 0. Przetestujemy co by się działo gdyby był równy 1 lub 2, lub jeszcze więcej: Za każdym razem musisz ręcznie zmieniać akcję ustawiania bonusa. Jaki byłby najlepszy bonus? 1? 2 czy 3? Pamiętaj, że zbyt duża szybkość powoduje, że samolot sprawia wrażenie lecenia do tyłu, choć w grach to może mało ważne ;) Ustaw bonus z powrotem na 0. Musimy zmianę bonusa ustawić tak, aby nastąpiła po wzięciu specjalnego obiektu z pokoju. Wykonaliśmy więc pierwsze 3 kroki, które miały za cel ustalenie jak w ogóle można obsługiwać zmianę szybkości za pomocą zmiennej. Pora na dodanie obiektów, które będą zmieniały tą zmienną. 4. Podobnie jak było z apteczką zdrowia, dodaj sprajta, a następnie obiekt dla bonusa przyśpieszania np. ten: Nadaj mu prędkość, obsługę znikania za ekranem. Dodaj kontrolę tego obiektu za pomocą controller_enemy (lub innego). 5. Apteczka w zderzeniu z samolotem zmieniała poziom życia i znikała. Nasz obiekt do zwiększania prędkości może działać na dwa sposoby: albo na stałe, albo na kilka/kilkanaście sekund. W tym zadaniu wybierzemy pierwszy sposób: bonus będzie na zawsze zwiększał szybkość o 1. Im więcej bonusów szybkości zbierzemy, tym szybciej będziemy latać. Dodaj w samolocie zdarzenie kolizji z bonusem szybkości. W zdarzeniu tym zniszcz instancje bonusa (ale nie naszego samolotu!) i dodaj do zmiennej speed_bonus wartość 1 (pamiętaj, że dodawanie odbywa się poprzez zaznaczenie Relative). A co by było, gdyby to zdarzenie (kolizję ) zrobić w bonusie a nie w samolocie? Pewnie nie działałoby zbyt dobrze, bo speed_bonus jest zmienną tylko wewnątrz samolotu. Inne obiekty jej nie poznają. Przetestuj grę!
Zadanie 4 Spróbuj teraz wprowadzić w życie drugie podejście do bonusa szybkości. Będzie ono nieco bardziej zbalansowane. W poprzednim podejściu jest ryzyko, że samolot rozwinie bardzo duże prędkości. Chcemy, aby bonus prędkości wynosił albo 0 (gdy nie zebraliśmy bonusa z planszy) albo 2 (jeśli zebraliśmy), ale tylko na 10 sekund (czyli 300 kroków). Co trzeba zmienić? Ustawienie bonusa nie będzie dodawało 1, tylko ustawiało go na 2 (musimy odznaczyć relative). Dodatkowo jako akcję musimy dodać alarm 1 ustawiony na 300. Następnie w samolocie dodajmy zdarzenie alarmu 1, które jako akcję ma ustawienie bonus prędkości z powrotem na zero. Czyli działa to tak: zbieramy bonus, prędkość się zwiększa a my ustawiamy budzik an 10 sekund. Gdy budzik zadzwoni po 10 sekundach to bonus prędkości ustawiamy z powrotem na 0. Zadanie 5 Spróbuj samodzielnie stworzyć i dodać bonus dodający jedno nowe życie. Musi się on pojawiać rzadko bo jest dość mocny. Zadanie 6 Dodaj bonus do szybkiego strzelania tzn. samolot będzie strzelał w krótszych odstępach. Zadanie 7 Wymyśl i dodaj bonus do nowych broni np. strzelania na boki, do tyłu lub na ukos. Wykorzystaj sprajty w katalogu Resources.