![]() |
Re: Jump and Run! need help !
Zitat:
Zitat:
Zitat:
|
Re: Jump and Run! need help !
Irgendwie blick ich da nicht so ganz durch mit den mehreren Units.
Habs mal mit nem Timer versucht.
Delphi-Quellcode:
Timer1 wird durch die Leertaste gestartet.
procedure TForm1.Timer1Timer(Sender: TObject);
begin if imgcartman.Top = imgcartman.Top -100 then begin timer1.Enabled := false; timer2.enabled := true; end else begin repeat Imgcartman.Top := Imgcartman.left -5; until (imgcartman.Top = imgcartman.Top -100); end; end; procedure TForm1.Timer2Timer(Sender: TObject); begin if imgcartman.Top = imgcartman.top +100 then begin timer2.enabled := false; end else begin repeat imgcartman.Top := imgcartman.Top +5; until (imgcartman.Top = imgcartman.Top +100); end; end;
Delphi-Quellcode:
Aber es klappt nicht... wenn ich die leertaste drücke friert das Programm ein.
VK_SPACE: begin
timer1.enabled := true; Key := 0; end; wo liegt der Fehler? ich finde den nicht. |
Re: Jump and Run! need help !
Sorry, aber so langsam beginne ich daran zu zweifeln, ob du das wirklich ernst meinst. Wie soll denn eine Zahl gleich sie selbst + 100 sein (imgCartman.Top = imgCartman.Top + 100)? Keine der Bedingungen kann je erfüllt werden. All deine Repeat-Until-Schleifen sind Endlos-Schleifen. Die Verknüpfung von Left und Top (Zeile 9) scheint mir auch total sinnlos.
|
Re: Jump and Run! need help !
ok hab ich gerade auch gesehen :?
Delphi-Quellcode:
so besser? aber es friert immernoch ein =(
procedure TForm1.Timer1Timer(Sender: TObject);
begin if imgcartman.Top = -100 then begin timer2.enabled := true; timer1.Enabled := false; end else begin repeat Imgcartman.Top := Imgcartman.top -5; until (imgcartman.Top = -100); end; end; procedure TForm1.Timer2Timer(Sender: TObject); begin if imgcartman.Top = 100 then begin timer2.enabled := false; end else begin repeat imgcartman.Top := imgcartman.Top +5; until (imgcartman.Top = 100); end; end; |
Re: Jump and Run! need help !
Welchen Wert besitzt imgCartman.Top denn, bevor der Timer gestartet wird? Ist er größer als -101? Ist er durch 5 teilbar? Statt mit '=' zu vergleichen, könntest du auch mal '<', '>', '<=' oder '>=' nehmen.
|
Re: Jump and Run! need help !
Delphi-Quellcode:
Schau mal, so ist es gelich viel lesbarer und tut auch garnicht mehr in den Augen weh ;)
procedure TForm1.Timer1Timer(Sender: TObject);
begin if imgcartman.Top = -100 then begin timer2.enabled := true; timer1.Enabled := false; end else begin repeat Imgcartman.Top := Imgcartman.top -5; until (imgcartman.Top = -100); end; end; procedure TForm1.Timer2Timer(Sender: TObject); begin if imgcartman.Top >= 100 then begin imgcartman.Top:=100; timer2.enabled := false; end else begin repeat imgcartman.Top := imgcartman.Top +5; until (imgcartman.Top = 100); end; end; Ich glaube dein Problem ist, dass du hier von ideen und Möglichkeiten überhäuft wirst und du das alles garnicht so schnell verstehen kannst. So wie oben kann es nicht Funktionieren.
Delphi-Quellcode:
SO ist es besser. Dafür, dass der Code mehrmals ausgeführt wird, sind die TImer ja schon da. Dann brauchst du auch keine repeat..untils mehr. Außeerdem kann es ja sein dass Top deines Images zb 2 ist, dann kommt der bei schrittweisem decrimentieren von 5 niemals auf 100.
procedure TForm1.Timer1Timer(Sender: TObject);
begin if imgcartman.Top <= -100 then begin timer2.enabled := true; timer1.Enabled := false; end else begin Imgcartman.Top := Imgcartman.top -5; end; end; procedure TForm1.Timer2Timer(Sender: TObject); begin if imgcartman.Top >= 100 then begin imgcartman.Top:=100; timer2.enabled := false; end else begin imgcartman.Top := imgcartman.Top +5; end; end; |
Re: Jump and Run! need help !
hm.... bei mir bleibt das bild in der Luft stehen.
hab aber bissl rumprobiert und jetzt "springt" mein bild.
Delphi-Quellcode:
Das blöde ist das der jetzt immer bis auf top 424 fällt und nicht andere shapes oder so beachtet.
procedure TForm1.Timer1Timer(Sender: TObject);
begin if imgcartman.Top = 234 then begin timer2.enabled := true; timer1.Enabled := false; end else begin Imgcartman.Top := Imgcartman.top -2; end; end; procedure TForm1.Timer2Timer(Sender: TObject); begin if imgcartman.Top = 424 then begin timer2.enabled := false; end else begin imgcartman.Top := imgcartman.Top +2; end; end; jemand eine idee? |
Re: Jump and Run! need help !
Zitat:
![]() |
Re: Jump and Run! need help !
cool danke..... klappt schon fast....
es gibt nur noch 2 probleme :angel2: das 1. ist... wenn ich mit dem bild von der Seite an das Shape komme läuft mein bild trotzdem noch hinein. wie kann ich der kollisionsabfrage sagen das das bild dann vor dem shape stehen bleibt? das 2. ist... wenn ich auf einer höheren ebene bin (shape) und ich gehe in richtung "abgrund", schwebt das bild weiter auf der selben höhe wie am shape. Aber es sollte ja wieder runter fallen bis es auf ein anderes shape kommt. Wie geht das? momentan siehts so aus:
Delphi-Quellcode:
Vielleicht hat jemand noch eine idee hat wie es einfacher geht. z.b. mit nur einem timer die abfrage machen.
procedure TForm1.Timer3Timer(Sender: TObject);
begin if IsCollision (Imgcartman.BoundsRect, S_2.BoundsRect) then timer2.enabled := false ; end; procedure TForm1.Timer4Timer(Sender: TObject); begin if IsCollision (Imgcartman.BoundsRect, S_1.BoundsRect) then timer2.enabled := false end; Danke schonmal =) |
Re: Jump and Run! need help !
Zitat:
Zitat:
Delphi-Quellcode:
else
Timer2.Enabled := True; Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:28 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