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:

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é.

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_down, 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.

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.

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.

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_keypress/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.

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_blue_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.

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)

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.

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.

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.

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

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 804x (28.2 kB)
Aplikace je včetně zdrojových kódů v jazyce GameMaker