Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Mit Timer images verschieben (https://www.delphipraxis.net/64261-mit-timer-images-verschieben.html)

Skullschildi 1. Mär 2006 14:43


Mit Timer images verschieben
 
Hallo mal wieder. Bei der entwicklung meines Jump and nthing else games bin ich beim Jumpen auf ein problem gestossen.
Delphi-Quellcode:
var hoch : integer; //bei formcreate als 10 definiert

procedure TForm1.Timer2Timer(Sender: TObject);
begin
if hoch > -10 then
begin
hoch := hoch - 1;
image2.Top := image2.Top - hoch;
image3.Top := image3.Top - hoch;
image4.Top := image4.Top - hoch;
image6.Top := image6.Top - hoch;
     end
     else
     if hoch < -10 then
     begin
     hoch := hoch + 1;
image2.Top := image2.Top - hoch;
image3.Top := image3.Top - hoch;
image4.Top := image4.Top - hoch;
image6.Top := image6.Top - hoch;

timer2.enabled := false;

end ;

end;

procedure TForm1.Button1Click(Sender: TObject);
begin if timer2.enabled = false then
timer2.enabled := true;

end;
die Bewegung endet, wo sie soll, was für mich heisst, des ding hört auf zu arbeiten wo es soll. Aber der Timer is weiterhin an. des stört mich n bissl, denn im spiel sollte man mehrmals springen^^. weiss jemand ne Lösung?

turboPASCAL 1. Mär 2006 14:56

Re: Mit Timer images verschieben
 
Eigentlich bin ich immer der Meinung das man in einem Programm so wenig Timer verwendet wie möglich.
Dieser kann dann mehrere Aufgaben erledigen, zB. springen, laufen und noch den Hintergrund bewegen.

Ein Image ist jetzt nicht so das Optimale für ein Game, aber für den Anfang ist es ok. ;)

zu deinem Problem, schreibe dir zu jedem Sprite (also dem Image) einen eigenen Typ. Dieser Typ kann dan zB. eine Variable Springen enthalten. Ist der Wert in der Variablen = 0 ist kein Springen erforderlich ist der wert grosser kannst du im Timer abfragen wie hoch der Sprung sei muss. Ist der Wert wieder null muss nichts berechnet werden.

...hoffe mal das war verständlich :grübel:

Nikolas 1. Mär 2006 14:58

Re: Mit Timer images verschieben
 
Kann es sein, dass du einfach nur vergisst, hoch wieder auf 10 zu setzen?


Kannst du den Text wirklich so lesen? Begins und Ends, die zusammengehören, sollten auch untereinander stehen:
Delphi-Quellcode:
if hoch > -10 then
 begin
  hoch := hoch - 1;
  image2.Top := image2.Top - hoch;
  image3.Top := image3.Top - hoch;
  image4.Top := image4.Top - hoch;
  image6.Top := image6.Top - hoch;
 end
else
 if hoch < -10 then
  begin
   hoch := hoch + 1;
   image2.Top := image2.Top - hoch;
   image3.Top := image3.Top - hoch;
   image4.Top := image4.Top - hoch;
   image6.Top := image6.Top - hoch;
   timer2.enabled := false;
  end ;

Skullschildi 1. Mär 2006 15:49

Re: Mit Timer images verschieben
 
ich kann des schon erkennen. und ich hab des schon probiert mit if hoch = 10 then . der wert hoch wird ja irgendwann wieder 10


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:39 Uhr.

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