Bludiště

V této lekci načneme hru, se kterou už jste se také v nějaké podobě nejspíš setkali. Naším úkolem bude v bludišti vysbírat předměty (diamanty, koule, šroubky ...) a dostat se do další místnosti navzdory snahám nepřátelských objektů. V postupu už vynechám probrané věci (kdo zapomněl, může se k nim vrátit do minulých lekcí nebo svých projektů), zaměřím se už jenom na novinky. Při tvorbě mi pomohl tutorial z oficiálních stránek (archiv kromě textu .pdf obsahuje i zdroje v jednotlivých fázích vývoje hry).



Sprites

Pokud budeme chtít, aby se naše sprity "hýbaly", můžeme využít (načíst) obrázky formátu .gif (animované obrázky), tak jak je to v ukázce pro 2.lekci. Takovéto animované obrázky jsou tvořené sadou obrázků (také se říká snímků), které se postupně střídají, vytvořit animovaný obrázek (nebo ho upravit) umožňuje i editor spritů. Na obrázku jsou označené ikony, pomocí kterých můžete do sady obrázků přidat další prázdný obrázek na konec nebo před vybraný obrázek, totéž je také v nabídce Edit. Kromě toho můžete jednotlivé obrázky kopírovat a vkládat (samozřejmě i mazat) a případně jen provádět drobné změny.


Pro sprity, které se mají pohybovat v bludišti (omezeném prostoru), je lepší odtrhnout nabídku Precise collision checking, aby neprobíhala kontrola kolize samotného obrázku se zdí, potom nastávají případy, že se "nevejdeme" do další chodby. Samotný obrázek bývá menší než čtvereček, do kterého je nakreslený, je možné také v nabídce Modify mask nastavit, aby se kontrolovala kolize celého čtverečku.



Práci s objekty pro tuto hru bychom už měli povětšinou zvládnout, jako obvykle k tomu, co už známe, něco málo přidáme.

Objekty

Objektů je tentokrát více (některé dokonce animované :-) ), z obrázku je jejich funkce nejspíš jasná, u událostí a akcí některých z nich se ještě blíže zastavíme.


Hráč
Pro pohyb hráče je možné vybrat jednu z probraných možností (3. lekce nebo 4. lekce), já jsem zvolil pohyb jako u 4. lekce, ale vynechal jsem událost no key, figurka se po stisku klávesy pohybuje vybraným směrem až do stisku jiné klávesy nebo do nárazu do zdi.
Důležitá je volba pohybu figurky po mřížce, na kterou si můžeme představit bludiště rozdělené. Při pokusu o zahnutí do jiné chodby bychom bez ní měli problém se trefit přesně do správného místa, muselo by to být přesně na pixel :-). Pokud přidáme akci Align to a grid k událostem pro pohyb, tj. Keyboard - Left a další (já jsem ji přidal jen ke kolizí se zdí a taky to zřejmě stačí), potom se při této události figurka "přichytí k mřížce", posune se do čtverečku mřížky (nebo roh figurky do vrcholu mřížky). Nejvhodnější velikost mřížky je stejná jako velikost použitých obrázků nebo šířky chodeb.
Všechny ostatní události a akce jsme už použili v předešlých hrách i vícekrát, jen něco stručně připomenu:
Create - nastavení počtu životů a jejich zobrazení
Collision s příšerou - ztráta života, skok na startovní pozici
No More Lives - posečkání, zobrazení high score a restart hry

Diamant
Princip stejný jako u cihličky v arkanoidu, při srážce s hráčem se zvýší skore a zničí se diamant (akce Destroy the instance v záložce main1).

Příšera
Tento "primitivní nepřítel" se bude pohybovat jen buď vodorovně nebo svisle, proto v události Create v akci Start moving... zvolíme jen jeden směr a pro srážku se zdí vybereme akci Reverze horizontal direction (nebo vertical) - prostě čelem vzad.

Cíl
Při kolizi s hráčem umožňuje postup do dalšího kola, zde je možné použít úplně stejnou akci s příkazy IF a ELSE jako ve 3. lekci.

Dveře
Tento objekt je neprůchodný jako zeď (Solid) a umístěný někde poblíž cíle, tak, aby bránil průchodu k cíli. "Otvírá" se (ničí) teprve v okamžiku, kdy jsou sesbírané všechny diamanty. Aby mohl neustále kontrolovat, zda už jsou všechny diamanty vysbírané, použiji událost Step, tato událost totiž probíhá v každém kroku (milisekundě) hry.
Použitá akce Test Instance Count (kontrola počtu instancí) je na záložce control. Tato akce má několik voleb - který objekt se má kontrolovat (diamant), jakého počtu se má dosáhnout (0) a jestli přesně (Equal to) či více nebo méně.
Příkaz podle obrázku už určitě snadno přeložíte - jestliže je počet diamantů roven 0, potom se znič (Destroy) - neboli "dveře se otevřou" a dá se už dostat k cíli.


Držím vám při tvorbě palce, teď se ukáže, co ve vás je - ono totiž vytvořit dobré bludiště je podstatně obtížnější než jím potom jenom projít :-)


Úkoly:

Vytvořte hru podle lekce s vlastními obrázky a zvuky, nebo dalšími objekty. Místností můžete přidávat donekonečna:-)