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

C# .NET .NET (C# a Visual Basic) Zjištění ekvivalence parametru mezi objektama American English version English version

Avatar
Kesny
Člen
Avatar
Kesny:

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

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
Nesnáším {}, proto se jim vyhýbám.
Avatar
Kesny
Člen
Avatar
Odpovídá na Michal Žůrek (misaz)
Kesny:

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
Redaktor
Avatar
Odpovídá na Kesny
Petr Nymsa:
//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í
+1 bodů
Ř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
Redaktor
Avatar
Odpovídá na Kesny
hanpari:

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  +1 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.