Ú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í kláves a střílet po sobě.

Vytvoř nový klip - Ctrl+F8, pojmenuj ho například panak a pomocí štětce nakresli panáčka s namířenou zbraní (např. jako v .swf ukázce, pokud se nebude panáček hýbat, tak na něj klikni).
Po dokončení klipu se vrať na scénu, z knihovny vlož na scénu panaka, ještě jednou ho zkopíruj a tuto kopii otoč (Modify - Transform - Flip horizontal). Pojmenuj instanci, která je namířená doleva panak_l a tu, která je namířená doprava pojmenuj panak_r - v panelu Properties. Při pohybu doleva se načte panak_l, při pohybu doprava panak_r.
Zvětši si rozměry plochy na 800x600 - klikni kdekoliv do plochy mimo obrázky a použij panel Properties, nastav také FrameRate například na 50 (to je počet snímků za vteřinu).
Pro vlastní program vytvoř mimo hrací plochu další Movie (stačí jen třeba kolečko), nazvi jej akce_1, pro něj bude vytvořen script pro celou hru. Máš-li tento klip označený, otevři okno scriptů, například klávesou F9, přepni jej do Expert Mode a vlož 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, kontrolujici, 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 otoceneho 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 otoceneho 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
}


Úkoly (5 bodů):

Vytvořte základ další hry podle textu lekce.