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 8 - Aréna s mágem (dědičnost a polymorfismus)

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
Petr Jadrníček:20.10.2020 20:49

Nefunguje mi nastaveni Tridy Bojovnik jako predek tridy Mag

class Mag: Bojovnik
    {
        private int mana;
        private int maxMana;
        private int MagickyUtok;
    }

    public Mag(string jmeno, int zivot, int utok, int obrana, Kostka kostka, int mana, int MagickyUtok): base(jmeno, zivot, utok, obrana, kostka)
    {
        this.mana = mana;
        this.maxMana = mana;
        this.MagickyUtok = mana;
    }

Nazvy argumentů jsou stále šedé.
Hlasi mi to tuto chybu:
Chyba CS7036 Není dán žádný argument, který by odpovídal požadovanému formálnímu parametru jmeno v Bojovnik.Bojov­nik(string, int, int, int, Kostka).

Můžete mi, prosím, objasnit, co mám špatně?

Protože jinak je tento kurz bez chyby a dost mi pomohl. Tak bych se nechtěl zastavit na této části.
Děkuji

 
Odpovědět
20.10.2020 20:49
Avatar
Odpovídá na Petr Jadrníček
Zdeněk Dvorský:12.1.2021 16:37

Chyba CS7036 Není dán žádný argument, který by odpovídal požadovanému formálnímu parametru jmeno v Bojovnik.Bojov­nik(string, int, int, int, Kostka <

Tuto chybu to vypíše pokud při vytváření konstruktoru Mag se neodkážu na konstruktor předka pomoci base.
Chybu budeš mít nejspíš již v tom předkovi což je Bojovnik. Mrkni na jeho konstruktor zda odpovídá tomuto:

public Bojovnik(string jmeno, int zivot, int utok, int obrana, Kostka kostka)
{
    this.jmeno = jmeno;
    this.zivot = zivot;
    this.maxZivot = zivot;
    this.utok = utok;
    this.obrana = obrana;
    this.kostka = kostka;
}
 
Odpovědět
12.1.2021 16:37
Avatar
Odpovídá na Zdeněk Dvorský
Lubomír Mitáš:26.8.2021 16:09

Mám stejný problém. Konstrukotor ve třídě Bojovník mám přesně podle tvého vzoru.

 
Odpovědět
26.8.2021 16:09
Avatar
Odpovídá na Lubomír Mitáš
Lubomír Mitáš:26.8.2021 16:18

Už jsem na to přišel. Stejně jako tazatel jsem konstruktor třídy Mag měl mimo třídu. Konstruktor jsem musel hodit do složených závorek třídy Mag:

namespace Arena
{
    class Mag: Bojovnik
    {
        private int mana;
        private int maxMana;
        private int magickyUtok;

        public Mag(string jmeno, int zivot, int utok, int obrana, Kostka kostka, int mana, int magickyUtok) : base(jmeno, zivot, utok, obrana, kostka)
        {
            this.mana = mana;
            this.maxMana = mana;
            this.magickyUtok = magickyUtok;
        }
    }


}
 
Odpovědět
26.8.2021 16:18
Avatar
Tomáš Sobota:22.6.2022 20:33

Ahoj, mám malý dotaz. Ten private atribut zprava z třídy Bojovník ten potomek Mag opravdu zdědí ?(a jen není vidět a není přímo přístupný - jen přes tu metodu předka)?

Odpovědět
22.6.2022 20:33
Done is better than perfect
Avatar
Jaroslav Drobek:3.8.2022 6:24

Hodnocení:

  • Tělo metody Utoc pro třídu Mag (první verze) nemusí obsahovat počáteční inicializaci proměnné uder hodnotou 0, stačí tuto proměnnou deklarovat.
  • Hláška "{0} použil magii za {1} hp" je zavádějící - použitá magie je jen částí celkové síly úderu.
 
Odpovědět
3.8.2022 6:24
Avatar
Rostislav Neidhardt:6.2.2023 17:09

Ten tip:"Stejně můžeme volat i jiný konstruktor v té samé třídě
(ne předka), jen místo base použijeme this." ->můžete mi někdo napsat příklad, kus kódu, jak je to myšleno? Zkoušel jsem to různě napsat i pročítal C# manual, ale ve výsledku jsem tuto myšlenku vůbec nepochopil..:)Díky

 
Odpovědět
6.2.2023 17:09
Avatar
David Kočí
Člen
Avatar
David Kočí:19.9.2023 16:54
Console.WriteLine(((Mag)b).GrafickaMana());

Ahoj, nejspíše jsem to přehlédl v dřívějších lekcích, ale dokáže mi někdo objasnit tuhle zvláštní syntaxi? Jde mi o ty závorky, původně jsem si myslel, že jsou tam navíc, ale správně je pouze tato varianta viz výše... když se na to dívám, prostě mě napadlo, že by se to dalo napsat takhle

Console.WriteLine((Mag)b.GrafickaMana());

ale tohle neprojde...Díky moc za odpověď.

 
Odpovědět
19.9.2023 16:54
Avatar
David Novák
Tvůrce
Avatar
Odpovídá na David Kočí
David Novák:28.9.2023 8:10

Ahoj Davide, děkujeme za podnět, který jsem předal k řešení.

 
Odpovědět
28.9.2023 8:10
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 138.