GUI piškvorky – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

GUI piškvorky – .NET – Fórum – Programujte.comGUI piškvorky – .NET – Fórum – Programujte.com

 

Luxfer0
Newbie
25. 12. 2007   #1
-
0
-

Pěkné svátky přeji, jestli se někdo nudí měl bych tady dotaz. Mám napsat síťové piškvorky v gui v C#. Takže první co mě napadlo bylo naházet do form 100 tlačítek (pole 10x10) kde když kliknete na nějaké tlačítko, tak se na něm ukáže třeba kolečko nebo křížek a uloží hodnotu do int pole v kterém už se krásně tahy dají zkontrolovat. No, ale pak mě zamrazilo v zádech, když jsem si představil, že musím poklikat (vygenerovat ) ke 100tlačítkům událost po kliknutí a doplnit do ních příslušné metody. To ani nemyslím na to, že bych to pole pak rozšířil třeba na 30x30 :O .. tak jestli někdo tušíte jak na problém jít jednodušeji budu moc rád za každou radu díky Jestli by třeba nešla nějak využít dědičnost, že bych napsal pro jedno tlačítko, co má udělat po kliknutí na něj atd.. a to tlačítko si pak namnožil třeba na 100 kousků

Nahlásit jako SPAM
IP: 85.92.58.–
Jura
~ Anonymní uživatel
637 příspěvků
26. 12. 2007   #2
-
0
-

Zdravím,

osobně bych to asi řešil trochu složitěji přes kreslení(bylo by to určitě hezčí - taková změna pozadí), ale v podstatě nevidím důvod nepoužití dynamicky generované tlačítka. Každý Button má vlastnost(delegáta) Click, kterému předáš EventHandler. A jako káždý handler obsahuje jako parametr Sender. Ten obsahue objekt, který vyvolal událost. Takže teď už si stačí jednotlivé tlačítka nějak od sebe odlišit(třeba podědíš od standartní třídy button a přidáš vlastnost ID), nějaké jendoznačné id, podle kterého určíš, kterou pozici hráč označil.

Přeji pěkný zbytek svátků

Nahlásit jako SPAM
IP: 85.207.192.–
mephi0
Expert
26. 12. 2007   #3
-
0
-

ja by som spravil panel, zachytaval by som klik a podľa suradnic vypočital, o ake pole ide, nič zložite.

Nahlásit jako SPAM
IP: 85.248.56.–
Program nemusi fungovat rychle, staci ze funguje dostatecne rychle.
Luxfer0
Newbie
26. 12. 2007   #4
-
0
-

To Jura : Díky za typ. Něco s tím zkusím vymyslet, ale spíš s těma tlačítkama jedná se jen o projekt do školy :) Tu vlastnost ID jsem pochopil, ale jak tam potom vygenerovat třeba těch 100tlačítek? Naházet je tam ručně nebo je na to nějaká finta ? :)

Nahlásit jako SPAM
IP: 85.92.58.–
Jura
~ Anonymní uživatel
637 příspěvků
26. 12. 2007   #5
-
0
-

To Luxfer :

Bohužel tě budu muset zklamat, protože nemám nainstalováné VS. Ale je to jen trapné přičítání. V konstruktoru udelas toto nebo zvaolas nejakou metodu.
Jen takový náznak kódu:



int nPocetNaRadek = 10;
int nPocetNaSloupec = 10;
int nSirka = 10, nVyska = 10;

int x = 0;
int y = 0;

for(int i = 0; i < nPocetNaRadek; ++i)
{ for(int j = 0; j < nPocetNaSloupec; ++j)
{ MyButton btn = new MyButton;
btn.Parent = this;
btn.Size = NEJAKY_ROZMER;
btn.Location = new Point(x,y);
btn.Click += new EventHandler(MyBtnClick);
x += nSirka; nebo jak se ta property jmenuje

}
y += nVyska;
}

protected void MyBtnClick(Sender sender, EventArgs e)
{ MyButton btn = (MyButton) sender;
// nejake operace s btn.ID
}



No snad je to jasne.

Nahlásit jako SPAM
IP: 85.207.192.–
Jura
~ Anonymní uživatel
637 příspěvků
26. 12. 2007   #6
-
0
-

heh, a mám tam chybu:) Malá úprava



