IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Neaktivní uživatel:4.1.2017 18:41

Zdravím . Mám problém s random spawnom guličký (ball2) . Po stiknutí tlačidla na spustenie timeru sa pár krát stane že sa zjaví iba ball1 a ball2 nie.
Timer:

palka1.Left = Cursor.Position.X - (palka1.Width / 2);//Pomocou kurzorom myši pohybujeme s pálkou
            ball2.Left += speed_left2;
            ball2.Top += speed_top2;
            ball1.Left += speed_left;
            ball1.Top += speed_top;
            ball2.Visible = true;


            if (ball2.Bottom >= palka1.Top && ball2.Bottom <= palka1.Bottom && ball2.Left >= palka1.Left && ball2.Right <= palka1.Right)
            {
                speed_top2 += 2;
                speed_left2 += 2;
                speed_top2 = -speed_top2;
                score += 1;
                labelpoints.Text = score.ToString();
            }
            if (ball1.Bottom >= palka1.Top && ball1.Bottom <= palka1.Bottom && ball1.Left >= palka1.Left && ball1.Right <= palka1.Right)
            {
                speed_top += 2;
                speed_left += 2;
                speed_top = -speed_top;
                score += 1;
                labelpoints.Text = score.ToString();
            }
            if (ball2.Left <= playground.Left)
            {
                speed_left2 = -speed_left2;
            }
            if (ball2.Right >= playground.Right)
            {
                speed_left2 = -speed_left2;
            }
            if (ball2.Top <= playground.Top)
            {
                speed_top2 = -speed_top2;
            }
            if (ball2.Bottom >= playground.Bottom)
            {
                timer2.Enabled = false;
                labelend.Visible = true;
                labelpoints.Text = "0";
                ////////////////////////////////
            }
            if (ball1.Left <= playground.Left)
            {
                speed_left = -speed_left;
            }
            if (ball1.Right >= playground.Right)
            {
                speed_left = -speed_left;
            }
            if (ball1.Top <= playground.Top)
            {
                speed_top = -speed_top;
            }
            if (ball1.Bottom >= playground.Bottom)
            {
                timer2.Enabled = false;
                labelend.Visible = true;
            }
A KeyPressed :
timer2.Enabled = true;
                Random r = new Random(); ball1.Top = r.Next(1, 50); ball1.Left = r.Next(1, 1500);//Náhodné spawnutie(vytvorenie) lopty č.1
                Random r2 = new Random(); ball2.Top = r.Next(1, 50); ball2.Left = r.Next(1, 1500);//Náhodné spawnutie(vytvorenie) lopty č.2
                speed_left = 4;
                speed_top = 4;
                speed_left2 = 3;
                speed_top2 = 3;
                score = 0;
                labelpoints.Text = "0";
                timer2.Enabled = true;
                labelend.Visible = false;

\---

Odpovědět
4.1.2017 18:41
Neaktivní uživatelský účet
Avatar
Pjanus
Člen
Avatar
Odpovídá na Neaktivní uživatel
Pjanus:4.1.2017 18:51

Problém bude pravděpodobně když vytváříš instance Random, tím že je vytváříš v takřka stejný čas je možné že získávají stejný seed (hodnota která určuje jaká čísla generují) a tudíž se může stát že se objeví na stejném místě. Můžeš to opravit nejlíp tak že budeš vytvářet jenom jednu instanci Random, vpodstatě nikdy není důvod vytvářet dvě.

 
Nahoru Odpovědět
4.1.2017 18:51
Avatar
Nahoru Odpovědět
4.1.2017 18:54
Neaktivní uživatelský účet
Avatar
Odpovídá na Pjanus
Neaktivní uživatel:4.1.2017 18:56

Vyskušal som to a s ball1 sa spawnuje príliž nízko a ball2 ani nevidieť po vymazaní

Random r2 = new Random(); ball2.Top = r.Next(1, 50); ball2.Left = r.Next(1, 1500);//Náhodné spawnutie(vytvorenie) lopty č.2
Nahoru Odpovědět
4.1.2017 18:56
Neaktivní uživatelský účet
Avatar
HONZ4
Člen
Avatar
Odpovídá na Neaktivní uživatel
HONZ4:4.1.2017 19:50

já sice vůbec nechápu co to má dělat. Takže jen malé upozornění: Random nevytvářej za běhu aplikace jednak několikanásobně (jak napsal Pjanus), ale ani opakovaně. Nejlépe je dát si jeden globální, a ten vytvořit po spuštění aplikace a používat pro vše.

 
Nahoru Odpovědět
4.1.2017 19:50
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 5 zpráv z 5.