Mikuláš je tu! Získaj 90 % extra kreditov ZADARMO s promo kódom CERTIK90 pri nákupe od 1 199 kreditov. Len do nedele 7. 12. 2025! Zisti viac:
NOVINKA: Najžiadanejšie rekvalifikačné kurzy teraz s 50% zľavou + kurz AI ZADARMO. Nečakaj, táto ponuka dlho nevydrží! Zisti viac:

Diskusia – 10. diel - Aréna s mágom (dedičnosť a polymorfizmus)

Späť

Upozorňujeme, že diskusie pod našimi online kurzami sú nemoderované a primárne slúžia na získavanie spätnej väzby pre budúce vylepšenie kurzov. Pre študentov našich rekvalifikačných kurzov ponúkame možnosť priameho kontaktu s lektormi a študijným referentom pre osobné konzultácie a podporu v rámci ich štúdia. Toto je exkluzívna služba, ktorá zaisťuje kvalitnú a cielenú pomoc v prípade akýchkoľvek otázok alebo projektov.

Komentáre
Posledné komentáre sú na spodnej časti poslednej stránky.
Avatar
Odpovedá na nevyz
Jiří Dušek:14.1.2019 14:26

Matoda GrafickyUkazatel by vůbec neměla používat metodu Naživu(), pokud ji chceme používat i k vykreslení many. Přidávat kvůli tomu další parametr "zobrazeniZivota" ke zjištění, zda jde o ukazatel je špatné řešení. To už pak není moc univerzální metoda. Proto pokud chceme vykreslit prázdný ukazatel aktuální hodnota (ať už života či čehokoliv) musí být rovna nule. Pokud nám po zaokrouhlení aktuální hodnoty na počet "čárek" na ukazateli přesto vychází počet nulový, stačí provést kontrolu zda "aktuální" je větší než 0. Což je to samé, co dělá metoda Naživu(), ale je to univerzální pro všechny typy ukazatelů. Kód by tedy vypadal správně takto:

protected string GrafickyUkazatel(int aktualni, int maximalni)
{
    string s = "[";
    int celkem = 20;
    double pocet = Math.Round(((double)aktualni / maximalni) * celkem);
    if ((pocet == 0) && (aktualni > 0))
        pocet = 1;
    for (int i = 0; i < pocet; i++)
        s += "#";
    s = s.PadRight(celkem + 1);
    s += "]";
    return s;
}
Avatar
Patrik Pastor:19.1.2019 18:04

nejde mi z program.cs vzít private metodu VypisBojovnika a dát ho do Arena.cs do metody private vykresli. Vůbec se mi ve Vykresli nezobrazí VypisBojovníka (po zadání počátečních pímsen "vy", mi max nabízí Vypiszpravu nebo Vykresli), nevíte někdo proč? jeto kvůli tomu že modifikátor VypisBojobníka je private? (ale v zadání je taky), nebo kde je prosím problém, díky za odpoved

Avatar
Odpovedá na pocitac770
Patrik Pastor:19.1.2019 18:17

Takže je to v tomto případě vlastně jedno ne? Proč se tedy dávájí typy primitivní, když vím, že to budou "vylepšené". Proč jednou nenapíšeme Vylepsený vylepseny = new Vylepseny() ? Proč to dávat to primitivního typu vůbec?

Avatar
Odpovedá na Patrik Pastor
Patrik Pastor:19.1.2019 18:25

Jo už vím, nevím proč jsem tu metodu psal do program.cs :DD neumim číst.

Avatar
pocitac770
Tvůrce
Avatar
Odpovedá na Patrik Pastor
pocitac770:19.1.2019 19:38

Protože představ že by jsi mèl takovýchto typů bojovníků víc, měl by jsi třeba ještě lukostřelce, trpaslíka, mechanika, atp, každý by měl nějaký svůj bonus. Pokud bys chtěl zapisovat každého do své vlastní proměnné dle typu, jak by jsi to udělal, když by jsi nevěděl, jaký typ to bude? I kdybys měl připravených třeba 5 proměnných, tak kterou by jsi pak používat pro účely souboje? A dále, psal by jsi pro každou kombinaci bojovníků zvlášť metodu pro souboj? Ne, prostě uděláš metodu pro souboj obecně bojovník-bojovník, a následně již každý z nich vyhodnotí svoji akci dle kódu, co má v sobě napsán. Máš proměnnou tvar, a chceš tam uložit tvar co si vytvoří uživatel, a dále s ním pracovat (třeba ho vykreslit), jak uděláš, aby ta jedna proměnná mohla obsahovat třeba kruh, obdelník, čtverec, lichoběžník, padesátiúhelník, atp... každý z nich má trochu jiné parametry jinak se vykresluje, takže na každého budeš mít zvlášť třídu. A pak třidu "Tvar", ze které všechny budou dědit, ta bude mít nějaké základní metody, které ostatní budou přepisovat dle své potřeby, avšak je můžeš všechny volat z proměnné typu "Tvar", do které taktéž můžeš libovolný tvar uložit.

Avatar
Josef Pospíšil:11.10.2019 7:47

Když jsem procházel publikaci od Pavla Boreho : C# bez předchozích znalostí, tak tam žádné odkazování na konstruktor předka v podobě base nebylo. Je to tedy nutné psát vždy, nebo je to starší věc a dnes už se nepoužívá, nebo jsem to jen nějak nepochopil? děkuji

Avatar
Hans
Člen
Avatar
Odpovedá na Josef Pospíšil
Hans:11.10.2019 8:43

Není to nutné psát, pokud je konstruktor předka bezparametrický, jinak ano.

Avatar
David
Člen
Avatar
David:14.4.2020 23:35

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

Avatar
Robin Blažek:8.5.2020 16:17

Parádní článek a celkově celá série lekcí s arénou :)

Avatar
Odpovedá na Jiří Dušek
Bohumír Bednařík:27.7.2020 17:31

Ta funkce Nazivu byla jen ukázková (pokud si dobře vzpomínám na předchozí lekce). Tvoje řešení je samozřejmě univerzálnější.

Editované
Posledné komentáre sú na spodnej časti poslednej stránky.
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zobrazené 10 správy z 138.