Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Game maker tutorial - Arkanoid

Dnes si vytvoříme hru zvanou Arkanoid. Určitě vám něco říká věhlasné pinkání míčkem do cihliček a následné odražení jej od pálky aby nespadl.

Je to velice jednoduché: Začneme přidáním spritů.

A to sice tři sprity pálky -> velkou, normální a malou. Poté ještě sprite míčku a cihliček. Asi takto:

GameMaker - Jednoduché hry

Nyní si vytvoříme objekt pálky, přiřadíme mu sprite bat_normal a zaškrtneme solid. Přidáme mu prozatím jen eventy create, keyboard/left a keyboard/right.
V create si vytvoříme proměnnou gamespeed a nastavíme jí hodnotu 10.
Poté do left přidáme podmínku z control pro kontrolu volného místa (hned tu první). Souřadnice zadáme x: x - gamespeed; y: y;
Poznámka: pokud budete takto kontrolovat volné místo, může se stát při zaseknutí v objektu, že funkce bude stále vyhodnocovat místo jako kolizní. Je lepší tedy od x-ové souřadnice vytvářet rozdíl např. pomocí sprite_width / 4 - čímž sáhnete kousek za okraj spritu a kolize se již nebere vzhledem ke kolizní masce a právě kolidujícímu předmětu, ve kterém je těleso zaseklé, ale dívá se za něj a zjišťuje jestli je tam volné místo
Pod podmínku vložíme jump to position z move a souřadnice budou stejné jako předešlé.

GameMaker - Jednoduché hry

To samé udělejte u right s tím že prohodíte znaménka.

Nyní si vytvořte room a přidejte někam dolů do prostředka objekt pálky a hru si vyzkoušejte.

Ještě než rozpohybujeme míček tak si vytvoříme dva sprity o velikostech roomu 640x16 a 16x480. Dejte jim třeba černou výplň ať sou pěkně vidět.

Nyní si vytvoříme 3 objekty (obj_horizontal_up, obj_horizontal_dow­n, obj_vertical), kterým přiřadíme patřičný sprite, odškrtneme visible a zaškrtneme solid.

Přidáme je do mapy (odškrtněte si delete underlying).

Vytvořte si objekt ball kterému přiřaďte zatím jen sprite a vložte jej do mapy.

GameMaker - Jednoduché hry

Teď přidáme kolize a rozpohybujeme míček.
Otevřeme si míček. Přidáme nejprve step. Popíši vám co chci udělat. Přidáme podmínku, že pokud ještě nezačala hra tak že se míček bude pohybovat s pálkou.
Ale musíme trošku poupravit sprity. U pálek nastavíme x na prostředek a y na 0. U míčku nastavíme y na dolní hranici a x na střed.

GameMaker - Jednoduché hry

Teď již můžeme napsat do bloku pouhé x = obj_bat.x a y = obj_bat.y a ještě musíme zastavit pohyb klepnutím na prostředek v akci start moving in a direction.

GameMaker - Jednoduché hry

Ještě přidáme kolizi se zarážkami. Horní, postraní zarážky a pálka budou mít pohé bounce a u dolní se bude nastavovat proměnná start na 0.

Ještě přidejte event create kde nastavte proměnnou start na hodnotu 0 a přepněte se do objektu pálky. Přidejte event keyboard_keypres­s/space.
Do kterého vložte zase podmínku na start a do bloku vložte nastavení start na 1 a rozpohybování míčku do rohových stran rychlostí řekněme 7.

GameMaker - Jednoduché hry

A když nad tím tak přemýšlím můžete vlastně smazat z mapy kuličku a do obj_bat do eventu create přidat akci create instance obj_bat na souřadnicích x,y.

Hru si vyzkoušejte teď už je to vážně pěkné a můžete se vrhnout na cihličky.
Vytvořte proto objekt obj_stone, kterému nepřiřazujte žádný sprite, bude sloužit jako rodič a zastupovat všechny ostatní cihličky (ušetří nám mnoho práce).

Do objektu obj_ball do kolize s obj_stone přidejte zvýšení skóre o jedna. Pod to bounce self against all objects. A ještě přidejte destroy other instance.

Teď si už jen popřidávejte cihličky a nastavte jim patřičné sprity a jako parrent zvolte obj_stone.

Té cihličce co má i nakřuplí sprite vytvořte objekt do kterého dáte kolizi s míčkem a tam akce score++, bounce other against all a change instance into obj_stone_blu­e_damaged (ve kterém je sprite poškozeného kamene a parrent obj_stone).

Do cihličky s křížkem (do té co nepůjde rozbit) vložíme kolizi s míčkem kam dáme akci bounce s parametrem other a against nastavíme na all objects.

Poskládáme si cihličky do mapy a vyzkoušíme.

GameMaker - Jednoduché hry

Už to krásně funguje :)

Do obj ball přidáme ještě kontrolu počtu cihliček. Takže přidáme kolizi s obj_stone a naprosto jednoduše se zeptáme je počet cihliček roven 0? Pokud ano a next room exituje tak next room, pokud neexistuje ukaž výslednou listinu a skonči hru. (přidal sem bloky aby to bylo lépe vidět)

GameMaker - Jednoduché hry

Do game start u obj_bat přidáme set score = 0 a set lives = 3. Ještě nastavíme zobrazení skóre a životů v caption.

GameMaker - Jednoduché hry

Přidáme event no more lives a do něj show highscore tabla a end the game.

A do obj_ball do kolize s obj_horizontal_down přidáme ještě lives--.

Teď hru obohatíme o bonusy. Vytvoříme si objekt bonus který zatím encháme ladem. Poupravíme kolizi s obj_ball v objektu obj_ball. Přidáme šanci na bonus.

GameMaker - Jednoduché hry

Ták a teď se vrhneme na obj_bonus. Do create přidáme proměnou bonus které nastavíme hodnotu na round(random(2)) -> vygeneruje číslo od 0-2 a zaokrouhlí ho (bonusy budeme mít zatím jen 3): přidání života, zmenšení a zvětšení pálky, později si můžete přidat další.

Přidáme podmínky na proměnnou bonus a podle hodnoty změníme sprite bonusu. A objekt rozpohybujeme pomocí set the vertical speed asi tak na 3.

GameMaker - Jednoduché hry

Do kolize s obj_bat přidáme akce které má bonus provést.

GameMaker - Jednoduché hry

A hru máme hotovou. Můžete si přidat pozadí, zvuky další bonusy a levely.

Ke stažení přiloženy zdrojové soubory.


 

Stáhnout

Stažením následujícího souboru souhlasíš s licenčními podmínkami

Staženo 801x (28.2 kB)
Aplikace je včetně zdrojových kódů v jazyce GameMaker

 

Všechny články v sekci
GameMaker - Jednoduché hry
Článek pro vás napsal David Jančík
Avatar
Uživatelské hodnocení:
6 hlasů
Autor je vášnivý programátor. Nezná slovo "nelze", nebojí se zkoušet nepoznané a pronikat do nových technologií.
Aktivity