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
Hypnoz
Neregistrovaný
Avatar
Hypnoz:12.9.2013 17:30

Dobrý den. Zkoušel jsem naprogramovat jednoduchou hru podle tutoriálu od Microsoftu. Jedná se o Maze (Bludiště). Tutoriál popisuje, jak udělat bludiště (zdi jsou tvořeny z labelů) a jak nastavit ovládáni. Hra se ovládá kurzorem myši. Mě napadlo, že bych místo myši pohyboval dalším labelem pomoci WSAD. Jen teď nevím, jak udělat podmínku, která zabrání labelu-hráč procházet labely-zed. U ovládání myší to bylo jednoduché. Při najetí myši na label-zed se vytvořila událost a ta spustila:
private void MoveToStart()
{
Point startingPoint = panel1.Location;
startingPoint­.Offset(0, 570);
Cursor.Position = PointToScreen(star­tingPoint);
}
Ale jak zabránit tomu, aby se labely překrývali byť jen jediným pixelem? Zkoušel jsem:
if (label-hrac.Location == label-zed1.Location)
ALE toto nefunguje, protože to platí jen pro levý horní roh labelu.

Nevíte někdo jak na to? Budu vděčný za každou radu. Předem děkuji za odpovědi.

 
Odpovědět
12.9.2013 17:30
Avatar
Hypnoz
Neregistrovaný
Avatar
Hypnoz:12.9.2013 17:49

V podstatě nepotřebuji, aby když najede label-hrac do labelu-zed, tak aby mě to vrátilo na začátek. Spíš bych chtěl, aby to vůbec nebylo možné. Aby se label-hrac mohl pohybovat pouze po volných pixelech. VIZ: http://2i.cz/b03f3e14c7

kde zeleny label je hrac a svetle modry je cil

 
Nahoru Odpovědět
12.9.2013 17:49
Avatar
Theodor Johnson
Tvůrce
Avatar
Odpovídá na
Theodor Johnson:12.9.2013 17:54

co třeba Rectangle.Inter­sect?

Nahoru Odpovědět
12.9.2013 17:54
Mo8ilε 15 Ѐλđ
Avatar
Hypnoz
Neregistrovaný
Avatar
Hypnoz:12.9.2013 17:55

Jsem začátečník. Mohl by jsi to trochu rozvést?

 
Nahoru Odpovědět
12.9.2013 17:55
Avatar
Odpovídá na
Michael Olšavský:12.9.2013 17:58

Ta metoda kontroluje, zda je se překrývají dva obdélníky => hráč = jeden, kostka = druhý. Ale doporučuji ti celou tu aplikaci přepsat do canvasu nebo pictureboxu místo labelů.

 
Nahoru Odpovědět
12.9.2013 17:58
Avatar
Theodor Johnson
Tvůrce
Avatar
Odpovídá na Michael Olšavský
Theodor Johnson:12.9.2013 18:38

Koukal jsem na ten tutoriál, pře labely je to asi nejlepší, nepotřebuješ načítat obrázky, a mám pocit že canvas snad ani ve wf není

Nahoru Odpovědět
12.9.2013 18:38
Mo8ilε 15 Ѐλđ
Avatar
Odpovídá na Theodor Johnson
Michael Olšavský:12.9.2013 18:39

Proto jsem psal obě možnosti. Kdyby to chtěl v WPF. Pro něj je to možná nejlepší, ale nezdá se mi to jako správné řešení. Obzvláště při takovéto manipulaci.

 
Nahoru Odpovědět
12.9.2013 18:39
Avatar
Odpovídá na Theodor Johnson
Michal Žůrek - misaz:12.9.2013 18:40

ve wpf je canvas (asi). ve wiforms je picturebox.

 
Nahoru Odpovědět
12.9.2013 18:40
Avatar
Theodor Johnson
Tvůrce
Avatar
Odpovídá na Michal Žůrek - misaz
Theodor Johnson:12.9.2013 18:43

Canvas a pb je něco malinko jinýho, pokud hledáš wpf alternativu pb tak je to image, canvas je panel pro umístění tvarů (obdelník, kruh, čára, ...)

Nahoru Odpovědět
12.9.2013 18:43
Mo8ilε 15 Ѐλđ
Avatar
Odpovídá na Theodor Johnson
Michal Žůrek - misaz:12.9.2013 18:52

jo, ale tu se myslí picturebox, tak že si z něho vezmeš graphics a začneš do něho kreslit čtverce, kruhy, trujúhelníky...

 
Nahoru Odpovědět
12.9.2013 18:52
Avatar
Hypnoz
Neregistrovaný
Avatar
Hypnoz:14.9.2013 11:55

Takže opravdu stačila metoda Rectangle.Inter­sect. Jsem rád, že se najdou lidé, kteří poradí, i když z toho nic nemají. Ještě jednou všem děkuji za odpovědi.

 
Nahoru Odpovědět
14.9.2013 11:55
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na
David Hartinger:14.9.2013 12:00

Máme z toho zkušenosti, divil by ses co všechno jsem se zde naučil :P

Nahoru Odpovědět
14.9.2013 12:00
You are the greatest project you will ever work on.
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 12 zpráv z 12.