Diskuze: Náhoda vypisuje jen "0",

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

Aktivity (1)
Avatar
Mike Kopecký:9.10.2016 15:16

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:9.10.2016 15:22

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:9.10.2016 15:26

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

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

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ý:9.10.2016 15:31

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:9.10.2016 15:36
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ý:9.10.2016 15:46
:-)
Editováno 9.10.2016 15:47
 
Nahoru Odpovědět 9.10.2016 15:46
Avatar
Odpovídá na HONZ4
Mike Kopecký:9.10.2016 15:47

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:9.10.2016 15:49

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):9.10.2016 16:27

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:9.10.2016 16:48

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):9.10.2016 16:49

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ý:9.10.2016 16:50

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:9.10.2016 16:52

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
"C# 3.0 (2007) volal Java 8 (2014), že chce svoje featury zpět"
Avatar
HONZ4
Člen
Avatar
HONZ4:9.10.2016 16:54

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:9.10.2016 16:58

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:9.10.2016 17:02

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):9.10.2016 19:53

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.