Kurs: Pierwsza gra w programie Game Maker 8



Podobne dokumenty
Kurs: Pierwsza gra w programie Game Maker 8

I Tworzenie prezentacji za pomocą szablonu w programie Power-Point. 1. Wybieramy z górnego menu polecenie Nowy a następnie Utwórz z szablonu

Tworzenie prezentacji w MS PowerPoint

Musimy do naszej gry załadować materiały. Są to trzy obrazki:

DOKUMENTY I GRAFIKI. Zarządzanie zawartością Tworzenie folderu Dodawanie dokumentu / grafiki Wersje plików... 7

Edytor tekstu MS Word podstawy

Komputery I (2) Panel sterowania:

netster instrukcja obsługi

5.4. Tworzymy formularze

Edytor tekstu OpenOffice Writer Podstawy

Dodanie nowej formy do projektu polega na:

6.4. Efekty specjalne

Kurs ECDL Moduł 3. Nagłówek i stopka Microsoft Office Word Autor: Piotr Dębowski. piotr.debowski@konto.pl

Gimp - poznaj jego możliwości!

Podstawy WINDOWS 9x, 2000, XP

Prezentacja multimedialna MS PowerPoint 2010 (podstawy)

Cykl lekcji informatyki w klasie IV szkoły podstawowej. Wstęp

Edytor tekstu OpenOffice Writer Podstawy

Projektowanie Skinów w programie Taboret2

RYSUNEK TECHNICZNY I GEOMETRIA WYKREŚLNA INSTRUKCJA DOM Z DRABINĄ I KOMINEM W 2D

FINCH PONG. Realizator: Partner: Patronat:

Co to jest arkusz kalkulacyjny?

Papyrus. Papyrus. Katedra Cybernetyki i Robotyki Politechnika Wrocławska

Spis treści. Rozdział 3. Podstawowe operacje na plikach...49 System plików Konsola Zapisanie rezultatu do pliku... 50

Rys.1. Uaktywnianie pasków narzędzi. żądanych pasków narzędziowych. a) Modelowanie części: (standardowo widoczny po prawej stronie Przeglądarki MDT)

1.3. Tworzenie obiektów 3D. Rysunek 1.2. Dostępne opcje podręcznego menu dla zaznaczonego obiektu

Expo Composer Garncarska Szczecin tel.: info@doittechnology.pl. Dokumentacja użytkownika

Nr: 15. Tytuł: Kancelaris w systemie Windows 8 i Windows 8.1. Data modyfikacji:

ADMINISTRACJA STRONĄ EMPIRE MUSIC

Przed rozpoczęciem pracy otwórz nowy plik (Ctrl +N) wykorzystując szablon acadiso.dwt

CZĘŚĆ A PIERWSZE KROKI Z KOMPUTEREM

Jak zrobić klasyczny button na stronę www? (tutorial) w programie GIMP

Operacje na Wielu Arkuszach

Jeszcze raz więc powtarzam - wymieramy NIE i przechodzimy do kolejnego obrazka.

5.4. Efekty specjalne

Edytor tekstu MS Office Word

Podstawy programowania, Poniedziałek , 8-10 Projekt, część 1

e-wsparcie Barbara Muszko Aktualizacja Twojej witryny internetowej tak prosta, jak obsługa Worda

Tablet bezprzewodowy QIT30. Oprogramowanie Macro Key Manager

Skalowanie i ustawianie arkuszy/układów wydruku w AutoCAD autor: M. Motylewicz, 2012

Compas 2026 Vision Instrukcja obsługi do wersji 1.07

Przypisy i przypisy końcowe

Kodu z klasą. Skarb w zatrutej wodzie, cz. 2. Scenariusz 6

Maskowanie i selekcja

programu Neofon instrukcja obsługi Spis treści

KROK 17 i 18. Cel: Tworzymy oddzielne okno - O autorze. 1. Otwórz swój program. 2. Skompiluj i sprawdź, czy działa prawidłowo.

Wstęp. Skąd pobrać program do obsługi FTP? Logowanie

2017 Electronics For Imaging, Inc. Informacje zawarte w niniejszej publikacji podlegają postanowieniom opisanym w dokumencie Uwagi prawne dotyczącym

1. Dockbar, CMS + wyszukiwarka aplikacji Dodawanie portletów Widok zawartości stron... 3

1. Umieść kursor w miejscu, w którym ma być wprowadzony ozdobny napis. 2. Na karcie Wstawianie w grupie Tekst kliknij przycisk WordArt.

Techniki wstawiania tabel

Podstawy tworzenia prezentacji w programie Microsoft PowerPoint 2007

Ustawienia ogólne. Ustawienia okólne są dostępne w panelu głównym programu System Sensor, po kliknięciu ikony

