Benutzer mit den meisten Antworten
Ein Taste kurz ignorieren möglich?

Frage
-
void Rectangles(object sender, EventArgs e) { double p1 = Canvas.GetTop(rectangle1) ; double p2 = p1 + 50; double p3 = Canvas.GetTop(rectangle2); double p4 = p3 + 50; double y = Canvas.GetTop(ball); double x = Canvas.GetLeft(ball); double x2 = Canvas.GetLeft(ball); if (y + ball.ActualHeight >= p1 && y <= p2 && x == ball.ActualWidth) { score++; ScoreLeft.Content = score; } if (y + ball.ActualHeight >= p3 && y <= p4 && x2 == 457) { score2++; ScoreRight.Content = score2; } if (p1 == 0) //hier soll die Taste ignoriert werden { Canvas.SetTop(rectangle1, 1); } }
Ich möchte das, wenn p1 = 0 ist, dass die Taste W vom Prgramm ignoriert wird bis p1 nicht mehr 0 ist. Ist das umsetzbar?
Wenn mehr Infos und/oder Code benötigt wird, einfach Bescheid geben.
Danke im Voraus.
- Bearbeitet FoxGaming Sonntag, 10. September 2017 16:41
Antworten
-
Okay ich habe es durch rumprobieren hinbekommen. Lösung war einfacher als gedacht:
if (p1 <= 0) { Canvas.SetTop(rectangle1, 1); }
man kann W drücken wie man will, der Rechteck bleibt im Bild.
Trotzdem danke für deine Bemühungen
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Montag, 18. September 2017 05:32
Alle Antworten
-
Hey,
um auf das Drücken der Taste W zu reagieren, verwendest du sicherlich einen EventHandler. Dort kannst du überprüfen, ob p1 != 0 ist.
public void keyDownEventHandler(object sender, KeyEventArgs e) { if (e.Key == Key.W) { if (Canvas.GetTop(rectangle1) == 0) { return; } // Set new position of rectangle } }
Ein anderer Ansatz, den man wählen kann, ist es, für den Pong-Schläger eine eigene Klasse zu erstellen und im Setter darauf zu achten, dass man der y-Koordinate keine negativen Werte zuweist.
class Paddle { private Point position; public Point Position { get => this.position; set { if (value.Y > 0) { this.position = value; } } } }
Dadurch wird zwar nicht das Drücke der Taste ignoriert, aber die Position des Schlägers ändert sich nicht und kann sozusagen nicht über den Rand hinaus.
Beste Grüße
-
Hey,
um auf das Drücken der Taste W zu reagieren, verwendest du sicherlich einen EventHandler. Dort kannst du überprüfen, ob p1 != 0 ist.
public void keyDownEventHandler(object sender, KeyEventArgs e) { if (e.Key == Key.W) { if (Canvas.GetTop(rectangle1) == 0) { return; } // Set new position of rectangle } }
Ein anderer Ansatz, den man wählen kann, ist es, für den Pong-Schläger eine eigene Klasse zu erstellen und im Setter darauf zu achten, dass man der y-Koordinate keine negativen Werte zuweist.
class Paddle { private Point position; public Point Position { get => this.position; set { if (value.Y > 0) { this.position = value; } } } }
Dadurch wird zwar nicht das Drücke der Taste ignoriert, aber die Position des Schlägers ändert sich nicht und kann sozusagen nicht über den Rand hinaus.
Beste Grüße
Hier EventHandler:
private void OnButtonKeyDown(object sender, KeyEventArgs e) { string test = e.Key.ToString(); if (test == "W" ) { Canvas.SetTop(rectangle1, Canvas.GetTop(rectangle1) - 2.5); } if (test == "S") { Canvas.SetTop(rectangle1, Canvas.GetTop(rectangle1) + 2.5); } }
Allerdings wüsste ich nicht wie ich deinen ersten Vorschlag drauf anwenden könnte. Könntest du mir da behilfreich sein
-
Okay ich habe es durch rumprobieren hinbekommen. Lösung war einfacher als gedacht:
if (p1 <= 0) { Canvas.SetTop(rectangle1, 1); }
man kann W drücken wie man will, der Rechteck bleibt im Bild.
Trotzdem danke für deine Bemühungen
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Montag, 18. September 2017 05:32