knappenboy
Mitglied
Hallo,
ich habe drei Listen. Die erste hat ein Punktelement(X,Y) und jedes Element, wird später als Vergleichselement genutzt. Die anderen beiden Listen sind endlos groß. Die erste enthält die X-Werte, die andere die Y-Werte. Die Elemente der Liste2 und 3 werden zuvor berechnet und jeweils über die Zeit hinzugefügt.
Z. B.: Liste eins
private List<Punkt> auswählen = new List<Punkt>();
auswählen = new List<Punkt>();
auswählen.Add(new Punkt(10, 90));
auswählen.Add(new Punkt(20, 45));
auswählen.Add(new Punkt(-30, 100));
die zweite Liste mit den Werten die mit den X-Elementen aus Liste auswählen verglichen werden sollen
List liste2 = endlos Werte von -90,-89,...,0,1,2,...,89,90
die dritte Liste mit den Werten die mit den Y-Elementen aus Liste auswählen verglichen werden sollen
List liste3= endlos Werte von 0,1,2,...,178,179,180
Die Elemente der Liste 2 und 3 variieren und sind jeweils die X und Y Koordinaten eines Punktes der den jeweiligen Vektor versuchen sollen anzusteuern.
Sprich: Wenn Punkt(10,90) gewählt wird, dann muss der Punkt durch die Elemente aus der Liste2 (X-Koord.) und Liste 3 (Y-Koord.) angesteuert werden.
else {spring zurück, bis es klappt}
Das erreichen der Punkte klappt. Jetzt möchte ich allerdings in die if,else Anweisung einen Timer unterbringen der mir sagt:
- Wenn der Punkt getroffen wird, dann halte diesen 3 Sekunden (Intervall 0.1) --> bedeutet für mich das 30 nacheinander folgende Werte aus Liste 2 und 3 gleich dem getroffenen Punkt sind.
- Wenn innerhalb der 3 Sekunden eines der 30 Listenelemente nicht dem des Punktes entspricht, dann fange von vorn an
- sind die 3 Sekunden erreicht, alle Elemente sind gleich, dann Lösche das erste Element aus Liste 1
Mein Aufbau
Hoffentlich könnte mir Jemand das erklären, wie ich den Timer schalten muss bzw. wie die Anweisung funktioniert. Ich bekomme es nicht hin
ich habe drei Listen. Die erste hat ein Punktelement(X,Y) und jedes Element, wird später als Vergleichselement genutzt. Die anderen beiden Listen sind endlos groß. Die erste enthält die X-Werte, die andere die Y-Werte. Die Elemente der Liste2 und 3 werden zuvor berechnet und jeweils über die Zeit hinzugefügt.
Z. B.: Liste eins
private List<Punkt> auswählen = new List<Punkt>();
auswählen = new List<Punkt>();
auswählen.Add(new Punkt(10, 90));
auswählen.Add(new Punkt(20, 45));
auswählen.Add(new Punkt(-30, 100));
die zweite Liste mit den Werten die mit den X-Elementen aus Liste auswählen verglichen werden sollen
List liste2 = endlos Werte von -90,-89,...,0,1,2,...,89,90
die dritte Liste mit den Werten die mit den Y-Elementen aus Liste auswählen verglichen werden sollen
List liste3= endlos Werte von 0,1,2,...,178,179,180
Die Elemente der Liste 2 und 3 variieren und sind jeweils die X und Y Koordinaten eines Punktes der den jeweiligen Vektor versuchen sollen anzusteuern.
Sprich: Wenn Punkt(10,90) gewählt wird, dann muss der Punkt durch die Elemente aus der Liste2 (X-Koord.) und Liste 3 (Y-Koord.) angesteuert werden.
C#:
if (auswählen[0].X == Liste2[i])
{
if (auswählen[0].Y == Liste3[i])
{
mach was!
}
}
Das erreichen der Punkte klappt. Jetzt möchte ich allerdings in die if,else Anweisung einen Timer unterbringen der mir sagt:
- Wenn der Punkt getroffen wird, dann halte diesen 3 Sekunden (Intervall 0.1) --> bedeutet für mich das 30 nacheinander folgende Werte aus Liste 2 und 3 gleich dem getroffenen Punkt sind.
- Wenn innerhalb der 3 Sekunden eines der 30 Listenelemente nicht dem des Punktes entspricht, dann fange von vorn an
- sind die 3 Sekunden erreicht, alle Elemente sind gleich, dann Lösche das erste Element aus Liste 1
Mein Aufbau
C#:
void Irgendein Ereignis (..)
{
if (((auswählen[index].X == Liste2[i])) && (auswählen[index].Y == Liste3[i]))
{
timerSend.Interval = TimeSpan.FromSeconds(0.1);
timerSend.Tick += tick;
timerSend.Start();
}
else {"nochmal"}
}
void tick(object sender, EventArgs e)
{
zahl += 0.1f;
if (zahl >= 3)
{
zahl = 0;
auswählen.RemoveAt(index);
timerSend.Stop();
}
}
Zuletzt bearbeitet von einem Moderator: