Zitat von
Cöster:
Zitat von
Andy1988:
wie kann ich das so programmiere, das wenn er den rand von der Form berührt die richtung wechselt und das gleiche bei den schlägern?
Die X- und Y-Geschwindigkeiten auch als Variable speichern und bei Richtungsänderung die entsprechende Geschwindigkeit mit -1 multiplizieren.
Hat leider net geklappt, er geht in die untere rechte ecke und bewegt sich ein schritt nach oben und ein schritt nach unten(wo ich ihn nicht mehr sehen.
Ich habe es so gemacht mit den speichern:
x2,y2,x3,y3: Integer;
Das sind die Variablen, dann habe ich ihm werte zugewiesen, da es ja auch gleichzeitig ne ellipse ist:
Delphi-Quellcode:
x2 := 250;
y2 := 260;
x3 := 270;
y3 := 280;
Timer1.Enabled := True;
Das steht bei mir unter FormCreate.
und dannach kommt halt die Procedur die ich gepostet habe und jetzt verändert habe:
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
x2 := x2 + 10;
y2 := y2 + 10;
x3 := x3 + 10;
y3 := y3 + 10;
// wenn oben oder unten angekommen soll er Richtung wechseln
if (y2 <= 0) or (y2 >= Form1.ClientHeight)
or (y3 <= 0) or (y3 >= Form1.ClientHeight) then
begin
y2 := -y2;
y3 := -y3;
end;
//wenn rechts oder links angekommen soll er Richtung Richtung wechseln
if (x2 <= 0) or (x2 >= Form1.ClientWidth)
or (x3 <= 0) or (x3 >= Form1.ClientWidth) then
begin
x2 := -x2;
x3 := -x3;
end;
end;
Ich hoffe das die Infos einigermaßen reichen.
Mfg
Andy1988
Lebe so wie du willst und programmiere so wie du willst, aber du trägst die Verantwortung.