Jak przygotować pokaz album w Logomocji

Zalogowanie generuje nowe menu: okno do wysyłania plików oraz dodatkowe menu Pomoc

Unity 3D - pierwsze skrypty

edycja szablonu za pomocą programu NVU

Ustalanie dostępu do plików - Windows XP Home/Professional

Edycja strony: W edycję danej strony wchodzimy poprzez naciśnięcie opcji

Podręcznik użytkownika programu. Ceremonia 3.1

5.2. Pierwsze kroki z bazami danych

Przygotuj za pomocą tabulatorów element formularza. Utwórz pole tekstowe i sformatuj tak, aby dół napisu w polu był dokładnie nad kropkami.

Modelowanie obiektowe - Ćw. 1.

Unity 3D - własny ekran startowy i menu gry

DODAJEMY TREŚĆ DO STRONY

Lekcja 5 - PROGRAMOWANIE NOWICJUSZ

Konfiguracja szablonu i wystawienie pierwszej aukcji allegro

Strzelanka dla dwóch graczy

PORADNIK PRZEMALOWANIA MODELI cz.2

Instrukcja ręcznej konfiguracji połączenia z Internetem przez. modem ED77 w systemie Windows XP

Formy dialogowe w środowisku Gnome

Instrukcja obsługi programu MPJ6

Zadanie Wstaw wykres i dokonaj jego edycji dla poniższych danych. 8a 3,54 8b 5,25 8c 4,21 8d 4,85

Podstawy technologii cyfrowej i komputerów

Unity 2D - prosta gra

Dodatki. Dodatek A Octave. Język maszyn

DODAWANIE ARTYKUŁÓW DO STRONY INTERNETOWEJ

Dlaczego stosujemy edytory tekstu?

1. Wprowadzenie. 1.1 Uruchamianie AutoCAD-a Ustawienia wprowadzające. Auto CAD Aby uruchomić AutoCada 14 kliknij ikonę

Ćwiczenie 1: Pierwsze kroki

Rozdział II. Praca z systemem operacyjnym

darmowe zdjęcia - allegro.pl

ToonDoo Maker tworzenie pojedynczej sceny komiksowej

Oficyna Wydawnicza UNIMEX ebook z zabezpieczeniami DRM

Nawigacja po długim dokumencie może być męcząca, dlatego warto poznać następujące skróty klawiszowe

Obsługa mapy przy użyciu narzędzi nawigacji

Jak zainstalować i skonfigurować komunikator MIRANDA, aby wyglądał i funkcjonował jak Gadu Gadu Tutorial by t800.

Informatyka II. Laboratorium Aplikacja okienkowa

Szkolenie dla nauczycieli SP10 w DG Operacje na plikach i folderach, obsługa edytora tekstu ABC. komputera dla nauczyciela. Materiały pomocnicze

Jeżeli pole Krawędź będzie zaznaczone uzyskamy obramowanie w całej wstawianej tabeli

WINDOWS XP PRO WINDOWS XP PRO

Zakład Systemów Rozproszonych

Instrukcja obsługi systemu Sky CMS

Klawiatura. Klawisze specjalne. Klawisze specjalne. klawisze funkcyjne. Klawisze. klawisze numeryczne. sterowania kursorem. klawisze alfanumeryczne

Arkusz kalkulacyjny EXCEL

Makropolecenia w PowerPoint Spis treści

Kalipso wywiady środowiskowe

Szybka instrukcja tworzenia testów dla E-SPRAWDZIAN-2 programem e_kreator_2

Kurs obsługi systemu CMS. Prawie wszystkie treści wyświetlające się na stronie są zlokalizowane w dziale artykuły.

I. Program II. Opis głównych funkcji programu... 19

Transkrypt:

AREKADIUSZ GROUP PRESENTS Kurs: Pierwsza gra w programie Game Maker 8 Arekadiusz Pierwsze menu, wróg i strzelanie, panel, wyjaśnienie funkcji ustawień gry to tylko kilka z najciekawszych zagadnień poruszonych w poradniku. Zachęcam do przeczytania! Strona 1

Spis treści Wstęp.... 3 9. Wrogowie.. 3 10. Strzelanie... 4 11. Panel i czas. 6 12. Ustawienia gry (Global Game Settings)... 7 13. Zapisywanie i wczytywanie gry... 9 14. Menu.. 9 Uruchamianie i eksportowanie. 13 Koniec. 13 Strona 2

