Stránka 1 z 1

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

Napsal: 05 bře 2016 11:19
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 ?

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

Napsal: 05 bře 2016 14:14
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.

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

Napsal: 05 bře 2016 15:15
od lukas.sei
Je to konzolovka. Tlačítko myslím na klávesnici.

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

Napsal: 05 bře 2016 16:24
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.

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

Napsal: 06 bře 2016 08:52
od lukas.sei
Mohl bys mi prosím poslat nějakou ukázku kódu, jak bys to vyřešil ty ?

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

Napsal: 06 bře 2016 09:18
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:

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

Napsal: 06 bře 2016 11:11
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

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

Napsal: 06 bře 2016 12:20
od lukas.sei
Děkuji oběma,
Jak příjdu domů, tak se n to podívám.