Diskuze: Človeče nezlob se - pokračovanie
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Tvůrce
Zobrazeno 17 zpráv z 17.
//= 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.
Doplnil som vykresľovanie kocky.
http://skolka-jazyka-c.freespace.sk/…oad/file.php?…
Môže mi prosím niekto vysvetliť ako sa používa vlastnosť Tag?
tag, dost výborná vlastnost, můžeš do ní uložit objekt. Např máš image zelené figurky a do tagu si uložíš např. instanci hráče, který má zelenou barvu
Přesně tak, buďto nějaká proměnná nebo objekt, ideální třeba pro id nebo nějakou poznámku
Sorry, ale stále neviem ako na to. Viem priradiť image do pictureboxu:
pictureBox9.Image = Clovece.Properties.Resources.ZelenaF;
Ale ako tu použiť Tag nemám šajn.
Sdraco v pokynoch napísal, aby sa očíslovali (teda asi ID)všetky políčka
cez Tag-y, ale neviem ako to použiť.
Bodol by nejaký jednoduchý príklad.
Viem si predstaviť pohyb figúrky po políčkach tak, že napr.:
for (int i = Tag(políčka, kde figurka stojí); i <= (políčka, kde figurka stojí) + n; i++)
{
//spomaliť skoky
Application.DoEvents();
System.Threading.Thread.Sleep(600);
//vykresliť Image na správnom políčku - pictureBoxe
pictureBox(Tag = i). Image = Clovece.Properties.Resources.ZelenaF;
}
Dá sa to takto nejak riešiť?
Ne, tohle není konzole, ale formulář. Pracuje se tu s událostmi, ne tak, že celou aplikaci na sekundu zasekneš. Že máš použít Timer jsem ti již říkal 2x.
Dobre, vynechajme teda spomalenie, vynechajme aj cyklus.
Ako to napísať, aby toto bolo správne?
// figurka stojí na políčku - pictureBoxe, ten má pridelený (napr) Tag = 5
// hod kockou vrátil 4
// figurka sa vykreslí na políčku - pictureBoxe s Tag-om 5 + 4
pictureBox(Tag = 5 + 4).Image = Clovece.Properties.Resources.ZelenaF;
Ide mi o to, aby som mohol pictureBox definovať podľa Tag-u a nie podľa názvu.
Tak počtvrté a naposledy - použij Timer, jinak to uděláš opravdu těžko. Pokud máš takový problém nakliknout komponentu z toolboxu, tak snad nemá ani smysl něco vytvářet. Picturebox s daným tagem najdeš tak, že proiteruješ kolekci Controls na formuláři, jsou tam všechny jeho prvky. Stačí najít ten s tagem a máš políčko na které chceš.
Timer som už zhruba pochopil. Problém mám s vyhľadaním v kolekcii
Controls.
Skúšal som to rôzne, napr.:
private PictureBox NajdiPbx(object tag)
{
foreach (PictureBox pbx in Controls)
{
if (pbx.Tag == tag)
return pbx;
}
}
A tu mi píše chybu:
not all code paths return a value (nie všetky cesty kódu vráti hodnotu)
Nemám s tým žiadne skúsenosti. Poradí niekto, prosím?
Přečti si něco o metodách a o návratových hodnotách. Metoda musí vždy něco vracet. Tobě vrací jenom thedy pokud platí podmínka. Pod foreach dej return například null. To může značit že se nic nenašlo
Díky. S týmto som sa už stretol, ale neuvedomil som si to. Hľadal som v tom inú, mne neznámu chybu.
Nefunguje to ani tak.
private PictureBox NajdiPbx(object tag)
{
foreach (PictureBox pbx in Controls)
{
if (pbx.Tag == tag)
return pbx;
}
return null;
}
Nefunguje to. Poraďte prosím.
Ide o proiterovanie kolecie Controls na formulári.
Na formuláři nejsou jen pictureboxy, stačí se podívat jakého typu je kolekce Controls. Pokud máš absolvovaný zdejší seriál o OOP, tak bys to měl dát dohromady.
Idem na to. Časom ti určite poďakujem.
Pomaličky sa s tým bavím a dostal som sa zatiaľ sem:http://skolka-jazyka-c.freespace.sk/…oad/file.php?…
Je to len pre silné povahy.
Ten kód je určite veľmi divoký.
Ale učím sa a snažím sa poriadne pochopiť 1. - 8. lekciu OOP C#.
Vychádzam z toho, čo v jednej z lekcií napísal sdraco: je potrebné skúšať si prebranú látku a vymýšľať si iné projekty, ako sú v lekciách, aby sme sa s tým zžili.
Zobrazeno 17 zpráv z 17.