Část 2 - Nastavení časomíry

22. 7. 2014 00:00

Po menší přestávce, která byla způsobena nejen školním vytížením, se opět vracíme s novými lekcemi.

Co je časomíra? Je to nějaký proces, který za určitý počet cyklů vyvolá událost. Zní to složitě? Nebojte, na toto existuje jeden prvek -> Timer. Najdeme jej v záložce Komponenty (Components). Po přidání do projektu lze upravovat časový interval, po kterém se akce aktivuje. Čas je uváděn v milisekundách, takže pokud chceme jednu sekundu, musíme nastavit hodnotu tisíc (1000 = 1s). Tím získáme periodickou aktivaci funkce. 

Dále po dvojitém kliknutí na časovač vytvoříme akci Tick (jediná dostupná pro časovač). Tato funkce se bude opakovat po vypršení intervalu, proto zde umístíme nabíhání uběhnutého času. To vytvoříme jednoduchou proměnou (int), která v této funkci zvýší svoji hodnotu o 1. Časomíra bude spuštěna klávesové zkratky 's', kterou si nastavíme (popis dále), a ukončena vstupem do popisku "Konec".

Podstatu časomíry bychom měli, teď jen vytvořit kódy. Obslužný kód pro Tick u časovače bude:

private void timer1_Tick(object sender, EventArgs e)
{
      casovac++;
}

Proměnná casovac je zadeklarována mezi proměnnýma a je typu int -> větší typ nebude potřeba.
Další ukázkou kódu je ukončení při vstupu do popisku:
private void label1_MouseEnter(object sender, EventArgs e)
{
        timer1.Stop();
}

Jak už název napovídá, jedná se o funkci popisku zvanou MouseEnter, která se spustí pokaždé, když myš vkročí na území popisku. Jinak Stop() zastaví časovač. V další lekci tento kód rozšíříme, ale nyní nám na testování postačí tato verze.
Nyní si ukážeme, jak spustit hru, tedy vytvořit klávesovou zkratku 's'. Označíme si formulář a přepneme si na dostupné aktivační podmínky (blesk vedle vlastností). Vybereme možnost KeyDown a dvakrát poklikáme. Poté napíšeme kód, který přesune myš a sepne časomíru. Použijeme vlastnosti Position a funkci Start. 
private void Client_KeyDown(object sender, KeyEventArgs e)
{
       if (e.KeyCode == Keys.S)
       {
             casovac = 0;
             Point startingPoint = panel1.Location;
             startingPoint.Offset(10, 10);
             Cursor.Position = PointToScreen(startingPoint);
             timer1.Start();
             kontrola = true; 
       }
}

Menší vysvětlení:
V programu vidíme proměnnou e, která nám uchovává informace o stisknuté klávese. Vlastností KeyCode zjistíme, jaká klávesa byla stisknuta.
Vynulování proměnné casovac.
Point je třída, která zastupuje souřadnice x a y. Při deklaraci jsem nastavili nulu na lokaci panelu 1. Od této chvíle se budou hodnoty načítat od tohoto výchozího bodu. Funkcí OffSet nastavíme potřebný bod. Přesunutí myši provedeme přes vlastnost třídy Cursor Position pomocí funkce PointToScreen, kde argumentem je právě zmiňovaný bod.
Start() spustí časomíru.
Proměnná kontrola, která je typu bool nám zajišťuje, že časomíra bude vypnutá, dokud se nezapne nová hra
 

V další lekci nastavíme ostatní funkce, vjezd na překážku, konec a další.

 

Fotogalerie:

Všechny fotky k lekci najdete na našem Facebook profilu a nebo na dropbox. Ke stažení i se vzorovým příkladem v sekci Download -> Seriál C#.