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 – 7. diel - Bojovník do arény

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 Lukáš Hypša
Neaktivní uživatel:28.1.2016 18:13

Protože metoda NastavZpravu bere jako parametr string, a tohleto - "{0} útoří za {1} hp", jmeno, uder - samozřejmě text není. je to text a dvě nějaké proměnné. metoda String.Format takový výraz zpracuje, a na místa se závorkami dosadí textovou reprezentaci těch proměnných co jsi uvedl. Mohlo tě zmást, že Console.Write() umí takový výraz přechroustat i bez String.Format - pokud vím, tak jakmile jí toto předáš, tak String.Format vnitřně zavolá.

Odpovedať
Neaktivní uživatelský účet
Avatar
Jakub Dvorský:24.5.2016 19:19

Zdravím, chtěl bych se zeptat jestli můžu nějak upravit GrafickyZivot() tak aby to míst odečítání přičítalo. Děkuji.

Avatar
krepsy3
Tvůrce
Avatar
Odpovedá na Jakub Dvorský
krepsy3:24.5.2016 20:21

Myslíš nějak takto?:

public string GrafickyZivot()
{
        string s = "[";
        int celkem = 20;
        double pocet = Math.Round(((double)zivot / maxZivot) * celkem);
        if ((pocet == 0) && (Nazivu()))
                pocet = 1;
        for (int i = 0; i < (celkem - pocet); i++)
                s += "#";
        s = s.PadLeft(celkem + 1);
        s += "]";
        return s;
}

Jinými slovy od leva přibývá počet (#) s rostoucím poškozením, tedy při dvaceti nastane smrt bojovníka - jinými slovy zbývající život v metodě akorát odečteme od celkového počtu políček (z 20), čímž vlastně výstup invertujeme

Odpovedať
Programátor je stroj k převodu kávy na kód.
Avatar
Odpovedá na krepsy3
Jakub Dvorský:24.5.2016 22:13

Přesně tak. Děkuji.

Avatar
krepsy3
Tvůrce
Avatar
Odpovedá na Jakub Dvorský
krepsy3:25.5.2016 14:04

Nemáš zač. :D

Odpovedať
Programátor je stroj k převodu kávy na kód.
Avatar
huty
Člen
Avatar
huty:14.7.2016 18:43

Moc nechápu funkci metody NastavZpravu(string zprava). podle mě je to zbytečný, stejně ta zpráva už je nastavená v proměnné zpráva a neni třeba ji znovu předávat proměnné zpráva... Funguje mi to i bez téhle metody.

Odpovedať
obecně je lepší používat více proměnných a dodržovat přehlednost, než psát co nejkratší kód a po měsíci zapomenout, j...
Avatar
krepsy3
Tvůrce
Avatar
Odpovedá na huty
krepsy3:14.7.2016 21:11

Ano, David to i zmiňuje. Je to kvůli správnosti komunikace objektů.

Odpovedať
Programátor je stroj k převodu kávy na kód.
Avatar
Odpovedá na krepsy3
Petr Lipovský:31.7.2016 19:09

Souhlasím s hutym. David zmiňuje nepoužití public proměnné. Ale co se týče komunikace mezi objekty. Metoda NastavZpravu není komunikace mezi objekty. Vždy ji nastavuji ve stejném objektu! Komunikace mezi objekty je metoda Utoc(souper), kde jeden objekt/bojovnik předá sílu úderu druhému objektu. Význam NastavZpravu mi uniká. Jedině by se to muselo upravit(napsat jinak) tak, aby i druhý bojovník, přepsal nebo upravil zprávu toho prvního popř. naopak. Jestli to vůbec jde.
(Spíše by to musel poslat jako žádost/(parametr funkce) tomu druhému (podobně jako silu uderu)?
Nebo se mýlím?
Ale jinak je celý Váš web zajímavý a užitečný. Díky

Avatar
krepsy3
Tvůrce
Avatar
Odpovedá na Petr Lipovský
krepsy3:31.7.2016 20:09

Ano, metoda je defakto zbytečná. Ale nebylo by asi úplně hezké, aby konkrétní instance bojovníka měnila ve své metodě přímo univerzální zprávu "string zprava". Je fakt, že z kódového hlediska by to mělo smysl v momentě, kdy by byla zprava staticky vázaná na třídu, čili:

private static string zprava;

private void NastavZpravu(string zprava)
{
        this.zprava = zprava;
}

//...

public void Utoc(Bojovnik souper)
{
        int uder = utok + kostka.hod();
        NastavZpravu(String.Format("{0} útočí s úderem za {1} hp", jmeno, uder));
        souper.BranSe(uder);
}

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);
}
Editované
Odpovedať
Programátor je stroj k převodu kávy na kód.
Avatar
Teo Parvanov
Člen
Avatar
Teo Parvanov:5.2.2017 20:46

Našeho bojovníka vytvoříme jako další třídu k projektu Arena?
Díky za odpověd.

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 78.