C# - jak spustit určitou část kódu, když je zmáčknuto tlačítko ale nečekat na něho

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

Odpovědět
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, když je zmáčknuto tlačítko ale nečekat na něho

Příspěvek od lukas.sei »

Čaute,
Ve C# dělám konzolovou aplikaci a potřebuji, aby pokaždé když kliknu na určité tlačítko se spustila část kódu.
kód vypadá asi takto:

Kód: Vybrat vše

while (b1.Nazivu() && b2.Nazivu())
                    {
                        
                            b1.Utoc(b2);
                            Vykresli();
                            VypisZpravu(b1.VratPosledniZpravu()); // zpráva o útoku
                            VypisZpravu(b2.VratPosledniZpravu()); // zpráva o obraně                  
                            if (b2.Nazivu())
                            {
                                b2.Utoc(b1);
                                Vykresli();
                                VypisZpravu(b2.VratPosledniZpravu()); // zpráva o útoku
                                VypisZpravu(b1.VratPosledniZpravu()); // zpráva o obraně
                            }
                            Console.WriteLine();
                        
                    }
A já potřebuji, aby když zmáčknu tlačítko F1 se spustil tento kód:

Kód: Vybrat vše

bojovnik1.PridejHP(10);
Dalo by se přirovnat, jako používání lektvarů v boji.

zkoušel jsem to takhle:

Kód: Vybrat vše

do
{
while (b1.Nazivu() && b2.Nazivu() && !Console.KeyAvailable) //boj
                    {
                        
                            b1.Utoc(b2);
                            Vykresli();
                            VypisZpravu(b1.VratPosledniZpravu()); // zpráva o útoku
                            VypisZpravu(b2.VratPosledniZpravu()); // zpráva o obraně                  
                            if (b2.Nazivu())
                            {
                                b2.Utoc(b1);
                                Vykresli();
                                VypisZpravu(b2.VratPosledniZpravu()); // zpráva o útoku
                                VypisZpravu(b1.VratPosledniZpravu()); // zpráva o obraně
                            }
                            Console.WriteLine();
                        
                    }
              }
              while (Console.ReadKey(true).Key != ConsoleKey.F1); //čekání na tlačítko, pro použití lektvaru
              {
                      bojovnik1.PidejHP(10);
              }
            
Takhle to sice fungovalo, ale po stisknutí tlačítka už se neobnovil boj. A celý kód se vypnul, aniž by někdo z nich zemřel.

Může mi prosím někdo pomoct ?
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, když je zmáčknuto tlačítko ale nečekat na něho

Příspěvek od satik »

Děláš to celý nějak divně :) .

Měl bys mít hlavní smyčku, ve který pokaždý postupně uděláš:
- zpracuješ vstup uživatele, pokud nějakej je
- spustíš update hry (výpočet veškerý logiky)
- vykreslíš

Máš to jako konzolovku nebo formulářovou aplikaci? Někde píšeš konzolovou, ale zároveň někde píšeš "tlačítko", což je formulářovej prvek.
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
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, když je zmáčknuto tlačítko ale nečekat na něho

Příspěvek od lukas.sei »

Je to konzolovka. Tlačítko myslím na klávesnici.
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, když je zmáčknuto tlačítko ale nečekat na něho

Příspěvek od satik »

Ok.
Pak herni smycka viz vyse. Nemel bys michat moc vykresleni do logiky, na coz to tady vypada :)
V zpracovani vstupu bys mel reakci na uzivatele a v updatu hry to pak zpracovavat, zpracovavat logiku nepratele a provadet takovy ty vsechny veci jako treba to pridavani/ubyvani zovotu.

Pokud chces delat neco jako tu nemocnici, co kazdych x sekund prida y zivota, pak bys mel si udelat treba tridu Nemocnice, jejiz update by jsi volal pokazdy, ale uvnitr by byla kontrola, jaka doba ubehla od minuleho pridani zivota a provest to az pak.
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
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, když je zmáčknuto tlačítko ale nečekat na něho

Příspěvek od lukas.sei »

Mohl bys mi prosím poslat nějakou ukázku kódu, jak bys to vyřešil ty ?
Uživatelský avatar
faraon
Master Level 8.5
Master Level 8.5
Příspěvky: 7415
Registrován: 23 pro 2010 09:23

Re: C# - jak spustit určitou část kódu, když je zmáčknuto tlačítko ale nečekat na něho

Příspěvek od faraon »

https://msdn.microsoft.com/cs-cz/librar ... 10%29.aspx ?

Mimochodem, už před víc než čtyřiceti lety měl BASIC příkaz ON, který reagoval na zadanou událost přerušením běhu programu a vyvoláním podprogramu... Dřív než vznikl Micro$oft :lol:
"Král Lávra má dlouhé oslí uši, král je ušatec!

(pravil K. H. Borovský o cenzuře internetu)
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, když je zmáčknuto tlačítko ale nečekat na něho

Příspěvek od satik »

Tady máš takovou rozdělanou ukázkovou hru, je to splácaný za hodinu.

F1 lezeš do nemocnice, která tě uzdravuje (za peníze), F2 vylezeš ven, F3 upgraduje nemocnici, aby léčila víc (za stejný peníze, takže tě to vyjde levnějc)
šipkama se pohybuješ (ale nemá to zatím žádný vliv)
A útok na bandity, seberou ti 0-10 života a dostaneš 0-5 peněz
ESC vypne hru
Přílohy
ConsoleGame.zip
(48.55 KiB) Staženo 31 x
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
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, když je zmáčknuto tlačítko ale nečekat na něho

Příspěvek od lukas.sei »

Děkuji oběma,
Jak příjdu domů, tak se n to podívám.
Odpovědět
  • Podobná témata
    Odpovědi
    Zobrazení
    Poslední příspěvek
  • Překousané kabely reset sw, tlačítko start na case
    od Speedhack » » v Problémy s hardwarem
    12 Odpovědi
    15445 Zobrazení
    Poslední příspěvek od atari
  • 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
    14500 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“