Thema: Delphi Ball abprallen

Einzelnen Beitrag anzeigen

ichbins

Registriert seit: 9. Jul 2005
Ort: Hohenaltheim
1.001 Beiträge
 
Delphi 2005 Personal
 
#2

Re: Ball abprallen

  Alt 22. Nov 2005, 14:08
Delphi-Quellcode:
procedure TFormBall.TimerBewegungTimer(Sender: TObject);
begin
  with DemoBall do
  begin
    if Orty + Radius < FormBall.ImageSpielfeld.Height
    then begin
           FormBall.ImageSpielfeld.Canvas.pen.Color:=clwhite;
           farbe := clwhite; //Löschen
           zeichnen; //Übermalen
           farbe := clred; //Farbe zurücksetzen
           FormBall.ImageSpielfeld.Canvas.pen.Color:=clblack;

           vy:=vy+1; {Erhöhung von vy, wobei eine Einheit
           willkürlich angenommen wurde}

           Orty:=Orty+round(vy*TimerBewegung.Interval);
           {neuerOrt:=alterOrt + Wegzunahme}
           zeichnen;
         end;
                     ///hier gehört ein GRÖSSERGLEICH hin.
       if Orty + Radius >= FormBall.ImageSpielfeld.Height
       then begin

                FormBall.ImageSpielfeld.Canvas.pen.Color:=clwhite;
                FormBall.ImageSpielfeld.Canvas.Brush.Color:=clwhite;
                FormBall.ImageSpielfeld.Canvas.ellipse(Ortx-Radius,Orty-Radius,Ortx+Radius,Orty+Radius);
                FormBall.ImageSpielfeld.Canvas.pen.Color:=clblack;
                //Wenn du schon am Boden angekommen bist, willst du nicht mehr beschleunigen.
                {vy:=vy+1;}
                ////////////////////so, jetzt muss der Ball ja abprallen. Das machst du so:
                vy:=-vy; //die Y-Geschwindigkeit muss ja umgekehrt werden.
                zeichnen;

                end;
  end;{with do}
end;
edit: GRAUENHAFTE Einrückung...

außerdem sieht mir das ziemlich nach Info-Hausaufgabe aus. Nur da wird alles so kleinlichst in Klässchen aufgeteilt und benannt.

Bei mir würde das soaussehen:
Delphi-Quellcode:
procedure TFormBall.TimerBewegungTimer(Sender: TObject);
begin
  with Ball do
  begin
    if Orty + Radius < Form1.Image1.Height
    then begin
      Form1.Image1.Canvas.pen.Color:=clwhite;
      farbe := clwhite;
      zeichnen;
      farbe := clred;
      Form1.Image1.Canvas.pen.Color:=clblack;
      vy:=vy+1;
      zeichnen;
    end else begin
      Form1.Image1.Canvas.pen.Color:=clwhite;
      Form1.Image1.Canvas.Brush.Color:=clwhite;
      Form1.Image1.Canvas.ellipse(Ortx-Radius,Orty-Radius,Ortx+Radius,Orty+Radius);
      Form1.Image1.Canvas.pen.Color:=clblack;}
      zeichnen;
      vy:=-vy;
      zeichnen;
    end;
  end;
end;
Michael Enßlin
Ich, der ich weiß, mir einzubilden, dass ich weiß, nichts zu wissen, weiß, dass ich nichts weiß.
Sokrates
  Mit Zitat antworten Zitat