Diskuze: Človeče nezlob se - pokračovanie

C# .NET .NET (C# a Visual Basic) Človeče nezlob se - pokračovanie American English version English version

Avatar
Libor Šimo (libcosenior):

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):

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):

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
Jiří Gracík
Redaktor
Avatar
Odpovídá na Robert Zemánek (bobánek)
Jiří Gracík:

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
Creating websites is awesome till you see the result in another browser ...
Avatar
Odpovídá na Robert Zemánek (bobánek)
Libor Šimo (libcosenior):

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):

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 Čápka
Tým ITnetwork
Avatar
Odpovídá na Libor Šimo (libcosenior)
David Čápka:

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
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Odpovídá na David Čápka
Libor Šimo (libcosenior):

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 Čápka
Tým ITnetwork
Avatar
Odpovídá na Libor Šimo (libcosenior)
David Čápka:

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
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Odpovídá na David Čápka
Libor Šimo (libcosenior):

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
Redaktor
Avatar
Odpovídá na Libor Šimo (libcosenior)
Petr Nymsa:

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):

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):

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 Čápka
Tým ITnetwork
Avatar
Odpovídá na Libor Šimo (libcosenior)
David Čápka:

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
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Odpovídá na David Čápka
Libor Šimo (libcosenior):

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):

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  +1 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.