Fred - Map
Ciele
  1. Oboznámiť sa s programom Tiled na vytváranie herných máp.
Úvod
Na tomto finálnom cvičení získa vaša hra hernú mapu stvárňujúcu prostredie, v ktorom sa Fred bude pohybovať. Túto mapu vytvoríte z rôznych vrstiev, pričom každá vrstva bude vyskladaná z dlaždíc. Dlaždiciam a vrstvám je možné priradiť rôzne vlastnosti, ktoré budete môcť využiť pri tvorbe vašich vlastných vylepšení v hre a ku ktorým sa budete môcť dopracovať pomocou na to určenej triedy knižnice Slick.
Poznámka:  Pokiaľ ešte nemáte program Tiled, môžete si ho stiahnuť na tejto stránke.
Postup
  1. V prvom kroku sa lepšie oboznámite s programom a vytvoríte mapu z dvoch základných vrstiev - pozadia a popredia.
    Úloha:  Spustite program Tiled a vytvorte novú mapu (File->New). Z možností Orientation vyberte Orthogonal a nastavte rozmery mapy.
    Map size určuje šírku a výšku mapy v dlaždiciach. Tile size zas určuje šírku a výšku jednej dlaždice v bodoch.
    Poznámka:  Aby ste neskôr nemali pri načítaní mapy v hre problémy, je potrebné zmeniť niektoré nastavenia programu (Edit->Preferences). Potrebné nastavenia sú zobrazené na tomto obrázku.
    Úloha:  Vytvorenú mapu uložte do priečinku s vaším projektom (resources).
    Poznámka:  Prezrite si prostredie programu aj možnosti v menu, aby ste získali počiatočný prehľad o jeho funkciách.
    Na začiatku máte možnosť vidieť pracovnú mriežku, na ktorú sa budú ukladať jednotlivé dlaždice. Na pravej strane je panel pre prácu s vrstvami a sadami dlaždíc. Defaultne je vytvorená jedna prázdna vrstva. Premenujte ju napríklad na Background, aby ste ju neskôr vedeli odlíšiť od ostatných vrstiev.
    Úloha:  Aby ste mohli začať ukladať dlaždice pre vašu mapu, potrebujete najprv pridať zdrojovú sadu dlaždíc, tzv. "Tileset" (Map->New Tileset).
    Poznámka:  Pri vytváraní Tileset-u odporúčame zadať rozmery "Tile width" a "Tile height" rovnaké, ako pri vytváraní mapy.
    Obrázok, ktorý použijete, sa rozkúskuje na základe zadaných rozmerov na dlaždice. To, ako ich poukladáte, záleží už len na vašej fantázii ;). Sady dlaždíc, ktoré pridáte, sú k dispozícii pre všetky vytvorené vrstvy (vrstvy nie sú zviazané s určitými Tileset-mi, no je dobré, ak na určitej vrstve pracujete len s vyhradenou sadou dlaždíc).
    Poznámka:  V kostre vášho projektu v priečinku resources môžete nájsť užitočné zdroje pre tvorbu mapy.
    Úloha:  Vyskladajte prvú jednoduchú vrstvu mapy z dlaždíc pozadia.
    Úloha:  Pridajte do vašej mapy ďalšiu vrstvu (Layer->Add Tile Layer). Taktiež pridajte sadu dlaždíc popredia a pomocou nich vyskladajte práve pridanú vrstvu. Táto sa zobrazí nad prvou vrstvou.
    Poznámka:  Pri skladaní vrstvy s dlaždicami dajte pozor na to, aby ste mali zvolenú tú správnu vrstvu (v zozname vrstiev na pravej strane obrazovky), aby sa nestalo, že dlaždice popredia poukladáte do vrstvy pozadia namiesto vrstvy popredia.
    Nezabudnite uložiť zmeny, ktoré ste v mape spravili.
  2. V tomto kroku získate objekt mapy a zabezpečíte jej vykreslenie v hre. Využijete na to triedu TiledMap, ktorá je určená na rozparsovanie mapy vytvorenej v programe Tiled.
    Úloha:  V hlavnej triede projektu v metóde init() vytvorte inštanciu triedy TiledMap a uložte ju do členskej premennej. Použite konštruktor s jedným parametrom typu String, ktorý udáva cestu k TMX súboru vašej mapy.
    Úloha:  V metóde, ktorá sa stará o vykresľovanie vo vašej hre, pomocou objektu triedy TiledMap zabezpečte vykreslenie tejto mapy.
    V triede mapy sú k dispozícii metódy pre vykreslenie všetkých vrstiev alebo jednej vrstvy osobitne.
    Poznámka:  V metóde pre vykresľovanie vo vašej hre vyskúšajte vykresliť najprv všetky objekty typu Actor, potom vašu mapu. Vyskúšajte to aj v opačnom poradí. Všimnite si závislosť zobrazovaného výsledku od poradia jednotlivých vykreslení.
    Úloha:  Zabezpečte, aby boli grafické prvky hry vykreslené v tomto poradí:
    • vrstva z dlaždíc pozadia (background),
    • objekty typu Actor,
    • vrstva z dlaždíc popredia (foreground),
    • informačná vrstva (obsah batoha).
  3. V tomto kroku si vyskúšate pridanie vlastnosti do vašej mapy. Túto vlastnosť načítate a použijete vo vašom zdrojovom kóde na doplnenie funkcionality hry.
    Úloha:  Vráťte sa k vašej mape v programe Tiled. Vytvorte ďalšiu vrstvu, ktorá sa síce v hre vykresľovať nebude, no poslúži ako nositeľ informácie o stenách resp. pevných prekážkach v mape.
    Úloha:  Pridajte nový Tileset, ktorý bude pozostávať z dlaždice reprezentujúcej stenu.
    Môžete použiť obrázok z priečinka resources nazvaný collision.png alebo si vytvorte obrázok pre dlaždicu podľa vašich potrieb v jednoduchom grafickom editore.
    Úloha:  V Tileset-e pre steny kliknite pravým tlačidlom myši na dlaždicu, ktorú použijete a z ponuky vyberte "Tile Properties". Pridajte dlaždici novú vlastnosť s názvom "wall" alebo "blocked" (je to na vás) a priraďte jej hodnotu "true".
    Úloha:  Pomocou tejto dlaždice vytvorte steny, vo vrstve na to určenej, cez ktoré Fred nebude môcť prejsť. Aby to tak aj fungovalo, je potrebné v zdrojovom kóde zistiť, ktoré dlaždice túto vlastnosť majú a pri Fredovom pohybe overiť, či na takú dlaždicu (ne)natrafil a podľa toho (ne)obmedziť jeho pohyb.
  4. Vymažte projekt z disku a zrušte všetky vami vytvorené nastavenia v prostredí BlueJ a NetBeans!
Doplňujúce úlohy
$Id: 05.xml 78 2011-12-14 14:08:14Z saren $
$Id$