W Kurs: Pierwsza gra w programie Game Maker 8 itam w drugiej części mojego poradnika dotyczącego tworzenia pierwszej gry przygodowej w programie Game Maker 8.0. Pisząc ten poradnik zakładam że znasz już podstawy języka GML oraz umiesz już wykonywać podstawowe czynności w programie Game Maker (GM). Niektóre będą omówione bardziej szczegółowo inne na razie nie. Wszystkie instrukcje będą podawane jako polecenia w kodzie. Nie będziemy korzystali z klocków dostępnych w programie. Ten poradnik będzie tłumaczony w Game Makerze 8.0. Autor nie odpowiada za ewentualne zmiany w innych wersjach, które uniemożliwią wykonanie czynności zamieszczonych w poradniku. Do wykonania pierwszej gry wystarczy wersja Lite (darmowa). Autor nie ponosi także odpowiedzialności za ewentualne błędy, brak możliwości odczytu przykładu oraz awarię sprzętu czy oprogramowania w skutek niepoprawnego użytkowania lub wykonywania czynności umieszczonych w tym poradniku. Kontynuujmy więc tworzenie naszej gry. Pierwszą część tego kursu można znaleźć pod adresem http:///index.php/kurs-pierwsza-gra-game-maker-8. P 9. Wrogowie roponuję teraz dodanie jakiś postaci przeciwnych naszej, czyli wrogów. Aby to zrobić tworzymy nowy sprite i rysujemy lub wgrywamy grafikę. Ja ze względu braku czasu pozwolę sobie wykorzystać grafiki dołączone do GMa. Z tego samego powodu zrobię tylko jednego wroga (nazwę go spr_wrog), ale zalecam stworzenie większej ilości przeciwników aby urozmaicić rozgrywkę. Można też dodać jakąś muzykę która będzie odtwarzała się przy spotkaniu z wrogiem. Następnie tworzymy nowy obiekt o podobnej nazwie i ustawiamy jako sprite wgrany przed momentem rysunek. Dodatkowo tworzymy także obiekt o_odbicie i rysujemy mu jakiś sprite np. kwadracik 16 x 16 w jakimś widocznym kolorze. Po co taki obiekt? O tym za chwilę. Teraz zajmiemy się wrogiem. Klikamy dwukrotnie na obiekt o_wrog i dodajemy event Create. Wstawiamy bloczek na kod, otwieramy go i piszemy poniższe polecenie: 1. action_move("000101000",5); Dzięki niemu wróg po utworzeniu będzie poruszał się we wskazanym kierunku (000101000) i prędkości (5). Powyższy kod kierunku porusza postacią w prawo i lewo. Nie będę tutaj podawał innych kierunków, gdyż na razie nie będą nam potrzebne. Jeżeli chcesz je poznać polecam użycie programu ActionDecoder (można go znaleźć pod tym adresem) autorstwa Xceptiona z serwisu GMCLAN.org. Porada! Nie wiesz o co chodzi? Przeczytaj część I tego poradnika dostępną pod tym adresem. Dodajemy teraz do tego samego obiektu event Collision > o_odbicie. Wstawiamy miejsce na kod i wpisujemy: 1. move_bounce_all(false); Strona 3

Powyższe polecenie powoduje odbicie wroga od obiektu o_odbicie. Jak już niektórzy się domyślili ten obiekt będzie wyznacznikiem tego, dokąd może poruszać się wróg. Przechodzimy jeszcze na chwilkę do obiektu o_odbicie i odznaczamy opcję Visible. Po odznaczeniu tej opcji rysunek danego obiektu będzie widoczny tylko w edytorze plansz, a podczas gry już nie. W naszym przypadku jest to idealne rozwiązanie bo po co gracz miał by widzieć miejsce do którego dochodzi wróg? Ani to ładne, ani konieczne, tylko bez potrzeby rozpraszało by uwagę graczy. Pozostało jeszcze ustalić akcje która ma się dziać po zderzeniu bohatera z wrogiem. Przechodzimy do obiektu o_bohater, dodajemy event Collision > o_wrog i wpisujemy: 1. sound_play(sou_wrog); 2. lives-=1; 3. x=xstart; 4. y=ystart; Powyższe polecenia każdy na pewno już zna. Jeżeli nie proszę wrócić do poprzedniej części poradnika gdzie wszystko jest dokładnie omówione i opisane. J 10. Strzelanie est na pewno wiele sposobów na zrobienie strzelania. Ja używam takiego jak ten do moich gierek i wydaje mi się że jest on prosty i zrozumiały. Zaczynamy! Najpierw w Create o_bohatera dopiszmy jeszcze jedną linijkę: 1. kier=1; Będzie to zmienna która będzie ustalała kierunek pocisku. Przechodzimy do eventu Left i na początku lub na końcu wstawionego już tam kodu dopisujemy: 1. kier=0; Pozostał jeszcze event Right gdzie wpisujemy: Strona 4

1. kier=1; Jak już może niektórzy zdążyli zauważyć zmienna kier przechowuje kierunek w którym obecnie porusza się gracz. 0 lewo, 1 prawo. Domyślną wartością (Create) jest wartość 1, ponieważ na starcie bohater ustawiony jest w prawo. Gdyby był ustawiony w lewo należy zmienić wartość zmiennej kier w Create na 0. Tworzymy teraz nowy sprite pod nazwą spr_strzal lub spr_pocisk. Rysujemy mu rysunek. U mnie nabój czy też strzał ma wielkość 8x8. Następnie tworzymy obiekt o nazwie o_strzal (lub o_pocisk). Powracamy jeszcze na chwilę do obiektu o_bohater, dodajemy event Key Press <Ctrl> (można wybrać inny, dowolny klawisz będzie to strzał), dodajemy klocek na kod i wpisujemy: 1. if kier=0 2. instance_create(x,y+16,o_strzal); 3. else 4. if kier=1 5. instance_create(x+40,y+16,o_strzal); Myślę że warunek if każdy zna. W pierwszej linijce sprawdzane jest czy kierunek jest równy 0 (lewo) jeżeli tak jest tworzy pocisk po lewej stronie bohatera. Jeżeli w 4-tej linii kier wynosi 1 (prawo) wtedy strzał jest tworzony po prawej stronie bohatera. Polecenie else pozwala grze wybrać tylko jedną z tych opcji. Teraz otwieramy obiekt o_strzal dodajemy event Create (podczas tworzenia), wstawiamy miejsce na kod i piszemy tak: 1. if o_bohater.kier=0 2. action_move("000100000",4); 3. else 4. if o_bohater.kier=1 5. action_move("000001000",4); 6. alarm[0]=2*room_speed; Teraz jest podobnie do poprzedniego kodu. Najpierw sprawdzane jest w którym kierunku porusza się bohater. Pewnie zastanawiasz się dlaczego przed zmienną kier jest jeszcze o_bohater.. A no dlatego że zmienna kier nie jest zmienną globalną więc jest widoczna tylko w obiekcie w którym została stworzona. Chyba że, tak jak w tym przypadku, odwołamy się do danego obiektu podając jego nazwę. No więc jeżeli gracz porusza się w lewo nasz pocisk też porusza się w lewo z prędkością 4, a jeżeli postać w prawo to strzał też w prawo (prędkość 4). W 6-tej linii uruchamiany jest alarm na czas 2 sekund. Uwaga! Gdybyśmy nie dodali *room_speed alarm wykonałby się po dwóch milisekundach. Wspomniana funkcja mnoży podany czas przez prędkość gry (roomu). Dzięki temu uzyskiwane są sekundy. W naszym przypadku podany czas to czas lotu pocisku. Po podanym czasie pocisk usunie się, aby nie leciał przez całą planszę. W kwadratowym nawiasie podany jest numer alarmu. Wskazówka! Alarm to prosta w użyciu funkcja która po upłynięciu danego czasu wykonuje podane przez programistę czynności. Po ustawieniu czasu po którym alarm ma się wykonać polecenia do wykonania podaje się w evencie Alarm > Alarm 0 (lub 1 lub 2 itd.). Można ich dodać aż 12. Ciekawostka! Zmienne globalne to zmienne które mogą być inicjowane przez dowolny obiekt a odczytywany przez każdy w grze. Każda wspomniana zmienna posiada przedrostek global. (np. global.zmienna1 ). Strona 5

