public override bool Equals(object obj) { if (obj.GetType() != typeof(Koordinate)) { return(false); } Koordinate other = (Koordinate)obj; return(other == this); }
// Lösche alle Punkte im Rechteck lb x lh um den Punkt x, y // Liefert true zurück, wenn Punkte gelöscht worden sind public bool LoescheBei(int x, int y, int lb, int lh) { bool punkteGeloescht = false; int min_x = x - lb / 2; int max_x = x + lb / 2; int min_y = y - lh / 2; int max_y = y + lh / 2; for (int i = Count - 1; i >= 0; i--) { // Alle passenden Koordinaten aus der Linie entfernen for (int k = this[i].Count - 1; k >= 0; k--) { Koordinate koord = this[i][k]; if (koord.X >= min_x && koord.X <= max_x && koord.Y >= min_y && koord.Y <= max_y) { // Soll ein Punkt innerhalb einer Linie gelöscht werden, dann soll die Linie in zwei Teile aufgeteilt werden if (k != 0 && k != this[i].Count - 1) { // Es soll in einer Linie gelöscht werden. Diese einfach aufteilen Linie linie = new Linie(); for (int l = this[i].Count - 1; l > k; l--) { linie.Add(this[i][l]); this[i].RemoveAt(l); } // Neue Linie hinter dieser einfügen this.Insert(i + 1, linie); break; } // Punkt befindet sich inenrhalb des angegebenen Rechtecks, also löschen this[i].RemoveAt(k); punkteGeloescht = true; } } // Sind in dieser Linie überhaupt noch Punkte enthalten? if (this[i].Count == 0) { // Nein - Linie löschen this.RemoveAt(i); } } return(punkteGeloescht); }