IT rekvalifikácia. Seniorní programátori zarábajú až 6 000 €/mesiac a rekvalifikácia je prvým krokom. Zisti, ako na to!

Diskusia – 5. 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
Avatar

Nevyplnené
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().

 
Odpovedať
8.10.2012 12:53
Avatar
David Hartinger
Vlastník
Avatar
Odpovedá 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.

Odpovedať
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%)

 
Odpovedať
4.1.2014 1:35
Avatar
Odpovedá 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;
        }
}
 
Odpovedať
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? :)

Odpovedať
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
Odpovedá na adder
David Hartinger:21.3.2014 16:26

Jo, asi by to bylo lepší.

Odpovedať
21.3.2014 16:26
New kid back on the block with a R.I.P
Avatar
DeamoniX
Člen
Avatar
Odpovedá 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;
 
Odpovedať
10.4.2014 22:43
Avatar
Unafený Konyk:12.4.2014 18:43

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

 
Odpovedať
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.

 
Odpovedať
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;
}
}

Odpovedať
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.
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.

Zatiaľ nikto nevložil komentár - buď prvý!