NOVINKA - Online rekvalifikační kurz Python programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze – Lekce 5 - Bojovník do arény

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
Avatar
Vykuk
Člen
Avatar
Vykuk:19.12.2018 17:29

Ve třídě Bojovnik v metodě BranSe je chybka. Zapisuje se rovnou do proměnné zprava, která tam není deklarovaná, takže se to zapisuje přímo do privátního atribudu třídy. A následně se to tam uloží znovu pomocí metody NastavZpravu().
Jinak díky za tenhle seriál. Je to vše skvěle podáno.

public void BranSe(int uder)
        {
            int zraneni = uder - (obrana + kostka.hod());
            if (zraneni > 0)
            {
                zivot -= zraneni;
                zprava = String.Format("{0} utrpěl poškození {1} hp", jmeno, zraneni);
                if (zivot <= 0)
                {
                    zivot = 0;
                    zprava += " a zemřel";
                }

            } else
                zprava = String.Format("{0} odrazil útok", jmeno);
            NastavZpravu(zprava);
        }
 
Odpovědět
19.12.2018 17:29
Avatar
Josef Pospíšil:7.10.2019 13:14

Můžu se zeptat jestli je to proti něčemu, kdyby byly zprávy zrovna vypisovány z metody Utoc:

public void Utoc(Bojovnik souper)
        {
            int uder = utok + kostka.Hod();
            Console.WriteLine("{0} útočí s úderem za {1} HP", jmeno, uder);
            souper.BranSe(uder);
        }

BranSe:

public void BranSe(int uder)
        {
            int zraneni = uder - (obrana + kostka.Hod());
            if(zraneni > 0)
            {
                zivot -= zraneni;
                zprava = String.Format("{0} utrpěl poškození {1} HP", jmeno, zraneni);
                if(zivot <= 0)
                {
                    zivot = 0;
                    zprava += " a zemřel";
                }
            }
            else
            {
                zprava = string.Format("{0} odrazil útok", jmeno);
            }
            Console.WriteLine(zprava);

        }

Byl by to pak nějaký problém při dalších operacích, nebo proč musí být ve zvláštní metodě?

Editováno 7.10.2019 13:16
 
Odpovědět
7.10.2019 13:14
Avatar
Marián Lesňák:2.3.2020 9:55

Ahoj.
Je to super všetko.
Len mam vydku k tomu, či by nebolo lepšie otestovať útok s druhým bojovníkom, a nie útok na samého seba.(Pripadá mi to také nelogické.)
Riešenie je na obrázku:

 
Odpovědět
2.3.2020 9:55
Avatar
Odpovídá na Marián Lesňák
Marián Lesňák:2.3.2020 10:09

Odvolávam. Máš to tam napísané.

 
Odpovědět
2.3.2020 10:09
Avatar
David
Člen
Avatar
David:11.4.2020 14:44

Díky za článek. ;-)

 
Odpovědět
11.4.2020 14:44
Avatar
Robin Blažek:2.5.2020 15:06

Díky moc za článek a za parádní ukázkový příklad s bojovníky :)

 
Odpovědět
2.5.2020 15:06
Avatar
Jiří Rajt
Člen
Avatar
Jiří Rajt:6.8.2020 12:58

Díky za článek :-)

 
Odpovědět
6.8.2020 12:58
Avatar
Odpovídá na Josef Pospíšil
Zdeněk Dvorský:20.12.2020 14:29

Josef Pospíšil

Můžu se zeptat jestli je to proti něčemu, kdyby byly zprávy zrovna vypisovány z metody Utoc a BranSe<

Z hlediska objektového návrhu není vhodné, aby metoda objektu přímo vypisovala do konzole (pokud není k výpisu objekt určený). A to rozhodně metoda Utoc a BranSe není! Proto se zpráva uloží nejdřív do zvoleného atributu (uložíme do řetězce pro pozdější vypsání).
Samozřejmě nikomu nic nebráni to vypisovat přímo z těchto metod, ale tak to prostě není správné.

 
Odpovědět
20.12.2020 14:29
Avatar
Jan Jurníček:3.3.2021 19:12

Moment: Atributy? Něco se změnilo? O atributech tříd se přece vždycky píše jako o speciálních instancích tříd odvozených od abstraktní třídy Attribute ze jmenného prostoru System:

https://docs.microsoft.com/…em.attribute?…

Názvy odvozených tříd mají končit na Attribute, například MyFilterAttribute a do záhlaví se zapisují před deklaraci tříd do hranatých závorek, přičemž z jejich názvu se může to koncové Attribute vynechat. Bylo by to na lekci, ale vztahují se k třídě, metodě nebo vlastnosti, ne k instanci.

To, co zde nazýváš atributy, mám naučeno jako datové složky. Něco se změnilo?

Editováno 3.3.2021 19:15
 
Odpovědět
3.3.2021 19:12
Avatar
Jan Jurníček:3.3.2021 19:54

Teď jsem se mrkl, v angličtině tomu říkají fields (tedy v češtině pole, ale to by se mohlo plést s array). https://docs.microsoft.com/…ructs/fields

 
Odpovědět
3.3.2021 19:54
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 78.