Diskuze: picture box + bodování
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 6 zpráv z 6.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Zde to je:
private void timer1_Tick(object sender, EventArgs e)
{
for (int i = 0; i < 22; i++)
{
for (int j = 0; j < 4; j++)
{
if (micek.Bounds.IntersectsWith(pole[j, i].Bounds))
{
pohyby *= -1;
pole[j, i].Left += 1000; // Byl problém s odstraněním pictureboxu, proto při narazení míčku do pictureboxu se postune o 1000 do řiti.
}
}
}
Další nepotřebný kód.
private void panel1_Paint(object sender, PaintEventArgs e)
{
int bod = 0;
if (micek.Top > 380)
{
bod = -10;
}
else
{
//if ()
//{
// bod += 5; // Zjistit, kdy zmizí picturebox (posune se o 1000).
//}
label5.Text = Convert.ToString(bod);
}
}
To, že říkáš souřadnicím picturebox, je poměrně zavádějící. A tento kus kódu je vcelku nic neříkající.
Náhodou tu nedávno na fóru někdo řešil něco podobného http://www.itnetwork.cz/…3328438bac8e , hádám ale, že
jsi na to narazil, protože to násobení pohybu -1 jsem tam tehdy doporučoval
já a u tebe je to takové dost osamocené. Tehdy jsem si to i naprogramoval,
takže vím, že na to najdeš moc dobře, ikdyž z takového kousku kódu - kdo
ví.
Já jsem to tehdy řešil tak, že jsem si udělal nějaké veřejné
proměnné, třeba:
private int kulickaX = 50; // souřadnice kuličky X
private int kulickaY = 50; // souřadnice kuličky Y
private int deskaX = 50; // souřadnice desky X
private int deskaY = 50; // souřadnice desky Y
private int R = 10; // poloměr kuličky
private int pohybX = 5; // o kolik se posune v čase ve směru X
private int pohybY = 5; // ..
Timer by sis měl udělat, aby volal metody, co se mají provádět, tedy spíš něco takovéhoto:
private void dispatcherTimer_Tick(object sender, EventArgs e)
{
VykresliBod();
PosunKulicku();
}
Přičemž ono posunutí kuličky by stačilo ve smyslu:
kulickaX += pohybX;
, samozřejně by se tam musel hlídat kontakt s deskou a hranama panelu,
při jehož kontaktu s horní nebo dolní pohybY vynásobil -1, a při kontaktu
s levou nebo pravou stranou pohybX vynásobil -1.
Každopádně bys neměl programovat páte přes deváte, ale první si
naprogramovat pohyb samotné kuličky, pak třeba přidat pohyblivou desku, pak
odrážení atd.. a né hned všechno naráz.
místo posouvání do pryč ten picturebox raději schovej přes
.Visible = false;
(a akorát si v tom intersectu i kontroluj, jestli je picturebox vidět).
Pořád nevím, kam ty pictureboxy chceš ukládat
Body by měly třeba jako
private int body = 0;
u formuláře - pak jsou tam uloženy po celou dobu, co formulář existuje, pokud je máš jen uvnitř funkce, tak o tu hodnotu vždy přijdeš hned na konci funkce a při jejím dalším volání je tam zase defaultní hodnota.
Zobrazeno 6 zpráv z 6.