Delphi-PRAXiS
Seite 1 von 6  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi break it problem (https://www.delphipraxis.net/147030-break-problem.html)

speedy23 31. Jan 2010 15:50


break it problem
 
ich habe diesen quelltext gefunden, der ist für pong... ich mache ein breakit aber ich habe das problem, dass ich den ball nicht im image halten kann. er fliegt einfach immer weiter... .



Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
var x,y:integer;

begin
  x := 5;
  y := 5;
  Shape1.Left := Shape1.Left +x ;
  Shape1.Top := Shape1.Top + y;

 
  if (Shape1.Top <= 100) or (Shape1.Top >= image1.ClientHeight) then
  begin
    y := -y;
  end;

 
  if (Shape1.Left <= 0) or (Shape1.Left >= image1.ClientWidth) then
  begin
    x := -x;
  end;

end;

end.


müsste das nicht eigentlich durch image1.client... ausgeschlossen werden??

mfg

[edit=Matze][delphi]-Tags eingefügt. Zukünftig bitte selbst daran denken. MfG, Matze[/edit]

mkinzler 31. Jan 2010 15:57

Re: break it problem
 
Da x und y lokale Variabeln sind, interessiert es etwaige (durch die lokalen überdeckte) globale Variablen des selben Namens nicht die Bohne, was du dort zuweist
@Matze, warum hast du meinen Edit wegeditiert?

speedy23 31. Jan 2010 16:00

Re: break it problem
 
und was sagt mir das jetzt... sorry aber ich versteh schon was das heißt aber wie wirkt sich das auf mein problem aus?

(sorry wegen dem falsch geposteten quelltext)

mkinzler 31. Jan 2010 16:01

Re: break it problem
 
Das heisst du sollst die lokalen Variablen weglassen!

speedy23 31. Jan 2010 16:06

Re: break it problem
 
wenn ich aber x und y weglasse was ändert das an der sache ich muss ja den wechsel in die negative haben wenns reflektiert wird oder? wenn i einfach nur mit den zahlen anstatt variablen arbeite... i hab gerade n denkfehler

himitsu 31. Jan 2010 16:20

Re: break it problem
 
Erstmal die Reihenfolge ändern
und die Grenzen richtig setzen.
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
var x,y:integer;

begin
  x := 5;
  y := 5;
 
  if (Shape1.Top <= 100) or (Shape1.Top >= image1.ClientHeight - Shape1.Height) then
  begin
    y := -y;
  end;
  if (Shape1.Left <= 0) or (Shape1.Left >= image1.ClientWidth - Shape1.Width) then
  begin
    x := -x;
  end;

  Shape1.Left := Shape1.Left + x;
  Shape1.Top := Shape1.Top + y;
end;
So, jetzt würden zumindestens die Shapes erstmal am Rand hängenbleiben, da rechtzeitig ausgewertet wird.

- Variable setzen
- diese Variable verrechnen
- jetzt erst die Begrenzung beachten und Wert änder bringt nichts mehr, da es schon verrechnet wurde :zwinker:


Ja und nun noch der nächste Schritt:

die variablem in den Private-Abschnitt der Form verschieben
Delphi-Quellcode:
var x,y:integer;
und die Starteinstellung z.B. ins OnCreate (nur einmal bei, bzw. vor dem Start setzen)
Delphi-Quellcode:
x := 5;
y := 5;

speedy23 31. Jan 2010 16:26

Re: break it problem
 
habs jetzt angepasst aber iwie bleibt das mittem auf meinem image hängen und pendelt... ich verstehs nicht...
wenn ich die x,y durch minus 5 ersetze startet er ja in entgegengesetzte richtung, aber das problem ist das er das image immernoch verlässt...



Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
var x,y:integer;

begin
   x := 5;
  y := 5;

  if (Shape1.Top <= 0) or (Shape1.Top >= image1.ClientHeight - Shape1.Height) then
  begin
    y := -y;
  end;
  if (Shape1.Left <= 0) or (Shape1.Left >= image1.ClientWidth - Shape1.Width) then
  begin
    x := -x;
  end;

  Shape1.Left := Shape1.Left + x;
  Shape1.Top := Shape1.Top + y;
end;
[edit=mkinzler]Code-Tag durch Delphi-Tag ersetzt. Scheint manche hier zu überfordern, die entsprechende Sprache auszuwähen! Mfg, mkinzler[/edit]

himitsu 31. Jan 2010 16:31

Re: break it problem
 
was hab ich zu dem
Delphi-Quellcode:
x := 5;
y := 5;
geschrieben?

speedy23 31. Jan 2010 16:41

Re: break it problem
 
hab ich jetzt gemacht, aber nun bewegt sich der ball gar nicht mehr :(... die var x,y:integer; habsch oben beim form unter implementation und die x:=5, ... unter onbuttonclick bei meinem startknopf

mkinzler 31. Jan 2010 16:42

Re: break it problem
 
Und wo veränderst du diese Werte?


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:21 Uhr.
Seite 1 von 6  1 23     Letzte »    

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