IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
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
RooBoo
Člen
Avatar
RooBoo:6.4.2014 18:27

Zdravým vedeli by ste mi poradiť s niekoľkými otázkami ? Mal by som napríklad nejakú hru v ktorej by boli 2 trojuholníky. 1. otázka .. ako by som vedel spraviť to, že keby som prišiel s myšou na 1. trojuholník tak by sa tak zvýraznil povedzme. 2. otázka je že po zvýraznení trojuholníka by sa napr. v rohoch objavili malé kolieska. Po kliknutí na koliesko by sa spravil začiatočný bod úsečky ktorá by sa vykresľovala a druhý bod by sa spravil po opätovnom kliknutí s myšou na iné miesto napríklad na koliesko 2. trojuholníka a zároveň aby trojuholník č. 2 zistil že koliesko je spojené tou vykreslenou úsečkou takže aby napríklad trojuholníky obsahovali nejakú premennú int a po spojení by nadobudla hodnotu 1. Celé to by som chcel vykresľovať v pictureBoxe. ........ Otazka č. 3.... na úplnom začiatku hry by hráč sám si zvolil či bude mať trojuholníky alebo štvorce. Bolo by viac možností(troju­holníky a štvorce je len príklad). Takže po vybratí by zvolil miesto kde sa daný útvar vykreslí a zároveň by sa vytvorila instancia útvaru s ktorou by program ďalej pracoval. Každý útvar by mal triedu. Dúfam že ste ma pochopili :) .

 
Odpovědět
6.4.2014 18:27
Avatar
RooBoo
Člen
Avatar
Odpovídá na RooBoo
RooBoo:6.4.2014 18:51

Je to vôbec možné ?

 
Nahoru Odpovědět
6.4.2014 18:51
Avatar
Odpovídá na RooBoo
Michal Žůrek - misaz:6.4.2014 18:53

a s čím konkrétně si nevíš rady? Vykreslováním, testováním, jestli bod leží v trojúhelíku... Není to zase doufám úkol do školy, kde jsi spal a teď nevíš která bije a ku všemu je zítra deadline.

 
Nahoru Odpovědět
6.4.2014 18:53
Avatar
Odpovídá na RooBoo
Michal Žůrek - misaz:6.4.2014 18:53

samozřejmě že je.

 
Nahoru Odpovědět
6.4.2014 18:53
Avatar
rawen
Člen
Avatar
Odpovídá na RooBoo
rawen:6.4.2014 18:54
  1. můžeš to udělat přes událost MouseMove popřípadě MouseClick pro pictureBoxu, která ti může říkat současnou pozici myši na pictureBoxu e.X a e.Y, pokud by se myš pohybovala v nějakém tělese, popřípadě pokud by bylo kliknuto uvnitř tělesa, tak podle souřadnic X a Y můžeš na to reagovat. Samozřejmě to chce si pamatovat pozice "těles" - třeba nějakým Listem.
  2. a 3. nevidím v tom otázku, když je to věta oznamovací. :)
Nahoru Odpovědět
6.4.2014 18:54
Co můžeš naprogramovat dnes, neodkládej na zítřek.
Avatar
RooBoo
Člen
Avatar
Odpovídá na Michal Žůrek - misaz
RooBoo:6.4.2014 18:57

Nie nieje to do školy :) je to len tak pre mňa ... no tie tri veci ako by som vedel kresliť počas spustenia programu ..ako by som to vedel odtestovať ..

 
Nahoru Odpovědět
6.4.2014 18:57
Avatar
RooBoo
Člen
Avatar
Odpovídá na rawen
RooBoo:6.4.2014 19:03

3. otázka je to že na pictureBox by si uživateľ vedel sám nahádzať čo chce spájať. Ako by som vedel spraviť to že ak si vyberie štvorec zvolí miesto na pictureBoxe a tam sa aj vykreslí. A potom budem vedieť ho spájať ako som písal.

Editováno 6.4.2014 19:06
 
Nahoru Odpovědět
6.4.2014 19:03
Avatar
rawen
Člen
Avatar
Odpovídá na RooBoo
rawen:6.4.2014 19:20

Třeba tak, že pokud chceš čtverec, tak se klikne na třeba tlačítko čtverec, tím se třeba aktivuje CtverecKresli = true a TrojuhelnikKresli = false; A pak stačí si udělat na událost pictureBox_Mou­seClick, třeba něco takovéhoto:

private void pictureBox1_MouseClick(object sender, MouseEventArgs e)
{
    if (CtverecKresli == true)
    {
        // tady bude nějaké přidání třeba do Listů čtverců s využitím e.X a e.Y
    }
    if (TrojuhelnikKresli == true)
    {
        // obdobně
    }
}

Následně stačí přes událost pictureBox1_Paint mít cykly na vykreslení všech čtverců a trojůhelníků. Spojování můžeš udělat zas Listem spojů, který su bude pamatovat jenom id toho co spojuje s čím :)

Nahoru Odpovědět
6.4.2014 19:20
Co můžeš naprogramovat dnes, neodkládej na zítřek.
Avatar
RooBoo
Člen
Avatar
Odpovídá na rawen
RooBoo:6.4.2014 19:38

ako som spomínal skôr tak to so štvorcami a trojuholníkmi bol len príklad.. v skutočnosti by som chcel spraviť taký jednoduchý simulátor na elektrické obvody. Uživateľ by si nakreslil schému vybral súčiastky(tro­juholníky štvorce by boli napr rezistory /diódy). Takže tie čiary čo by kreslil/ spájal by boli vodiče. Zamozrejme na súčiastkách by boli nieaké úbytky napätia a tak .. preto každá súčiastka by bola zvlášť trieda (súčiastky majú iné vlastnosti(cievka indukčnosť/kon­denzátor kapacitu)) Nie v každom obvode by použil napr diódu preto moja 3. otázka upravená je či sa dá vytvoriť instancia triedy počas behu programu? Vytvorila by sa iba tá ktorú potrebujeme

 
Nahoru Odpovědět
6.4.2014 19:38
Avatar
rawen
Člen
Avatar
Odpovídá na RooBoo
rawen:7.4.2014 11:39

Ona se snad ani jindy než za běhu nevytváří, pokud to dobře chápu. :)
Udělej si to takhle: každému možnému prvku co se dá vytvořit uděláš třídu, která bude prvek popisovat parametry. Každý prvek bude mít svůj list - kde budou pouze prvky stejného typu. Pak to bude chtít ještě list spojnic, která bude říkat co je čím spojeno - třeba pomocí id, které bude mít každý prvek unikátní. Asi nejlepší by bylo, kdyby kolem toho tvého pictureBoxu kam to kreslíš, byla třeba tlačítka - přičemž by mohlo být stlačeno pouze jedno, načež při kliknutí na pictureBox, by se pictureBox podíval které tlačítko je zmáčknuté a podle toho by se aktivovalo např: VytvorRezistor(jako parametry bys měl vlastnosti rezistoru a jeho souradnice). V pistureBoxu bys pak vykresloval událostí _Paint , přičemž, bys tam měl třeba cykly for pro jednotlivé položky např:

for(int i =0; int < list_rezistoru.count; i++)
{
        vykresliRezistor(picturebox1, list_rezistoru[i].souradnice, atd) // samozřejmě bys předával všechny parametry ohledně vykreslení - souřadnice attd
}

Pokud možných prvků budeš mít víc, tak je lepší si pro každý udělat třídu jak se má vykresli :)

Nahoru Odpovědět
7.4.2014 11:39
Co můžeš naprogramovat dnes, neodkládej na zítřek.
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 10 zpráv z 10.