Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
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
Libor Šimo (libcosenior):10.8.2013 19:57

Rád by som pokračoval v nedokončenej téme.
Sdraco na písal:
"Koukám, že tě matesax odrovnal, to je mu podobné :) Úplně v klidu, na XNA zapomeň a na enum taky.

1. Jako první si vytvoř hrací pole. Je celkem jedno, přes kterou komponentu to uděláš, Satik má pravdu, že jednodušší (i když ošklivější) je dát jich tam více. Čili si udělej picturebox s puntíkem a ty si 100x nakopíruj na formulář a postav si z toho hezky hrací plánek.

Pictureboxům vyplň vlastnost Tag a to hezky od 1 do X, kde X je poslední poličko ve hře (nevím z hlavy kolik jich je). Prostě aby 1. puntík měl 1, druhý 2 atd., hezky popořadě, jak se kolem nich chodí.

"Domečkům" (těm 4 puntíkům, kde se čeká na nasazení fungurky) dej Tag podle barvy (tedy třeba 4 červené puntiky budou mít tag "cerveny0", "cerveny1"...). Pak jsou ty 2. domečky, kde je cíl, to udělej podobně, jen s nějakým prefixem, třeba cil_cerveny0, cil_zeleneny0 atd.

2. Udělej si třídu Figurka, té uděláš atributy pozice (int) a barva (tu jako string). Dále tam bude bool domecek a bool cil.

3. Poté si udělej List figurek a ten si naplň. Vytvoříš tam figurky, těm dáš barvu a nastavíš pozici na 1,2,3,4, barvu dle potřeby a domecek na true, cil na false.

4. Kostku máš ukázanou v tutoriálu zde, udělej si jí podle toho: http://www.itnetwork.cz/…ahodna-cisla . Udělej si instanci kostky a na nějaké tlačítko na formu si udělej, aby se vykreslovala podle toho, co padlo.

5. Až se sem dostaneš, pošli to a pokud to k něčemu bude, vymyslím zbytek :)"

Tak sem dávam čo som zatiaľ vytvoril a prosím poradiť ako ďalej.
http://skolka-jazyka-c.freespace.sk/…oad/file.php?…

Odpovědět
10.8.2013 19:57
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Nahoru Odpovědět
10.8.2013 20:15
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Libor Šimo (libcosenior):11.8.2013 10:30

Môže mi prosím niekto vysvetliť ako sa používa vlastnosť Tag?

Nahoru Odpovědět
11.8.2013 10:30
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Odpovídá na Libor Šimo (libcosenior)
Robert Zemánek (bobánek):11.8.2013 11:03

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

Nahoru Odpovědět
11.8.2013 11:03
Jsem jako holub.
Avatar
Odpovídá na Robert Zemánek (bobánek)
Neaktivní uživatel:11.8.2013 11:04

Přesně tak, buďto nějaká proměnná nebo objekt, ideální třeba pro id nebo nějakou poznámku ;)

Nahoru Odpovědět
11.8.2013 11:04
Neaktivní uživatelský účet
Avatar
Odpovídá na Robert Zemánek (bobánek)
Libor Šimo (libcosenior):11.8.2013 11:43

Sorry, ale stále neviem ako na to. Viem priradiť image do pictureboxu:
pictureBox9.Image = Clovece.Proper­ties.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. :)

Nahoru Odpovědět
11.8.2013 11:43
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Libor Šimo (libcosenior):11.8.2013 11:57

Viem si predstaviť pohyb figúrky po políčkach tak, že napr.:

  • hodím kockou číslo n
  • cez cyklus
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ť?

Editováno 11.8.2013 11:58
Nahoru Odpovědět
11.8.2013 11:57
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Libor Šimo (libcosenior)
David Hartinger:11.8.2013 12:01

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.

Nahoru Odpovědět
11.8.2013 12:01
You are the greatest project you will ever work on.
Avatar
Odpovídá na David Hartinger
Libor Šimo (libcosenior):11.8.2013 12:14

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.

Editováno 11.8.2013 12:15
Nahoru Odpovědět
11.8.2013 12:14
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Libor Šimo (libcosenior)
David Hartinger:11.8.2013 12:16

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š.

Nahoru Odpovědět
11.8.2013 12:16
You are the greatest project you will ever work on.
Avatar
Odpovídá na David Hartinger
Libor Šimo (libcosenior):11.8.2013 13:47

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?

Nahoru Odpovědět
11.8.2013 13:47
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Petr Nymsa
Tvůrce
Avatar
Odpovídá na Libor Šimo (libcosenior)
Petr Nymsa:11.8.2013 13:49

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

Nahoru Odpovědět
11.8.2013 13:49
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Odpovídá na Petr Nymsa
Libor Šimo (libcosenior):11.8.2013 15:09

Díky. S týmto som sa už stretol, ale neuvedomil som si to. Hľadal som v tom inú, mne neznámu chybu.

Nahoru Odpovědět
11.8.2013 15:09
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Odpovídá na Libor Šimo (libcosenior)
Libor Šimo (libcosenior):11.8.2013 15:46

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.

Editováno 11.8.2013 15:47
Nahoru Odpovědět
11.8.2013 15:46
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Libor Šimo (libcosenior)
David Hartinger:11.8.2013 15:51

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.

Nahoru Odpovědět
11.8.2013 15:51
You are the greatest project you will ever work on.
Avatar
Odpovídá na David Hartinger
Libor Šimo (libcosenior):11.8.2013 20:45

Idem na to. Časom ti určite poďakujem. :)

Nahoru Odpovědět
11.8.2013 20:45
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Libor Šimo (libcosenior):8.9.2013 17:43

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.

Nahoru Odpovědět
8.9.2013 17:43
Aj tisícmíľová cesta musí začať jednoduchým krokom.
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 17 zpráv z 17.