...
for(int i = 0; i < nPocetNaRadek; ++i)
{ x = 0;
for(int j = 0; j < nPocetNaSloupec; ++j)
{ MyButton btn = new MyButton;
....
x += nSirka;

}
y += nVyska;
}

Nahlásit jako SPAM
IP: 85.207.192.–
Luxfer0
Newbie
26. 12. 2007   #7
-
0
-

Aha tak jednoduše to jde :)) Já věděl, že to tak nějak musí jít. Díky moc za příklad.. hned to jdu vyzkoušet

Nahlásit jako SPAM
IP: 85.92.58.–
Luxfer0
Newbie
26. 12. 2007   #8
-
0
-

To Jura : Funguje to parádně ;) hned se s tolika tlačítkama líp pracuje .. mockrát děkuji Měj se :smile1:

Nahlásit jako SPAM
IP: 85.92.58.–
Luxfer0
Newbie
28. 12. 2007   #9
-
0
-

To Jura : Nebo jsetli tuší někdo jiný.. Pracuju s těmi tlačítky podle toho tvého příkladu, ale vyskytl se mi problém, že ty piškvorky hraju na straně serveru a klienta a posílám údaje druhé straně o provedeném tahu a na druhé straně bych chtěl změnit u toho tlačítka popisek, tj. zaznačit druhou stranou provedený tah. Takže já na jedné straně přijmu souřadnice, kde hrála druhá strana, a u tlačítka na této souřadnici bych chtěl změnit ten popisek. Jenže mám problém, že nevím, jak se k takovému tlačítku dostat a změnit u něho nějaké atributy (v mém případě ten popisek tlačítka), když jsem na to tlačítko neklikl.
Jak by se prosím tě dalo k tomu tlačítku dostat, i když jsem na něho neklikl? V MyButton používám ID jednorozměrné pole s 2 údaji o pozici tlačítka v té „matici“

Napadlo mě jedině napsat druhou metodu

 protected void MyBtn2Click(object sender, EventArgs e)

a pak ji zavolat třeba s parametry


MyButton send = new MyButton();
send.Text = "";
EventArgs myE = new MouseEventArgs(MouseButtons.Left, 1, 8, 8, 1);
MyBtn2Click(send, myE);
Kde 8, 8 sou nějaké souřadnice toho tlačítka. No ale nějak to nejede ono se tam asi u sender a eventu musí nastavit více :(

Nahlásit jako SPAM
IP: 85.92.58.–
mephi0
Expert
28. 12. 2007   #10
-
0
-

buttons[x][y].Text = "X";

Nahlásit jako SPAM
IP: 85.248.56.–
Program nemusi fungovat rychle, staci ze funguje dostatecne rychle.
Jura
~ Anonymní uživatel
637 příspěvků
28. 12. 2007   #11
-
0
-

Zdravím,

no,asi jsem se unáhlil, nějak jsem přehlédl, že se jedná o síťovou hru. Takže tak jak píše Mephi,někde si ty tlačítka musíš pamatovat. Já myslel, že hraje hráč proti hráči na jendom PC:D, pak by si stačilo jen pamatovat, kdo je na tahu. Tzn. udelej si pole těch MyButton a pak už jen prostými indexy.Takže za případné komplikace se omlouvám.

Nahlásit jako SPAM
IP: 85.207.192.–
Luxfer0
Newbie
28. 12. 2007   #12
-
0
-

To Jura : neni třeba se omlouvat.. Naopak s kolegou moc děkujeme. Diky tobě a mephi máme hotovo.. krásně to funguje Moc díky :)

Nahlásit jako SPAM
IP: 85.92.58.–
zacatecnik0
Super člen
28. 12. 2007   #13
-
0
-

nepodelili byste se pls o zdrojak? treba me konkrtene zajima jak by se to dalo delat sitove...

Nahlásit jako SPAM
IP: 88.100.84.–
Můj blog http://www.zacatecnik.wu.cz[br]Překládám anglickou knihu o wxWidgets http://wxwidgets.hustej.net
Luxfer0
Newbie
28. 12. 2007   #14
-
0
-

To zacatecnik : Tak jestli tě to zajímá a počkáš, tak jo. 7.1. to budeme odevzdávat tak ještě ten den to sem můžu hodit. Neni důvod proč se o to nepodělit ;)

