![]() |
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] |
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? |
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) |
Re: break it problem
Das heisst du sollst die lokalen Variablen weglassen!
|
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
|
Re: break it problem
Erstmal die Reihenfolge ändern
und die Grenzen richtig setzen.
Delphi-Quellcode:
So, jetzt würden zumindestens die Shapes erstmal am Rand hängenbleiben, da rechtzeitig ausgewertet wird.
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; - 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:
und die Starteinstellung z.B. ins OnCreate (nur einmal bei, bzw. vor dem Start setzen)
var x,y:integer;
Delphi-Quellcode:
x := 5;
y := 5; |
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:
[edit=mkinzler]Code-Tag durch Delphi-Tag ersetzt. Scheint manche hier zu überfordern, die entsprechende Sprache auszuwähen! Mfg, mkinzler[/edit]
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; |
Re: break it problem
was hab ich zu dem
Delphi-Quellcode:
geschrieben?
x := 5;
y := 5; |
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
|
Re: break it problem
Und wo veränderst du diese Werte?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:21 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