Teraz, ciągle w o_strzal, dodajemy event Alarm > Alarm 0. Wstawiamy klocek na kod, otwieramy go i wpisujemy: 1. instance_destroy(); Ta komenda jest już pewnie wielu osobom znana jest to po prostu kasowanie obiektu. Ciekawostka! Aby skasować inny obiekt wystarczy przed powyższym poleceniem dopisać: with(nazwa_obiektu). W ten sam sposób można np. ustawić inną postać na start stosując polecenie with na początku i biorąc x=xstart; i y=ystart; w nawias klamrowy { }. Pozostało nam już tylko zrobić możliwość zastrzelenia wroga. W tym celu przechodzimy do obiektu o_wrog i dodajemy event Collision > o_strzal. Wstawiamy teraz bloczek na kod i piszemy: 1. with(other) instance_destroy(); 2. instance_destroy(); Pierwsze polecenie usuwa to z czym dany obiekt się zderza. W naszym przypadku wróg zderza się z pociskiem. Drugie polecenie usuwa obiekt w którym umieszczone jest polecenie w naszym przypadku wroga. P 11. Panel i czas rzedstawianie ilości punktów i żyć na pasku aplikacji nie jest najatrakcyjniejszą formą prezentacji wyników. Dużo ładniej jest to zrobić na dodatkowym panelu w oknie gry. Teraz pokaże jak zrobić taki właśnie panel (prostokątny). Najpierw musimy przygotować sobie grafikę panelu. Należy ją narysować. Wygląd, szerokość, długość i przezroczystość według własnego uznania. Mój panel ma wymiary 640(długość okna gry) x 20 i wygląda tak: Polecam umieszczenie ikonek od razu na rysunku panelu. Oczywiście ikonki nie są w ogóle konieczne, ale wydaje mi się że tak jest ładniej. Na samym początku zostawiłem miejsce na nazwę planszy. Dalej jest ilość punktów i żyć. Na końcu pozostawiłem miejsce na czas. Jeden ze sposobów na proste odmierzanie czasu zostanie za chwilę przeze mnie zaprezentowany. Gdy już narysujemy sobie jakiś pasek dodajemy go do spriteów i nazywamy spr_panel. Tworzymy obiekt o takiej samej nazwie lecz z przedrostkiem o_ ale nie ustawiamy mu rysunku panelu! Dlaczego? Dowiemy się za chwilę. Na razie zajmiemy się czasem. W nowo utworzonym obiekcie dodajemy event Create a w nim miejsce na kod i wpisujemy: 1. czas=100; 2. alarm[0]=1*room_speed; Zmienna czas to ilość czasu jaką gracz ma na przejście jednej planszy. W drugiej linii ustawiany jest alarm który będzie odliczał od czasu jedną sekundę (właśnie dlatego czas alarmu jest równy 1). Porada! Więcej o alarmach dowiesz się czytając wskazówkę z punktu 10 tego poradnika. Strona 6

Tworzymy teraz event Alarm 0 (Alarm > Alarm 0). Wstawiamy w nim taki kod: 1. czas-=1; 2. alarm[0]=1*room_speed; Co on oznacza? Jest banalnie prosty. Pierwsze polecenie odejmuje jeden (czyli jedną sekundę z naszego czasu). Następnie ponownie ustawiany jest ten sam alarm na tą samą ilość czasu. W ten sposób koło się zamyka i alarm nastawia się w kółko. Teraz zajmiemy się sprawdzeniem czy czas już się nie skończył. Aby to zrobić dodajemy event Step (ciągle, przez cały czas) i piszemy: 1. if czas <= 0 2. { 3. highscore_show(score); 4. game_end(); 5. } Powyższy warunek if sprawdza czy czas nie jest mniejszy lub równy 0. Jeżeli jest pokazuje tabelę wyników i kończy grę. Proste? Myślę że tak. Wskazówka! Gdy skończy się czas nie trzeba można od razu kończyć gry. Można ją zrestartować używając polecenia game_restart();, powtórzyć room ( polecenie room_restart(); ) lub odjąć życie tak jak np. przy zderzeniu z wrogiem lub wpadnięciu na kolce. Byłbym zapomniał jeszcze o evencie Draw. Dodajmy więc go, wstawmy bloczek na kod, otwórzmy go i wpiszmy: 1. draw_sprite(spr_panel,0,0 + view_xview,0 + view_yview); 2. draw_text(3 + view_xview,1 + view_yview, string(room_caption)); 3. draw_text(125 + view_xview,1 + view_yview,string(lives)); 4. draw_text(236 + view_xview,1 + view_yview,string(score)); 5. draw_text(552 + view_xview,1 + view_yview,string(czas)); Pierwsze polecenie rysuje sprite spr_panel na pozycji 0,0. Linijki od 2 do 5 wypisują tekst na panelu. Po kolei: nazwę planszy, ilość żyć, punktów i pozostały czas. Polecenia view_xview i view_yview oznaczają że dany napis czy obiekt będzie podążał za viewem. Gdybyśmy tego nie dopisali ekran przesunąłby się, a panel pozostał by w miejscu startu gry. Porada! Jeżeli zamontujemy już taki panel w grze bez sensu jest powtarzać to samo na pasku wyżej. Aby wyłączyć wyświetlanie tam punktów i żyć należy przejść do obiektu o_kontroler, eventu Game Start a następnie otworzyć istniejący tam już bloczek z kodem. Teraz należy edytować wartości przy poleceniu action_set_capion zmieniając je wszystkie z true na false. Dokładniejszy opis działania tej funkcji znajduje się w I części poradnika w dziale 5. 12. Ustawienia gry (Global Game Settings) W tej części mojego tutoriala omówię najważniejsze opcje ustawień gry dostępnych w Game Makerze. Aby się do nich dostać wybieramy Resources > Change Global Game Settings lub po prostu klikamy dwukrotnie na Global Game Settings poniżej listy spriteów, obiektów i roomów naszej gry. Możemy też kliknąć ikonkę. Strona 7