Nahlásit jako SPAM
IP: 85.92.58.–
zacatecnik0
Super člen
28. 12. 2007   #15
-
0
-

yep dokazu byt velmi trpelivy a kdo vi, kdyz to bude open source tak treba ti to tady i nekdo z nudy vylepsi ;-)

Nahlásit jako SPAM
IP: 88.100.84.–
Můj blog http://www.zacatecnik.wu.cz[br]Překládám anglickou knihu o wxWidgets http://wxwidgets.hustej.net
mephi0
Expert
29. 12. 2007   #16
-
0
-

a dufam že to mate viacvlaknovo, nemam rad keď to mrzne ! :D

Nahlásit jako SPAM
IP: 85.248.56.–
Program nemusi fungovat rychle, staci ze funguje dostatecne rychle.
Luxfer0
Newbie
29. 12. 2007   #17
-
0
-

To mephi : Tak to tě bohužel zklamu. Za ten jedene semestr co děláme C# nám vlákna ještě moc neříkají :o)) Ale co sme tak zkoušeli, tak to nezamrzá ;o) A pokud jo, budem moc rádi když to upravíš třeba na vlákna a pak se o to podělíš :))
Jinak tu práci na síti sme zhruba čerpali tady: http://www.java2s.com/Tutorial/CSharp/0580__Network/Catalog0580__Network.htm

Nahlásit jako SPAM
IP: 85.92.58.–
mephi0
Expert
29. 12. 2007   #18
-
0
-

nezamrza bez vlakien ? tak to dufam že sa podelite vy :D

Nahlásit jako SPAM
IP: 85.248.56.–
Program nemusi fungovat rychle, staci ze funguje dostatecne rychle.
Luxfer0
Newbie
7. 1. 2008   #19
-
0
-

tak možná tam sou vlákna. Pořádně ani nevíme, ale důležité je že jsme dostali bez jednoho bodu plný počet :D
Bod nám strhl za tlačítko Přijmout u klienta, tak to můžete někdo doladit :D

Nahlásit jako SPAM
IP: 158.196.65.–
jozosandy0
Newbie
7. 1. 2008   #20
-
0
-

Ahoj. Trochu OT, ale zaujimalo by ma na akej skole studujes. Momentalne som v maturitnom rocniku tak sa o to celkom dost zaujimam. Mal si nejake skusenosti s C# uz predtym, alebo sa to da zvladnut ucit sa od nuly az tam? (Predpokladam teda, ze studujes vysoku skolu, ak nie tak potom beriem cely moj prispevok spat...) DIk.

Nahlásit jako SPAM
IP: 88.212.21.–
Luxfer0
Newbie
7. 1. 2008   #21
-
0
-

To jozosandy : Studuji na VŠB v Ostravě na FEI obor informatika a komunikační technika. Sem ve druháku a pokud jde o C# tak dělám ho od října. V prváku sme měli javu, tam tě naučí základy oběktového programování a ve druhém semestru sme dělali nejrůznější algoritmy v jave. Přechod na C# byl naprosto bezbolestný a taky mě to v C# začalo bavit, jde to tam vše jednodušeji. Ještě byla možnost si přidat C++, ale to se mě nechtělo dělat :) Je to tady zatím pohůdka, takže já to tu můžu zatím jen doporučit.. problém je jen, že ti cpou v prváku elektroniku a komunikace, ale ve druháku už si snad dají pokoj :D

Nahlásit jako SPAM
IP: 158.196.68.–
Jura
~ Anonymní uživatel
637 příspěvků
7. 1. 2008   #22
-
0
-

Zdravím,

tak vlákno, pokud jsem se dobře díval, tam nevtyváříš žádné. Ale to není podstatné. Tak jsem se alepoň dozvěděl, co mě asi čeká ve druháku, pokud se tam po zkouškovém vůbec dostanu..:)

Nahlásit jako SPAM
IP: 85.207.192.–
mephi0
Expert
7. 1. 2008   #23
-
0
-

len tak som do toho nahliadol, je tam asynchronná funkcia a ak sa nemýlim tá by mala mať vlastné vlákno.

Nahlásit jako SPAM
IP: 85.248.56.–
Program nemusi fungovat rychle, staci ze funguje dostatecne rychle.
Jura
~ Anonymní uživatel
637 příspěvků
7. 1. 2008   #24
-
0
-

