NOVINKA: Staň se datovým analytikem od 0 Kč a získej jistotu práce, lepší plat a nové kariérní možnosti. Více informací:

Diskuze – Lekce 7 - 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
Odpovídá 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á.

Odpovědět
28.1.2016 18:13
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.

 
Odpovědět
24.5.2016 19:19
Avatar
krepsy3
Tvůrce
Avatar
Odpovídá 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

Odpovědět
24.5.2016 20:21
Programátor je stroj k převodu kávy na kód.
Avatar
Odpovídá na krepsy3
Jakub Dvorský:24.5.2016 22:13

Přesně tak. Děkuji.

 
Odpovědět
24.5.2016 22:13
Avatar
krepsy3
Tvůrce
Avatar
Odpovídá na Jakub Dvorský
krepsy3:25.5.2016 14:04

Nemáš zač. :D

Odpovědět
25.5.2016 14:04
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.

Odpovědět
14.7.2016 18:43
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
Odpovídá na huty
krepsy3:14.7.2016 21:11

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

Odpovědět
14.7.2016 21:11
Programátor je stroj k převodu kávy na kód.
Avatar
Odpovídá 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

 
Odpovědět
31.7.2016 19:09
Avatar
krepsy3
Tvůrce
Avatar
Odpovídá 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);
}
Editováno 31.7.2016 20:10
Odpovědět
31.7.2016 20:09
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.

 
Odpovědět
5.2.2017 20:46
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.