Delphi-PRAXiS
Seite 4 von 5   « Erste     234 5      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Jump and Run! need help ! (https://www.delphipraxis.net/81531-jump-run-need-help.html)

Cöster 4. Dez 2006 21:11

Re: Jump and Run! need help !
 
Zitat:

Zitat von Bartuc
SysUtils stand schon unter Uses drin. =(

Das war auch nur ein Beispiel, um zu zeigen, wofür die Uses-Klausel da ist.

Zitat:

Zitat von Bartuc
Was meintest du mit "in einer anderen Unit implementiert" ?

Teilst du dein Projekt auf mehrere Units auf? Dann verteilt sich dein Code auch auf mehrere Units. Mit "Implementierung" bezeichnet man den Teil des Codes, in dem steht, was gemacht werden soll, also alles, was unter dem Schlüsselwort "implementation" steht. Die Implementation einer Methode steht immer in der gleichen Unit wie ihre Deklaration. "IstAufDemBoden hast du wahrscheinlich selbst in einer anderen Unit implementiert" bedeutet "Der Code der Prozedur IstAufDemBoden steht wahrscheinlich nicht in der Haupt-Unit, sondern in einer anderen Unit".

Zitat:

Zitat von Bartuc
bzw "Dann musst du in der Aufrufenden Unit die Unit einbinden"?

Die "aufrufende Unit" ist die Unit, in der die Funktion IstAufDemBoden aufgerufen wird. Units werden "eingebunden", indem ihr Name in der Uses-Klausel eingetragen wird.

Bartuc 5. Dez 2006 12:28

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:
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;
Timer1 wird durch die Leertaste gestartet.

Delphi-Quellcode:
    VK_SPACE: begin
      timer1.enabled := true;
      Key := 0;
      end;
Aber es klappt nicht... wenn ich die leertaste drücke friert das Programm ein.
wo liegt der Fehler? ich finde den nicht.

Cöster 5. Dez 2006 13:52

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.

Bartuc 5. Dez 2006 14:01

Re: Jump and Run! need help !
 
ok hab ich gerade auch gesehen :?

Delphi-Quellcode:
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;
so besser? aber es friert immernoch ein =(

Cöster 5. Dez 2006 14:17

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.

inherited 5. Dez 2006 14:59

Re: Jump and Run! need help !
 
Delphi-Quellcode:
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;
Schau mal, so ist es gelich viel lesbarer und tut auch garnicht mehr in den Augen weh ;)
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:
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;
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.

Bartuc 5. Dez 2006 16:30

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:
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;
Das blöde ist das der jetzt immer bis auf top 424 fällt und nicht andere shapes oder so beachtet.
jemand eine idee?

Cöster 5. Dez 2006 16:52

Re: Jump and Run! need help !
 
Zitat:

Zitat von Bartuc
Das blöde ist das der jetzt immer bis auf top 424 fällt und nicht andere shapes oder so beachtet.
jemand eine idee?

Guck mal hier

Bartuc 5. Dez 2006 18:23

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:
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;
Vielleicht hat jemand noch eine idee hat wie es einfacher geht. z.b. mit nur einem timer die abfrage machen.

Danke schonmal =)

Cöster 5. Dez 2006 18:34

Re: Jump and Run! need help !
 
Zitat:

Zitat von Bartuc
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?

Da müsste man den Code sehen.

Zitat:

Zitat von Bartuc
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?

Delphi-Quellcode:
else
  Timer2.Enabled := True;
Zitat:

Zitat von Bartuc
Vielleicht hat jemand noch eine idee hat wie es einfacher geht. z.b. mit nur einem timer die abfrage machen.

Die beiden Bedingungen mit or verknüpfen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:28 Uhr.
Seite 4 von 5   « Erste     234 5      

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