Náhodná velikost vločky – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Náhodná velikost vločky – .NET – Fórum – Programujte.comNáhodná velikost vločky – .NET – Fórum – Programujte.com

 

ats0
Newbie
31. 12. 2009   #1
-
0
-

Ahoj, jsem jenom začátečník, ale pokouším se učit podle knížky Moderní programování. Ve sbírce úloh k učebnici pro pokročilé se má připravit jednoduchý program sněžení. Napadlo mě udělat si z toho jednoduchý screensaver. Všechno funguje, ale nedovedu si poradit s náhodnou velikostí vloček. Zkoušel jsem přepsat základní tvorbu vloček, ale bud se mi vytvoří jenom jedna a nehýbe se, a nebo když padají, tak se přitom mění jejich velikost. Snad jsem to vysvětlil srozumitelně, asi je to jednoduché, ale opravdu už nevím co s tím. Dík za pomoc. Kus zdrojáku je zde:



Random náhoda = new Random();
List<Point> seznamVloček = new List<Point>();

public oknoProgramu()
{
InitializeComponent();
}

private void oknoProgramu_Paint(object sender, PaintEventArgs e)
{
Graphics kp = e.Graphics;

foreach (Point vločka in seznamVloček)
kp.FillEllipse(Brushes.White, vločka.X, vločka.Y, 3, 3);
}

private void časovač_Tick(object sender, EventArgs e)
{
// jedna nová vločka
int maxX = ClientSize.Width - 1;
int x = náhoda.Next(0, maxX + 1);
Point nováVločka = new Point(x, 0);
seznamVloček.Add(nováVločka);

// posun všechny vločky
for (int index = 0; index < seznamVloček.Count; index++)
{
int posunX = náhoda.Next(-2, +2 + 1);
int posunY = 3;
int novéX = seznamVloček[index].X + posunX;
int novéY = seznamVloček[index].Y + posunY;
seznamVloček[index] = new Point(novéX, novéY);
}
Refresh();
}

Nahlásit jako SPAM
IP: 93.92.52.–
KIIV
~ Moderátor
+43
God of flame
31. 12. 2009   #2
-
0
-

musis si velikost vygenerovat kdyz ji vytvaris a drzet tu hodnotu po celou dobu "zivota" vlocky

Nahlásit jako SPAM
IP: 77.237.136.–
Program vždy dělá to co naprogramujete, ne to co chcete...
ats0
Newbie
31. 12. 2009   #3
-
0
-

To právě nevím jak.

vygeneruji např.:

int sirkaVlocky = nahoda.Next(2, 5);
int vyskaVlocky = sirkaVlocky;
kp.FillEllipse(Brushes.White, vločka.X, vločka.Y, sirkaVlocky, vyskaVlocky);

A nevim jak ji udržet takovou po celou dobu, nevím jak to přepsat.

Nahlásit jako SPAM
IP: 93.92.52.–
liborb
~ Redaktor
+18
Guru
31. 12. 2009   #4
-
0
-

Nejlepší by samozřejmě bylo, kdyby velikost vločky byla atributem třídy. Teď reprezentuješ vločku instancí třídy Point, do které nic nepřidáš, takže bude asi nejlepší, když ji nahradíš nějakou vlastní (může i dědit od Point). Přidáš atribut velikost vločky, který budeš nastavovat v konstruktoru (neboli jinak řečeno to, co ti radil KIIV :smile1: ).

Nahlásit jako SPAM
IP: 85.207.166.–
ats0
Newbie
31. 12. 2009   #5
-
0
-

Tak vyřešeno, dík za rady. :)

Nahlásit jako SPAM
IP: 93.92.52.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 8 hostů

Podobná vlákna

Náhodná velikost pole — založil Jan

Náhodná čisla — založil Zke

Náhodná čísla — založil Petr

Nahodna cisla — založil CommanderZ

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý