Do nového roku jako lepší programátoři? Znovu otevíráme večerní školu programování. Nette framework, návrhové vzory, testování nebo vůbec poprvé kurzy ASP.NET dostupné odkudkoli v republice.

Diskuze: Náhoda vypisuje jen "0",

C# .NET .NET (C# a Visual Basic) Náhoda vypisuje jen "0", American English version English version

Avatar
Mike Kopecký:

Dobrý den mohu se zeptat proč mi console napíše "Bojovník má 0hp a 0dmg" , nějak tomu nemůžu přijít na kloub děkuji :)

http://www.itnetwork.cz/dev-lighter/790

 
Odpovědět 9.10.2016 15:16
Avatar
HONZ4
Člen
Avatar
Odpovídá na Mike Kopecký
HONZ4:

protože jsi hp ani dmg, vůbec nemodifikoval, takže je tam výchozí 0

 
Nahoru Odpovědět 9.10.2016 15:22
Avatar
HONZ4
Člen
Avatar
Odpovídá na Mike Kopecký
HONZ4:

navíc ten kód je celý úplně špatně

 
Nahoru Odpovědět 9.10.2016 15:26
Avatar
Mike Kopecký:

A kde mohu modfikovat? dopsal jsem toto:
public Bojovník(int hp0, int dmg0)
{
this.hp = hp0;
this.dmg = dmg0;
náhoda = new Random();
}

 
Nahoru Odpovědět 9.10.2016 15:30
Avatar
Mike Kopecký:

Já sám nevím, jsem nový u objektů a tohle jsem napsal ze zkušeností ze 3. epizody a nevím si rady.

 
Nahoru Odpovědět 9.10.2016 15:31
Avatar
HONZ4
Člen
Avatar
Odpovídá na Mike Kopecký
HONZ4:
class Program
{
    static void Main(string[] args)
    {
        Bojovník bojovník1 = new Bojovník();
        Console.WriteLine(bojovník1);

        Bojovník bojovník2 = new Bojovník(12,13);
        Console.WriteLine(bojovník2);

        Console.ReadKey();
    }
}


class Bojovník
{
    private Random náhoda;
    public int hp;
    public int dmg;

    public int VraťPočetHP()
    {
        return hp;
    }

    public Bojovník()//třeba takto:
    {
        náhoda = new Random();
        dmg = náhoda0();
        hp = náhoda0();
    }

    public Bojovník(int hp0, int dmg0)//nebo takto:
    {
        náhoda = new Random();
        dmg = dmg0;
        hp = hp0;
    }

    public int náhoda0()
    {
        return náhoda.Next(10, 20);
    }

    public override string ToString()
    {
        return String.Format("Bojovník má {0} hp a {1} dmg", hp, dmg);
    }

}
Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
 
Nahoru Odpovědět 9.10.2016 15:36
Avatar
Mike Kopecký:
:-)
Editováno 9.10.2016 15:47
 
Nahoru Odpovědět 9.10.2016 15:46
Avatar
Odpovídá na HONZ4
Mike Kopecký:

Děkuju moc! Vůbec nevím proč jsem do toho cpal Conver.ToInt32()
Příště si dám pozor :)

 
Nahoru Odpovědět 9.10.2016 15:47
Avatar
HONZ4
Člen
Avatar
Odpovídá na Mike Kopecký
HONZ4:

no to bylo špatně, protože si tím chtěl konvertovat Random třídu na int

 
Nahoru Odpovědět 9.10.2016 15:49
Avatar
Odpovídá na HONZ4
Luboš Běhounek (Satik):

Random by jsi neměl pokaždý vytvářet znova, jinak ti může házet často stejný výsledky.

Nahoru Odpovědět 9.10.2016 16:27
:)
Avatar
HONZ4
Člen
Avatar
Odpovídá na Luboš Běhounek (Satik)
HONZ4:

to je pravda, na to jsem zapomněl.

class Bojovník
{
    private static Random náhoda;
    public int hp;
    public int dmg;

    public Bojovník()
    {
        if(náhoda==null) náhoda = new Random();
        dmg = náhoda0();
        hp = náhoda0();
    }

    public int náhoda0()
    {
        return náhoda.Next(10, 20);
    }

    public override string ToString()
    {
        return String.Format("Bojovník má {0} hp a {1} dmg", hp, dmg);
    }
}

takže teď už to je v pořádku?

Editováno 9.10.2016 16:49
 
Nahoru Odpovědět 9.10.2016 16:48
Avatar
Odpovídá na HONZ4
Luboš Běhounek (Satik):

Diakritiku bych do názvů proměnných radši netahal a v konstruktoru testovat, jestli je náhoda null je zbytečnost... :)

Nahoru Odpovědět 9.10.2016 16:49
:)
Avatar
Mike Kopecký:

Proč nemám dávat do názvu diaktriku?

 
Nahoru Odpovědět 9.10.2016 16:50
Avatar
Marian Benčat
Redaktor
Avatar
Odpovídá na Mike Kopecký
Marian Benčat:

podporované to temer je,. ale je to strasna prasarna.. je to jako propichovat cizim lidem kondomy..

 
Nahoru Odpovědět  +1 9.10.2016 16:52
Avatar
HONZ4
Člen
Avatar
HONZ4:

já taky diakritiku normálně nepoužívám (jsem už tak zvyklý z C), teď jsem ji tam dal, protože jsem kopíroval jeho kód.

konstruktoru testovat, jestli je náhoda null..
Ani když jde o statickou? - to by přece nemělo pak žádný význam.

Editováno 9.10.2016 16:56
 
Nahoru Odpovědět 9.10.2016 16:54
Avatar
HONZ4
Člen
Avatar
HONZ4:

i když je pravda, že jsem mohl použít rovnou:

   class Bojovník
   {
       private static Random náhoda = new Random();
...
 
Nahoru Odpovědět 9.10.2016 16:58
Avatar
HONZ4
Člen
Avatar
Odpovídá na Mike Kopecký
HONZ4:

vypadá to fakt strašně ;) Krom toho i nerad do kódu zapojuji češtinu, protože kombinace jazyků vypadá taky divně.

 
Nahoru Odpovědět 9.10.2016 17:02
Avatar
Odpovídá na HONZ4
Luboš Běhounek (Satik):

Tak a nebo případně můžeš použít i statický kontruktor :)

Nahoru Odpovědět 9.10.2016 19:53
:)
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 18 zpráv z 18.