Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi PING PONG soll abprallen (https://www.delphipraxis.net/69985-ping-pong-soll-abprallen.html)

Intapper 23. Mai 2006 08:21


PING PONG soll abprallen
 
Hi @ all,
In unserem Informatikkurs machen wir gerade das Projekt "Ping Pong"
Bis jetzt haben wir geschafft den Ball zu zeichnen und zu bewegen.
Das jetztige Problem von mir ist, dass ich den Ball nicht wenden kann :?:


Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  position.X:=position.X+1;
  position.Y:=position.Y+1;
  refresh;
  if (position.X = 2) and (position.Y = 2) then
  Begin;
  position.Y:=position.Y-20;
  position.X:=position.X-20
  end;
  canvas.Brush.Color:=clRed;
  Ball_zeichnen;
end;
da liegt das Problem !!! Ich weiß ja auch warum, ich kenn aber bisher keine andere Möglichkeit um die Richtung vom Ball zu ändern.
Ich wäre froh, wenn ihr mir helfen könnt.

mfg Intapper

freak4fun 23. Mai 2006 08:25

Re: PING PONG soll abprallen
 
Hallo,
Speicher in einer Variable die Richtung. Am Besten für X- und Y-Richtung getrennt. Wenn der Ball an eine Wand / Spielbrett kommt änderst du die Richtung. Die Bewegung entsteht, wie du ja schon weißt *g* aus Subtraktion bzw. Addition von der Geschwindigkeit. :)

MfG
ein sehr müder freak

Intapper 23. Mai 2006 08:36

Re: PING PONG soll abprallen
 
Zitat:

Zitat von freak4fun
Hallo,
Speicher in einer Variable die Richtung.

Hi,
Sorry kenn mich nicht sehr gut aus mit Delphi :oops:
Könntest du mir zum Bsp. " Die Richtung in einer Variable speichern" zeigen?

Danke.

mfg Intapper

freak4fun 23. Mai 2006 08:55

Re: PING PONG soll abprallen
 
Ich würde das zum Beispiel so machen:

Delphi-Quellcode:
var
  BallBewegtSichNachRechts: Boolean;

...

  if BallBewegtSichNachRechts then
    Ball.X := Ball.X + 5
  else
    Ball.X := Ball.X - 5;
Nur so als Idee. Mann Kann die Richtung auch als positiven oder negativen Wert in einer Integervariable speichern und dann den Wert addieren.

Delphi-Quellcode:
var
  Ballgeschwindigkeit: Integer;

...

  Ballgeschwindigkeit := 5;
  Ball.X := Ball.X + Ballgeschwindigkeit;

  if Ball.X + Ball.Breite >= Form1.Width then
    Ballgeschwindigkeit := Ballgeschwindigkeit * -1;
Das mal so als Idee. ;) Hab das weder getestet noch wirklich viel drüber nachgedacht.

MfG
freak


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:30 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz