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

Neregistrovaný
Avatar
:8.10.2012 12:53

Přijde mi to poměrně zmatené. Chybí hlavičky metod (main, utoc - pro začátečníka dost matoucí, jsou sice na konci, ale tam se možná čitatel ani nedostane), navíc při výpisu stavů bojovníka chybí v kódu odřádkování \n, takže se to vypíše jinak než je ukázáno, opět zmate.
Špatně pojmenovaná metoda vratPosledniZ­pravu()(vytvá­ří špatné návyky při používání getrů a setrů), spíš bych volil jen vratZpravu().

 
Odpovědět
8.10.2012 12:53
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na
David Hartinger:8.10.2012 13:15

Z tvého komentáře mám dojem, že si myslíš, že toto je samostatný tutoriál pro úplné začátečníky. Je to 16. tutoriál, ne první. Navíc navazuje na minulé díly, je to třída k již založenému projektu z minula.

Na výpis stavů se podívám.

Odpovědět
8.10.2012 13:15
New kid back on the block with a R.I.P
Avatar
Unafený Konyk:4.1.2014 1:35

Zdravim, prosim o radu .. Vzdy ked sa pokusim vypisat grafickyZivot()v Main,program zivot na obrazovku nevypise a program sa pravdepodobne zacykli.(proc + ram 100%)

 
Odpovědět
4.1.2014 1:35
Avatar
Odpovídá na Unafený Konyk
Unafený Konyk:4.1.2014 13:35
public class Hrdina {
        public String meno;
        public int zivot;
        public int maxZivot;
        public int utok;
        public int obrana;
        public  Kocka kocka;



        public Hrdina (String getmeno,int getzivot,int getutok,int getobrana,Kocka getkocka){
                this.meno=getmeno;
                this.zivot=getzivot;
                this.utok=getutok;
                this.obrana=getobrana;
                this.kocka=getkocka;

        }

        public boolean nazivu()
        {
                if (zivot > 0)
                        return true;
                else
                        return false;
        }



        public void branSa(int uder){
                int zranenie = uder - (obrana+ kocka.hod());
                if (zranenie > 0)
                {zivot = zivot - zranenie;
                }
                if (zivot <=0)
                {zivot = 0;}
        }


        public void utoc(Hrdina souper)
        {
                int uder = utok + kocka.hod();

                souper.branSa(uder);
        }


        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 < pocet; i++)
            s += "#";
        for (int i = 0; i < celkem - pocet; i++)
            s += " ";
        s += "]";
        return s;
    }



        @Override
        public String toString()
        {
                return meno;
        }
}
 
Odpovědět
4.1.2014 13:35
Avatar
adder
Člen
Avatar
adder:28.1.2014 16:13

nemá být správně v metodě branSe() vzužita metoda nastavZpravu?

nastavZpravu(String.format("%s odrazil utok", jmeno));

takhle? :)

Odpovědět
28.1.2014 16:13
I’m going to lay this brick as perfectly as a brick can be laid.
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na adder
David Hartinger:21.3.2014 16:26

Jo, asi by to bylo lepší.

Odpovědět
21.3.2014 16:26
New kid back on the block with a R.I.P
Avatar
DeamoniX
Člen
Avatar
Odpovídá na Unafený Konyk
DeamoniX:10.4.2014 22:43

vím, že nejspíš odpovídám pozdě, ale chce to nastavit maxZivot, hoď do konstruktoru

this.maxZivot = zivot;
 
Odpovědět
10.4.2014 22:43
Avatar
Unafený Konyk:12.4.2014 18:43

Áno už všetko ide ako má, takže ďakujem..

 
Odpovědět
12.4.2014 18:43
Avatar
Tomas Hlinovsky:8.12.2015 21:18

je to super jenom to vypisování mi připadá hrozně komplikovaný asi si to budu muset ještě pořádně projít.. jenom nechápu proč někdy tu zprávu někdy měníš přes metodu "nastavZpravu" a nekdy natvrdo zprava="blabla" coz mi teda prijde logictejsi.

 
Odpovědět
8.12.2015 21:18
Avatar
Lubor Pešek
Člen
Avatar
Lubor Pešek:10.12.2015 18:06

Když saháš na atributy cizí třídy
zprava="blabla"
tak porušuješ princip OOP - zapouzdření.

Proto se používají settry a gettry - metody, které zpřístupňují atributy třídy.

Jo a jen pár poznámek pro příklad XES240:

  • nepoužívej v deklaraci public. Potom ti ty atributy může měnit cizí třída, přesně jak jsem popisoval výše.
  • je pěkné, že zapojuješ gettry:) ale použít název parametru jako "getxxxx" je blbost:) getXxxx() - tak jsou pojmenované právě návratové metody.
  • naplňování atributů v konstruktoru pomocí slovíčka "this" se používá především v případě, kdy jsou oba názvy shodné (jak atribut třídy tak parametr konstruktoru/me­tody).

Ono to funguje i takto:

public class Test{

        private int cislo;

        public Test(int druheCislo){
                this.cislo = druheCislo;
        }
}

ale v tomto případě je lepší a čistější napsat toto:

public class Test{

        private int cislo;

        public Test(int druheCislo){
                cislo = druheCislo;
        }
}

¨

Pochopitelně jak jsem říkal - v případě shodnosti jmen, this tam být MUSÍ:
public class Test{

private int cislo;

public Test(int cislo){
this.cislo = cislo;
}
}

Odpovědět
10.12.2015 18:06
Existují dva způsoby, jak vyřešit problém. Za prvé vyhoďte počítač z okna. Za druhé vyhoďte okna z počítače.
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 71.