Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi reflektierender Ball - Hilfe! (https://www.delphipraxis.net/150219-reflektierender-ball-hilfe.html)

Smokey002 10. Apr 2010 14:34


reflektierender Ball - Hilfe!
 
hallo
Ich bin ein blutiger Anfänger, nur damit ich mir eventuelle Kommentare erspare ;)
ich muss ein kleines Programm schreiben, das dafür sorgt das ein Ball an den Wänden einer Begrenzung (eine weiße quadratische shape) abprallt bzw nach dem Motto "Einfallswinkel=Ausfallswinkel" reflektiert wird.
Im Moment macht der Ball noch nicht das was ich von ihm will.

Delphi-Quellcode:

unit Uball;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ExtCtrls;

type
  TForm1 = class(TForm)
    sgrenze: TShape;
    sball: TShape;
    Timer1: TTimer;
    procedure Timer1Timer(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  bx: Integer;
  by: integer;
implementation

{$R *.DFM}

procedure TForm1.Timer1Timer(Sender: TObject);
begin
bx:=10;
by:=20;

       sball.left:=sball.left+bx;
       if sball.left < 0 then
          begin
               sball.left := 1;
               bx := -bx;
          end;
          if sball.left > sgrenze.width - sball.left then
          begin
          sball.left := sgrenze.width - sball.left;
          bx := -bx;
          end;

       sball.top := sball.top+by;
       if sball.top < 0 then
          begin
          sball.Top := 1;
          by := -by;
          end;
       if sball.top > sgrenze.height - sball.height then
          begin
          sball.top := sgrenze.height - sball.height;
          by := -by;
          end;

end;
end.
Ich bräuchte eure Hilfe!
Außerdem würde ich gerne eine dritte Shape als bewegliche Wand einbauen (Mousemove) um ein bisschen mit dem Ball herumzuspielen, weiß aber nicht wie ich das anstelle.

vielen Dank im Vorraus,

Smokey

mkinzler 10. Apr 2010 14:36

Re: reflektierender Ball - Hilfe!
 
Was macht das Programm bisher?
Das Problem könnten die großen Schrittweiten sein.

Corpsman 10. Apr 2010 14:38

Re: reflektierender Ball - Hilfe!
 
Hast du dir schon mal mein Sample zu dem Thema angesehen ?

mkinzler 10. Apr 2010 14:40

Re: reflektierender Ball - Hilfe!
 
Zitat:

Zitat von Corpsman
Hast du dir schon mal mein Sample zu dem Thema angesehen ?

Warum auch selber machen, wenn man gut kopieren kann :zwinker: :mrgreen:

LargoD 10. Apr 2010 14:43

Re: reflektierender Ball - Hilfe!
 
Das
bx:=10;
by:=20;
am Anfang der Timerroutine macht Dir natürlich die ganze Reflexion im nächsten Schritt wieder zunichte.

Gruß
Erich

Corpsman 10. Apr 2010 14:45

Re: reflektierender Ball - Hilfe!
 
Naja ich hoffe nicht das er alles Kopiert, aber ich finde es imme rfürterlich wenn ich da was von "Shape" lese, und dadie Kollision in dem Sample auch gleich berücksichtigt wird ....

Das zu schnelle bewegen hat übrigens u.U. das Tunneling Problem..

Smokey002 10. Apr 2010 14:46

Re: reflektierender Ball - Hilfe!
 
klar hab ich mir schon samples und beispiele angeschaut, nur kopieren will ich eigentlich nicht. Ich würde die Vorgehensweiße gerne selbst nachvollziehen.

Der Ball wird an der linken Wand einwandfrei und auch richtig reflektiert. Sobald er an die untere Wand kommt, bleibt er dort stehen und "zittert" so komisch, als ob er festhängt. Die rechte Wand erreicht der Ball erst gar nicht. Er dreht vorher schon um.
Ich weiß einfach nicht was falsch läuft.

mkinzler 10. Apr 2010 14:48

Re: reflektierender Ball - Hilfe!
 
http://www.delphipraxis.net/internal...145796#1145796

Der.Kaktus 10. Apr 2010 14:51

Re: reflektierender Ball - Hilfe!
 
Zitat:

Zitat von mkinzler
http://www.delphipraxis.net/internal_redirect.php?p=1145796#1145796

dat war wohl nix :gruebel:

Smokey002 10. Apr 2010 14:51

Re: reflektierender Ball - Hilfe!
 
Liste der Anhänge anzeigen (Anzahl: 1)
Im Moment sieht das ganze so aus. Vielleicht wisst ihr dann was nicht korrekt ist.

--> im Anhang


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:23 Uhr.
Seite 1 von 3  1 23      

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