Hey Jungs,
ich mache gerade ein kleines Flugeugspiel. Habe aber ein Problem bekommen.
Ich habe eine 2 Dimensionale List und ich möchte Werte innerhalb der List vergleichen jedoch mit +-15 Punkte von den eigentlichen x bzw. y. Es soll festgestellt werden ob die Flugzeuge mit einander Kollidieren.
Kann mir jemand helfen? Dachte sowas geht mit Linq aber ich weiss es einfach nicht mehr 😉 Danke schon mal fuer eure Hilfe
Die Klasse fuer meine List mit x,-y Koordinaten
public class Flugzeug_Linie
{
public int x;
public int y;
}
Declaration der List
List<List<Flugzeug_Linie>> flugzeug_linie = new List<List<Flugzeug_Linie>>();
endliche Flugzeug hinufügen
flugzeug_linie.Add(new List<Flugzeug_Linie>());
endliche Koordinaten hinzufügen für das jeweilige Flugzeug
flugzeug_linie.Last().Add(new Flugzeug_Linie { x = e.X, y = e.Y });
Hallo.
So auf die schnelle für eine 2D-List von ints. Das kannst Du aber einfach ändern zu Flugzeug_Linie.
int CollisionDistance = 1;
List<List<int>> list = new List<List<int>>();
list.Add(new List<int>());
list.Add(new List<int>());
list[0].Add(3);
list[0].Add(7);
list[0].Add(8);
list[1].Add(9);
list[1].Add(14);
list[1].Add(15);
var many = list.SelectMany(item => item);
var result = from x in many
let collision = many.Where(y => x != y && Math.Abs(y - x) <= CollisionDistance)
where collision.Any()
select new { item = x, collisionset = collision };
foreach (var r in result)
{
Console.Write("Item: " + r.item + " , Kollisionsmenge: ");
foreach (var collisionCandidate in r.collisionset)
Console.Write(" " + collisionCandidate);
Console.WriteLine();
}
Zu jedem Item der Liste wird also die Menge der Kollisionskandidaten gefunden. Im Beispiel alle, die eine Entfernung von 1 haben (CollisionDistance = 1)
Ausgabe:
Item: 7 , Kollisionsmenge: 8
Item: 8 , Kollisionsmenge: 7 9
Item: 9 , Kollisionsmenge: 8
Item: 14 , Kollisionsmenge: 15
Item: 15 , Kollisionsmenge: 14
MfG
Habe es gleich reingebaut er zickt aber bei
Math.Abs(y - x)
er mag das "-" nicht
Bitte beachte bei Fragen und Nachfragen [Hinweis] Wie poste ich richtig? Punkt 1.1.1. Den Umgang mit Collections setzen wir als bekannt voraus, genauso wie die Fähigkeit, einfache Fehler, erst recht Syntaxfehler zu lösen. Zu letzterem siehe [Hinweis] Syntaxfehler selbst lösen (Compilerfehlermeldungen).