Zakładka Graphics: Start in full-screen mode uruchamia grę na pełnym ekranie. Interpolate colors between pixels po zaznaczeniu tej opcji można poniżej wybrać kolor dookoła okna gry na pełnym ekranie. Allow the player to resize the game widnow pozwala graczowi na zmianę rozmiaru okna gry. Let the game window always stay on top zawsze trzymaj okno gry na wierzchu. Don t draw a border in windowed mode nie rysuj systemowego obramowania okna. Don t show the button in the window caption nie pokazuj przycisków na pasku okna. Display the cursor pokazuj kursor myszy. Freeze the game when the form loses focus jeżeli gracz kliknie poza okno gry to gra jest wstrzymywana. Disable screensavers and power saving actions wyłącz wygaszacz ekranu oraz inne akcje zasilania. Zakładka Other: Default Keys domyślne klawisze Let <Esc> end the game wciśnięcie klawisza Esc kończy grę. Treat the close button as <Esc> key traktuj przycisk zamykania tak samo jak guzik Esc. Let <F1> show the game info po wciśnięciu klawisza F1 pokazuj info gry. Let <F4> switch between screen modes przełącza widok gry pomiędzy pełnym ekranem a oknem. Let <F5> save the game and <F6> load a game guzik F5 zapisuje gre a F6 ją wczytuje. Let <F9> take a screenshot of the game robi zrzut ekranu okna gry. Game Process Priority priorytet procesy gry Normal normalny High wysoki Highest najwyższy Version Information informacje o grze widoczne w właściwościach pliku.exe Major, Minor, Release, Build wersja gry. Company firma, spółka. Product produkt. Copyright prawo autorskie, właściciel. Descripion opis. Zakładka Loading: Show your own image while loading umożliwia wstawienie własnego obrazka podczas ładowania gry. Po zaznaczeniu tej opcji należy wybrać przycisk poniżej Change Image i wskazać plik obrazu. No loading progress bar nie pokazuj paska ładowania. Default loading progress bar standardowy pasek ładowania. Strona 8

Own loading progress bar własny pasek ładowania. Po wskazaniu tej opcji należy za pomocą dwóch poniższych przycisków wstawić grafikę własnego paska ładownia. Game Icon ikona gry. Aby ją zmienić należy kliknąć przycisk Change Icon i wskazać plik ikony w formacie.ico w rozmiarze 16x16 lub 32x32. Game Identifier unikalny identyfikator gry. Zakładka Errors: Display error messages pokazuj wiadomości o błędach gry. Write error messages to file game_errors.log gdy zdarzy się jakiś błąd, tworzy plik z jego treścią o podanej nazwie, w katalogu gry. Abort on all error messages gdy zdarzy się jakiś błąd przerywa grę. Treat uninitialized variables as value 0 jeżeli jakaś zmienna nie została zainicjowana, robi to i ustawia jej wartość na 0. Zakładka Info: (poniższe informacje są widoczne tylko z poziomu Game Makera) Author autor gry. Version wersja gry. Last changed ostatnia zmiana. Information informacje. J 13. Zapisywanie i wczytywanie gry eżeli w ustawieniach gry nie odznaczyliśmy opcji Let <F5> save the game and <F6> load a game to domyślnie po wciśnięciu guzika F5 gra będzie zapisywana a po wciśnięciu F6 wczytywana. Pokaże teraz jak zrobić zapisywanie podczas planszy i wczytywanie gry z poziomu menu. Najpierw tworzymy rysunek do zapisu na planszy. Nazywamy go spr_zapisz, tworzymy nowy obiekt i przypisujemy mu utworzony sprite. Przechodzimy teraz do bohatera, dodajemy event Collsion > o_zapisz, wstawiamy klocek na kod, otwieramy go i piszemy: 1. game_save("savegame.sav"); 2. with(other) instance_destroy(); Polecenie game_save zapisuje stan gry do pliku o podanej nazwie. Czynność wykonywana w drugiej linijce jest na pewno znana usuwa obiekt z którym dochodzi do kolizji (w tym przypadku jest to obiekt zapisywania). Do wczytywania gry użyjemy funkcji game_load, ale o tym przy okazji menu. T 14. Menu eraz przedstawię dwa sposoby na zrobienie menu gry. Jedno będzie klikane myszką, a drugie będzie przesuwane strzałkami. To pierwsze jest prostsze ale wydaje mi się że to drugie jest lepsze gdyż wtedy nie musimy podczas gry używać myszy. N Menu klikane myszką: ajpierw musimy narysować wszystkie spritey które będą pozycjami menu. U mnie będzie to: Graj, Wczytaj grę, Najlepsze wyniki, Ustawienia, Info, Koniec. Co prawda ustawień na razie jeszcze nie mamy ale postaram się opisać je w kolejnej części poradnika. Przyciski mogą być kwadratowe, okrągłe czy też może być to sam tekst według uznania. Po narysowaniu Strona 9

