Avatar
Hypnoz
Neregistrovaný
Avatar
Hypnoz:

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:

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
Redaktor
Avatar
Odpovídá na Hypnoz
Theodor Johnson:

co třeba Rectangle.Inter­sect?

Nahoru Odpovědět 12.9.2013 17:54
Přecházím na "Cross-Platform Development"
Avatar
Hypnoz
Neregistrovaný
Avatar
Hypnoz:

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 Hypnoz
Michael Olšavský:

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  +1 12.9.2013 17:58
Avatar
Theodor Johnson
Redaktor
Avatar
Odpovídá na Michael Olšavský
Theodor Johnson:

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
Přecházím na "Cross-Platform Development"
Avatar
Odpovídá na Theodor Johnson
Michael Olšavský:

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

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

Nahoru Odpovědět 12.9.2013 18:40
Nesnáším {}, proto se jim vyhýbám.
Avatar
Theodor Johnson
Redaktor
Avatar
Odpovídá na Michal Žůrek (misaz)
Theodor Johnson:

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
Přecházím na "Cross-Platform Development"
Avatar
Odpovídá na Theodor Johnson
Michal Žůrek (misaz):

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  +2 12.9.2013 18:52
Nesnáším {}, proto se jim vyhýbám.
Avatar
Hypnoz
Neregistrovaný
Avatar
Hypnoz:

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 Čápka
Tým ITnetwork
Avatar
Odpovídá na Hypnoz
David Čápka:

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

Nahoru Odpovědět  +1 14.9.2013 12:00
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
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.