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

Místo pro dotazy a rady ohledně programovacích jazyků (C++, C#, PHP, ASP, Javascript, VBS..) a tvorby webových stránek

Moderátor: Mods_senior

Zamčeno
Uživatelský avatar
lukas.sei
Level 4
Level 4
Příspěvky: 1074
Registrován: 14 led 2013 11:02

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

Příspěvek 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)
Uživatelský avatar
satik
Level 6
Level 6
Příspěvky: 3509
Registrován: 09 led 2015 12:49
Bydliště: Krkonoše
Kontaktovat uživatele:

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

Příspěvek 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).
PC: MSI RTX 4090 Suprim X, AMD Ryzen 9 7950x3D, ASUS Crosshair HERO X6670E, 64GB RAM@6000CL30, Fractal Define Torrent, Seasonic PRIME TX 1600W, SSD Seagate Firecuda 530 M2 2TB +
4TB + 4TB SATA Micron 5200 ECO
Periferie: Samsung Odyssey G9 Neo + 2x AOC AG271QG, Razer Deathadder, Ducky Shine7, Steelseries QcK+, Beyerdynamic MMX300, Valve Index
Uživatelský avatar
Michal.
Level 3.5
Level 3.5
Příspěvky: 856
Registrován: 22 úno 2013 19:55

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

Příspěvek 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);
}
Uživatelský avatar
lukas.sei
Level 4
Level 4
Příspěvky: 1074
Registrován: 14 led 2013 11:02

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

Příspěvek 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 :/
Uživatelský avatar
CZechBoY
Master Level 9.5
Master Level 9.5
Příspěvky: 8813
Registrován: 20 srp 2008 14:02
Bydliště: Brno
Kontaktovat uživatele:

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

Příspěvek 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...
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW
Zamčeno
  • Podobná témata
    Odpovědi
    Zobrazení
    Poslední příspěvek
  • Battlefield 4 nejde spustit...
    od liborek » » v Hry
    0 Odpovědi
    10881 Zobrazení
    Poslední příspěvek od liborek
  • Počítač jde spustit až na druhý pokus
    od RoseWalker » » v Problémy s hardwarem
    8 Odpovědi
    14498 Zobrazení
    Poslední příspěvek od sim20
  • MS Office nelze spustit - Exception code: 0xc0000005
    od krysarr » » v Windows 11, 10, 8...
    3 Odpovědi
    8896 Zobrazení
    Poslední příspěvek od pcmaker

Zpět na „Programování a tvorba webu“