wszystkich grafik wczytujemy je do GMa nazywając zgodnie z ich zawartością (np. spr_gra, spr_wczytajgre). Tworzymy też obiekty dla nowych spriteów, nazywamy je przyporządkowujemy im rysunki i przechodzimy do kodowania. Otwieramy pierwszy obiekt, dodajemy w nim event Mouse > Left Pressed, wstawiamy bloczek na kod i piszemy to co ma się dziać. Dla obiektu o_graj będzie to na przykład: 1. room_goto(r_plansza1); Powyższe polecenie przechodzi do pierwszej planszy. Dla guzika wczytywania będzie to: 1. game_load("savegame.sav"); Powyższe polecenie odczytuje zapis gry o podanej nazwie. Z kolei w obiekcie o_wyniki będzie to kod pokazujący tabele wyników: 1. highscore_show(score); Ustawień na razie nie mamy ale utwórzmy już dla nich łącze i room. Dodajemy więc nowy room, nazywamy go r_ustawienia a w otwartym obiekcie dodajemy event Left Pressed i wpisujemy tak jak w obiekcie o_graj: 1. room_goto(r_ustawienia); Info to będzie po prostu wyświetlanie infa gry. Polecenie brzmi tak: 1. show_info(); A koniec gry to tylko: 1. game_end(); Teraz pozostało już tylko utworzyć nowy room r_menu, ustawić go jako pierwszy na liście, wstawić w nim wszystkie utworzone obiekty. Kolejność i ułożenie dowolne. Uwaga! W przykładzie w formacie.gmk zaprezentowane jest tylko menu sterowane klawiaturą. P Menu przesuwane strzałkami: odobnie jak w poprzednim menu należy narysować wszystkie pozycje menu i dodatkowo po jeszcze jednej z każdych pozycji z jakąś zmianą (np. inny kolor ramki czy tekstu). Drugi rysunek posłuży nam za guzik po najechaniu na niego. Jeżeli rysowaliśmy rysunki w Game Makerze aby dodać drugi obraz, w oknie edycji spritea klikamy. Z kolei gdy wczytaliśmy już jeden obraz i chcemy wczytać drugi, w oknie edycji sprite wybieramy ikonkę. Pierwszym obrazem powinien być rysunek normalny a drugi z tą zmianą. Teraz możemy utworzyć obiekty i przypisać im sprity. Następnie tworzymy obiekt o_kontroler_menu. Dodajemy w nim event Create i wpisujemy: 1. global.menu=1; Powyższym poleceniem inicjujemy zmienną globalną o nazwie menu i nadajemy jej wartość 1. Strona 10