To mephi :
Kde, prosím tě? Prohlížím to v texťáku, tak se mi to blbě čte a jsem líný hledat nějaké popisy v manuálu.

Nahlásit jako SPAM
IP: 85.207.192.–
mephi0
Expert
8. 1. 2008   #25
-
0
-

To Jura :

try
{
// Vytvářím socket
m_socListener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPEndPoint ipLocal = new IPEndPoint(IPAddress.Any, Int16.Parse(txtPortNo.Text));
// Připojuju se k lokální IP
m_socListener.Bind(ipLocal);
// Začínám číhat na přijatá data
m_socListener.Listen(4);
// Když klient pošle data, spustí se metoda OnClientConnect
m_socListener.BeginAccept(new AsyncCallback(OnClientConnect), null);
cmdListen.Enabled = false; // Po vytvoření připojení už na toto tlačítko více nemůžu klikat
}

Nahlásit jako SPAM
IP: 85.248.56.–
Program nemusi fungovat rychle, staci ze funguje dostatecne rychle.
Luxfer0
Newbie
8. 1. 2008   #26
-
0
-

To Jura : Zdravím takže jsi taky na FEI na Báni :) Na to, že jsi v prváku jsi nám faine poradil díky ;)

Nahlásit jako SPAM
IP: 158.196.68.–
Jura
~ Anonymní uživatel
637 příspěvků
8. 1. 2008   #27
-
0
-

To mephi :
Díky, to jsem naprosto prehledl.
To Luxfer :
Taky zdravim, ale jak rikam, zkouskove za rohem, takze bude veselo...

Nahlásit jako SPAM
IP: 85.207.192.–
Daniel
~ Anonymní uživatel
74 příspěvků
15. 5. 2009   #28
-
0
-

Zdravim, jsem na střední v prváku a oboru Elektrotechnika. Moc mi nejde Programoví vybavení, no teda propadám z něj a dostali jsme za ůkol udělat nějáký piškvorky, pexeso, či něco podobnýho a já si nevim rady! S pomocí né moc příjemného učitele jsem vytvořil pole s 150 buttony a udělal to aby se tam oběvovaly křížky a kolečka ale se zbytkem, což je to aby se mi nepřepisovali když klikne druhý hráč, a aby poté co někdo dostane 5 stejných značek zobryzilo že vyhrál či něco podobného,mi prej už nepomůže a tak hledám pomoc všude kde to jde a tak jsem narazil na toto forum a doufám že mi z vás někdo s tím pomůže. Předem děkuji.

int klik;


public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{

}

private void button1_Click(object sender, EventArgs e)
{
klik++;
if (klik % 2 == 0)
{
(sender as Button).Text = "0";
}

else
{
(sender as Button).Text = "x";
}

Nahlásit jako SPAM
IP: 90.177.1.–
dannyk0
Věrný člen
15. 5. 2009   #29
-
0
-

Ja to kdysi resil tak, ze sem si udelal svoji tridu, ktera dedila z JButton a v ni sem mel prommenou, jestli ma prirazeny herni kamen.Po kliknuti sem tohle kontroloval a kdyz bylo, tak sem zarval hlasku. Slo by to vyresit i tim, ze bys po kliknuti na tlacitko ho dal Enabled = false a tim zabranil dalsimu kliknuti.

Co se tyka rozpoznani 5 stejnych kamenu, ja to resil algoritmem, kdy po kazdem kliknuti sem prosel cele herni pole a 5 kamenu ve vodorovnem, svislem a sikmem smeru.

Nahlásit jako SPAM
IP: 85.135.97.–
Jedu v c++,c#,assembler,ASP.NET,PHP,databaze,bezpecnost softwaru[br] -----------------------------------------------------------[br] Muj blog o programovani,hudbe a vsem moznem,co najdu na netu :) [br] http://dannyk.aspone.cz[br] -----------------------------------------------------------[br] Na foru mam nejake prispevky pod nickem Master,tak jen pro upresneni :)
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 20 hostů

Podobná vlákna

GUI Piskvorky — založil pepan

Piškvorky — založil cacnejka

Piškvorky — založil verunka.41

Piškvorky — založil rundll32.exe

Piskvorky v Javě — založil bla

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý