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í.

Diskuze: Zjištění ekvivalence parametru mezi objektama

V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Kesny
Člen
Avatar
Kesny:22.1.2015 19:33

Zdravím,
Mám aplikaci ve WinForm a tam mám PictureBox na kterém se pohybují puntíky (puntíky znázornují gladiátory a PictureBow je jejich arenou). Nevím si rady jak mám zjistit že jsou 2 puntíky na stéjné pozici na PictureBoxu. Všechny puntíky jsou objekty jedné třídy. Konstruktor vypadá takto:

public Bojovnik(string jmeno)
        {

            Jmeno = jmeno;
            Sance = 50;
            P_x = random.Next(0, 50);
            P_y = random.Next(0, 40);
            casovac.Interval = 1000;
            casovac.Tick += casovac_Tick;


        }
 
Odpovědět
22.1.2015 19:33
Avatar
Odpovídá na Kesny
Michal Žůrek - misaz:22.1.2015 19:35

můžeš třeba přetížit operátor == nebo si napsat metodu. každopádně budeš muset využít buď cyklu, nebo nějakého složitého LINQ.

 
Nahoru Odpovědět
22.1.2015 19:35
Avatar
Kesny
Člen
Avatar
Odpovídá na Michal Žůrek - misaz
Kesny:22.1.2015 19:41

v LINQ se nevyznám... Učím se celkem dost za pochodu, jak se přetežuje ==?

 
Nahoru Odpovědět
22.1.2015 19:41
Avatar
Petr Nymsa
Tvůrce
Avatar
Odpovídá na Kesny
Petr Nymsa:22.1.2015 19:47
//umísti do třídy Bojovnik
public static bool operator ==(Bojovnik a, Bojovnik b)
{
   return a.P_x == b.P_x && a.P_y == b.P_y;
}

// použití
Bojvnik a = new Bojovnik("a");
Bojovnik b= new Bojovnik("b");

if(a==b)
Console.WriteLine("Na stejné pozici!");
Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
Nahoru Odpovědět
22.1.2015 19:47
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
hanpari
Člen
Avatar
Odpovídá na Kesny
hanpari:22.1.2015 19:59

Stačí když použiješ HashSet. Ten ti pohlídá, aby každý bod byl jedinečný. Není potřeba věci komplikovat :)

int POCETBODU = 50;
var random = new Random();
var body = new HashSet<Point>();
while (body.Count < POCETBODU) {
        body.Add(new Point(random.Next(0,50), random.Next(0,50)));
}
 
Nahoru Odpovědět
22.1.2015 19:59
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 5 zpráv z 5.