Benötige Hilfe
-
Falls du Sones Beitrag nicht verstehst:
Statt 10 zu addieren oder zu subtrahieren, addiere immer den Wert der Variablen z.B. speedX und speedY.
SpeedX (bzw. speedY -je nachdem welche 'Wand') nimmst du mal -1, wenn eine Wand erreicht wurde.
-
ja, danke erstmal.
aber welche Abfrage muss ich treffen damit mein "Spielball" nicht das Spielfeld verlässt.
Momentan habe ich nämlich noch das Problem, dass sich mein Spielball von der Mitte des Spielfelds, schräg nach rechts unten bewegt und dann verschwindet der Spielball einfach.
Möchte aber, solbald er die Grenze des Spielfeldes erreicht, dass er abprallt?
Bei dieser Abfrage bin ich überfordert.
-
Wird Location.Y denn sicher irgendwann genau gleich 366?
Eher nicht oder?
-
Keine ahnung ob diese Abfrage funktioniert. Aber da mein Spielfeld die Größe von 898 * 366 Pixel hat, dachte ich das nützt vielleicht was.
-
Und was ist die Startposition vom Ball?
Wenn die z.B 350 ist, wird Location.Y dann irgendwann mal genau 366 wenn immer 10 addiert wird?
-
Die Startposition vom Ball liegt derzeit bei (449,183).
also der x-Wert ist 449 und der y-Wert 183.ach ja genau, du du meinst wohl dass der Wert 366 nie genau erreicht wird.
ich sollte besser >= 366 schreiben.
-
Genau. Zumindest solange du nur 4 Wände hast und keine kleinen Mauern oder sowas im Spielfeld stehen.
-
also ich hab jetzt folgendes mal ausgebessert. habe mein Spielfeld auf die Größe 900 x 360 Pixel verändert und meinen Startwert genau auf (0,0) gesetzt damit sicher die Zahl 360 erreicht wird.
meine Abfrage lautet nun:
private: System::Void Timer_Tick(System::Object^ sender, System::EventArgs^ e) {
xWert += 10;
yWert += 10;Ball->Location = System::Drawing::Point(xWert, yWert);
if(Ball->Location.Y == 360)
{
xWert += 10;
yWert -= 10;
}}
aber der Ball prallt trotzdem nicht von der Wand ab, was nun? gibt es noch eine andere Abfrage?

-
Dann bleibt er an der Wand kleben. Wie man das ändert haben Sone und ich schon geschreiben.
-
das habe ich auch schon geändert. nu r das Problem ist, dss er es nicht macht! Der Ball bleibt einfach nicht kleben, sondern fährt weiter.
-
Was ist "das" und "es"? Zeig mal den neuen Code.
Der Ball bleibt einfach nicht kleben, sondern fährt weiter.
Wirklich? 360 liegt außerhalb des Spielfelds, den Ball solltest du also gar nicht mehr sehen können.
-
Nein, er bleibt kleben, nur siehst du das nicht.
LocationXY ist die linke obere Ecke des Balls.
Abprallen sollte er aber, wenn die untere Ecke über den Bereich geht.
Kommste damit weiter?Edit: Kannst ja testeweise mal in deiner if-Abfrage nen kleineren Wert als die Spielfeldgröße angeben
-
alles klar. wenn das so ist, dann müsste ich nur noch die größe des Balls subtrahieren oder?
-
Ja, hört sich gut an.
-
danke