Wskazówka! Więcej o zmiennych globalnych możesz dowiedzieć się w punkcie 10 tego poradnika. Tworzymy teraz event Key Press <Up>. Możemy także wybrać inny klawisz, będą to klawisze zmieniające wybraną pozycję menu. Dodajemy w nim bloczek na kod i piszemy: 1. global.menu-=1 Dzięki tej instrukcji pozycja menu będzie odejmowana o 1, dzięki czemu zaznaczenie będzie się zmieniało. Przechodzimy do eventu Key Press <Down> i piszemy prawie tak samo jak przed chwilą: 1. global.menu+=1 To polecenie działa odwrotnie do poprzedniego. Dodajmy jeszcze event Step (Step > Step) w którym zrobimy ograniczenie aby wartość menu nie osiągnęła np. wartości -1 bo nie może być pozycji menu na minusie. Wstawiamy klocek na kod, otwieramy go i podajemy: 1. if global.menu > 6 2. global.menu=1; 3. else 4. if global.menu < 1 5. global.menu=6; Pierwszy warunek sprawdza czy wartość zmiennej menu nie przekroczyła wszystkich pozycji, a drugi czy wartość wspomnianej zmiennej nie schodzi poniżej pierwszej pozycji. Ważne! Liczby 1 i 6 oznaczają pierwszą i ostatnią pozycję w menu. Jeżeli mamy mniej lub więcej pozycji należy zmienić wartość 6 w obu warunkach na właściwą! Wskazówka: Gdy warunek if ma wykonać tylko jedno polecenie nie musimy stosować klamer {}. Jeżeli jednak mamy więcej poleceń do wykonania należy ująć je w klamry, gdyż inaczej zostanie wykonane tylko pierwsze polecenie za warunkiem. Tworzymy teraz event Key Press <Space>. Będzie to klawisz wyboru danej pozycji menu. Często używany jest w tym przypadku klawisz Enter jak kto woli. Wstawiamy do niego taki, najdłuższy, kod: 1. if global.menu=1 2. { 3. room_goto(r_plansza1); 4. } 5. else 6. if global.menu=2 7. { 8. game_load("savegame.sav"); 9. } 10. else 11. if global.menu=3 12. { 13. highscore_show(score); 14. } 15. else 16. if global.menu=4 17. { 18. room_goto(r_ustawienia); Strona 11

19. } 20. else 21. if global.menu=5 22. { 23. show_info(); 24. } 25. else 26. if global.menu=6 27. { 28. game_end(); 27. } Kurs: Pierwsza gra w programie Game Maker 8 Po wybraniu danej pozycji dzieje się dana akcja. Przykładowo czwarty guzik to ustawienia. Wstawione tam polecenie to room_goto, które przechodzi do danego roomu. Użyłem tutaj klamer aby nie zapomnieć o nich przy dopisywaniu większej ilości poleceń. Tam gdzie jest tylko jedno polecenie - klamry można usunąć. Gdy mamy już utworzone obiekty do naszego menu otwieramy pierwszy z nich, dodajemy w nim event Create i robimy tak: 1. numer=1; 2. image_speed=0; Zmienna numer ustala, która ta pozycja jest w naszym menu. Drugie polecenie ustawia prędkość animacji na 0, czyli wyłącza animacje. Dodajemy jeszcze event Step do tego samego obiektu: 1. if global.menu=numer 2. image_index=1; 3. else 4. image_index=0; Powyższy warunek sprawdza czy pozycja wybrana obecnie w menu to jest właśnie pozycja danego obiektu. Jeżeli tak jest ustawia jego sprite na ten drugi (np. podświetlony albo z innym kolorem) a jeżeli nie ustawia rysunek na normalny. W taki sam sposób uzupełniamy wszystkie obiekty które są pozycjami menu, z tym że w Create każda pozycja musi mieć swój numer. Pozycje numerujemy po kolei zgodnie z eventem Key Press <Enter> w obiekcie o_kontroler_menu. Po zakończeniu powyższych czynności tworzymy room r_menu i ustawiamy w nim wszystkie pozycje menu zgodnie z nadaną kolejnością. Uwaga! Nie wolno zapomnieć także o wstawieniu kontrolera menu. Musi on znaleźć się w roomie z pozycjami. W przeciwnym wypadku menu nie zadziała. Wskazówka! Od tej chwili pierwszym pokojem w grze jest r_menu. W obiekcie o_kontroler mamy event Game Start ale należy go przenieść go obiektu o_kontroler_menu. Dlaczego? To proste. Event Game Start wykonuje się od razu po starcie gry a że obiektu o_kontroler tam nie ma event nie wykona się. Drugim rozwiązaniem tego problemu jest wstawienie obiektu o_kontroler do roomu r_menu, jednakże spowoduje to odtwarzanie muzyki gry w menu. Strona 12

Uwaga! W przykładzie w formacie.gmk zaprezentowane jest tylko menu sterowane klawiaturą. A Uruchamianie i eksportowanie by uruchomić swoją pierwszą grę należy wcisnąć guzik lub Run > Run normally. Można także wcisnąć guzik F5. Aby wyeksportować swoją grę do pliku wykonywalnego (.EXE) należy wybrać File > Create Executable lub ikonę. Po zakończeniu edycji gry nie zapomnij zapisać także projektu. Gdybyś chciał w przyszłości dokończyć lub zmodyfikować swoją grę tylko plik projektu da Ci taką możliwość. N Koniec a tym na razie kończy się druga część mojego kursy. W kolejnej postaram się opisać ustawienia. W razie pytań proszę o kontakt na adres e-mail: arekadiusz@onet.pl. Zapraszam także do serwisu GMCLAN.org (www.gmclan.org) gdzie można znaleźć wiele przykładów, podpowiedzi oraz pomocy do programu Game Maker. Strona posiada własne forum na którym można uzyskać odpowiedzi na wiele pytań dotyczących głównie GMa ale nie tylko. Do tego poradnika dołączony jest także przykład zapisany w formacie.gmk jednakże proszę nie kopiować bezmyślnie kodu a przepisywać jednocześnie analizując każdą linijkę. W ten sposób na pewno coś zostanie w głowie i przyda się podczas programowania kolejnych gier. Wszystkie części poradnika można znaleźć pod poniższym adresem: http:///index.php/kurs-pierwsza-gra-game-maker-8 Dziękuję za uwagę oraz poświęcenie czasu na przeczytanie tego poradnika! Miłego programowania! Strona 13