Úvod do druhé hry


Tvorba další hry je převzata ze stránek www.gamezone.cz (konkrétně 1. díl výukového seriálu má adresu http://www.gamezone.cz/Clanek.asp?idC=12293). Hra je určena pro dva hráče, kteří se budou po ploše pohybovat pomocí šipek a střílet po sobě.

Vytvořte nový klip - Ctrl+F8, pojmenujte ho například panak a pomocí štětce nakreslete panáčka s namířenou zbraní (ukázka např. na uvedené stránce nebo ve složce ukázka pro lekci flash12/panak.fla).

Po dokončení klipu se vraťte na scénu, z knihovny vložte na scénu panaka, ještě jednou ho zkopírujte a tuto kopii otočte (Modify - Transform - Flip horizontal). Pojmenujte instanci, která je namířená doleva panak_l a tu, která je namířená doprava pojmenujte panak_r - v panelu Properties. Při pohybu doleva se načte panak_l, při pohybu doprava panak_r.

Zvětšete si rozměry plochy na 800x600 - klikni kdekoliv do plochy mimo obrázky a použij panel Properties, nastavte také FrameRate například na 50 (to je počet snímků za vteřinu).

Pro vlastní program vytvořte mimo hrací plochu další Movie (stačí jen třeba kolečko), nazvěte jej akce_1, pro něj bude vytvořen script pro celou hru. Máte-li tento klip označený, otevřete okno scriptů, například klávesou F9, přepněte jej do Expert Mode a vložte do něj následující části scriptu:
onClipEvent(load)
{
rychlost = 5; // rychlost chozeni

// vytvoreni panaka
duplicateMovieClip(_root.panak_l, "panak1", 1); // inicializacni vytvoreni hrace 1
_root.panak1._x = 400; // x ova souradnice panaka
_root.panak1._y = 580; // y ova souradnice panaka
otacime = 1; // promenna, konbtrolujici, na kterou stranu jsme otoceni (2 = L, 1 = P)
}

Tato část proběhne jen jednou - při načtení klipu ( (load) ), proměnnou rychlost použijeme pro změnu souřadnic panáčka.
DuplicateMovieClip vytvoří kopii klipu panak_l , pojmenuje ji panak1 a vloží do první vrstvy.
_root znamená, že hledáme klip panak_l na hlavní scéně (momentálně píšeme script pro klip akce_1 a v něm panak_l není), na jeho souřadnici se lze odvolat _root.panak1._x . Za lomítky // je umístěn komentář, část scriptu, který se nepřekládá, ale pomáhá programátorovi v orientaci a nám v pochopení kódu.

Další část scriptu proběhne při každém průchodu snímkem (enterFrame), nejprve vyřešíme pohyb panáčka doprava:
onClipEvent(enterFrame)
{p_x = _root.panak1._x; // x-ova pozice hrace
p_y = _root.panak1._y // y-ova pozice hrace
//// CHOZENI HRACE 1 ////

// chozeni doprava
if (Key.isDown(key.RIGHT) && !(Key.isDown(key.LEFT))) // jestlize zmackneme sipku doprava a zaroven nedrzime sipku doleva
{if (otacime == 1) // vytvorime panaka otoceneho na pravou stranu
{otacime = 2; // promennou otacime nastavime na hodnotu 2, aby se hned nevytvoril dalsi panak otoceny na pravou stranu
duplicateMovieClip(_root.panak_r, "panak1", 1); //vytvorime panaka otoceneho doprava
_root.panak1._x = p_x;
_root.panak1._y = p_y;
} 
_root.panak1._x += rychlost;
}

p_x, p_y jsou pomocné proměnné pro uchování aktuální pozice panáčka.
Funkce Key.isDown kontroluje, zda je stisknuta klávesa, v tomto případě šipka doprava (key.RIGHT).
&& - znak pro logický součin, v tomto případě se příkazy ve složené závorce vykonají, je-li stisknuta šipka doprava a současně není stisknuta ( !(Key.isDown...) šipka doleva. Celý tento příkaz slouží jen ke správnému nastavení tvaru panáčka (doprava nebo doleva), vlastní pohyb způsobuje potom změna souřadnice:
_root.panak1._x += rychlost;
Tento zápis je zkráceným zápisem přičtení proměnné rychlost k souřadnici x klipu panak1 (lze také například:
 _root.panak1._x = _root.panak1._x + rychlost; 
Pohyb dalšími směry je podobný, jen ve směru nahoru nebo dolů není potřeba měnit tvar panáčka.Celý script pro klip akce_1 tedy vypadá takto:
onClipEvent(load)
{
rychlost = 5; // rychlost chozeni

// vytvoreni panaka
duplicateMovieClip(_root.panak_l, "panak1", 1); // inicializacni vytvoreni hrace 1
_root.panak1._x = 400; // x ova souradnice panaka
_root.panak1._y = 580; // y ova souradnice panaka
otacime = 2; // promenna, konbtrolujici, na kterou stranu jsme otoceni (2 = L, 1 = P)
}


onClipEvent(enterFrame)
{p_x = _root.panak1._x; // x-ova pozice hrace
p_y = _root.panak1._y // y-ova pozice hrace
//// CHOZENI HRACE 1 ////

// chozeni doprava
if (Key.isDown(key.RIGHT) && !(Key.isDown(key.LEFT))) // jeslize zmackneme sipku doprava a nedrzime siplku doleva
{if (otacime == 1) // vytvorime panaka otoceneho na pravou stranu
{otacime = 2; // promennou otacime nastavime na hodnotu 2, aby se hned nevytvoril dalsi panak otoceny na pravou stranu
duplicateMovieClip(_root.panak_r, "panak1", 1); //vytvorime panaka otocenho doprava
_root.panak1._x = p_x;
_root.panak1._y = p_y;
} 
_root.panak1._x += rychlost;
}
// chozeni doleva
if (Key.isDown(key.LEFT) && !(Key.isDown(key.RIGHT))) // jestlize zmacekneme sipku doleva a nedrzime sipku doprava
{
if (otacime == 2) // vytvorime panaka otoceneho doleva
{
otacime = 1; // zmenime hodnotu promenne otacime, abychom nevytvorili danou figuru hned znovu a mohli tvorit figuru otocenou doprava
duplicateMovieClip(_root.panak_l, "panak1", 1); //vytvorime panaka otocenho doleva na hracove pozici
_root.panak1._x = p_x;
_root.panak1._y = p_y;
}
_root.panak1._x -= rychlost;
}
//// CHOZENI NAHORU A DOLU ////

// chozeni nahoru
if (Key.isDown(key.UP) && !(Key.isDown(key.DOWN)))
{
_root.panak1._y -= rychlost;
}
// chozeni dolu
if (Key.isDown(key.DOWN) && !(Key.isDown(key.UP)))
{
_root.panak1._y += rychlost;
}
//// OSTATNI NASTAVENI ////

// zmena bavy panaka na modreho
barva = new Color(_root.panak1);
barva.setRGB(0x000099); // vytvorime modreho panaka
}

Úkol (5 bodů):
Podle návodu v lekci a ukázky ve složce "ukázka pro lekci flash12" vytvoř základ nové hry.

Ukázkový zdroj:
Ukázka 12. lekce