Stránka 1 z 1

C# - jak spustit určitou část kódu každou 1 minutu

Napsal: 29 úno 2016 15:32
od lukas.sei
Čaute,
Dělám konzolovou aplikaci ve Visual Studio a potřebuji poradit.
Potřebuji každou 1 minutu spustit tento kód

Kód: Vybrat vše

hrac1.UberHP(5);

Jak tohohle mám docílit ? (Programuji v C# a v programu: Visual Studio Basic 2015)

Re: C# - jak spustit určitou část kódu každou 1 minutu

Napsal: 29 úno 2016 16:05
od satik
Ahoj,
jak vypadá běh té konzolové aplikace?

Pokud bys volal cyklicky nějaký kód - třeba měl nějakou herní smyčku, tak můžeš v každém cyklu zjistit, jestli už uběhla minuta a pak ten kód spustit. Pokud bys tam ale třeba četl vstup od uživatele přes nějakou čekací funkci, tak by to vždycky nemuselo být po minutě, ale až po tom, co uživatel ten vstup zadá. To by stačilo?

Jinak pak jedině přes další vlákno, v kterém bude cyklus, který bude provádět v každém kroku tvůj kód a pak zavolá Thread.Sleep(60000).

Re: C# - jak spustit určitou část kódu každou 1 minutu

Napsal: 29 úno 2016 16:16
od Michal.
Knihovny System.Timers, System.Threading

Kód: Vybrat vše

public static void Main()
{
    System.Timers.Timer myTimer = new System.Timers.Timer();
    myTimer.Elapsed += new ElapsedEventHandler(OnTimer);
    myTimer.Interval = 1000 * 60 * 1; //1 minuta
    myTimer.Enabled = true;

    Console.ReadKey();
}

public static void OnTimer(Object source, ElapsedEventArgs e)
{
    hrac1.UberHP(5);
}

Re: C# - jak spustit určitou část kódu každou 1 minutu

Napsal: 29 úno 2016 16:20
od lukas.sei
Ten kód vypadá nějak takhle:

Kód: Vybrat vše

while (pokracovat == 1)
{
// nějaký kód (povětšinou generace nepřátel a boj)
while(nemocnice == 1) //tady je to kde příjde odpočet
{
Console.WriteLine("Vstoupil jsi do nemocnice.");
                    Console.WriteLine("Zde se ti každou minutou vyléčí 5 životů.");
                    do
                    {
                        while (!Console.KeyAvailable) //tohle se musí opakovat každou minutu
                        {
                            Console.WriteLine("Právě si získal 5 životů. Pro získání dalších 5 životů čekej další minutu. Pro odchod z nemocnice zmáčkni Escape.");
                            hrac1.PridejHP(5);
                        }
                    } while (Console.ReadKey(true).Key != ConsoleKey.Escape);
                    {
                        nemocnice = 0;
                        Console.WriteLine("Odešel jsi z nemocnice.");
                    }
}
}

Doufám, že si to pochopil :). A taky doufám že jsem to přepsal správně :D.

A ještě mám jednu otázku. Když napíšu switch a v jedné case si uložím do proměnné hodnotu, po ukončení switche ta hodnota v té proměnné už není. Dá se nějak udělat, aby tam ta hodnota zůstala ?

Kód: Vybrat vše

int promenna;
int pravda = 1;
switch (pravda)
{
case 1:
promenna = 25; //tu do te promenné nahraju číslo 25
break
}
Console.WriteLine("promenna"); //tu však ale už zase v sobě nemá uložené vůbec nic :/

Re: C# - jak spustit určitou část kódu každou 1 minutu  Vyřešeno

Napsal: 01 bře 2016 22:49
od CZechBoY
Tak to si ji nekde prepises, tak jak si ten switch napsal je to ok.

Dej si timer na minutu a pak pridej 5HP pokud tam furt bude. Kontrolu ale delej pri kazdym pohybu, aby se ti nestalo ze hrac prijde, na 59s odejde a pak zas prijde a bude to mit zapocitano jakoze tam byl celou dobu...