AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi DelphiX - Bewegen ohne zu schlafen^^
Thema durchsuchen
Ansicht
Themen-Optionen

DelphiX - Bewegen ohne zu schlafen^^

Ein Thema von Neutral General · begonnen am 9. Sep 2005 · letzter Beitrag vom 10. Sep 2005
Antwort Antwort
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

DelphiX - Bewegen ohne zu schlafen^^

  Alt 9. Sep 2005, 17:40
Also ich habe ein Procedure geschrieben mit der mein Spieler an einen Ort geht den man mit 2 Koordinaten bestimmt :

Delphi-Quellcode:
procedure TSpieler.MoveTo(x1,y1 : Single);
begin
 while (X <> x1) or (y <> y1) do begin
  if Y < Y1 then Spieler.Y := Spieler.Y + 0.5;
  if Y > Y1 then Spieler.Y := Spieler.Y - 0.5;
  if X < x1 then Spieler.X := Spieler.X + 0.5;
  if X > x1 then Spieler.X := Spieler.X - 0.5;
  Form1.DXDraw1.Flip;
  Form1.DXSpriteEngine1.Draw;
 end;
end;
Das Problem ist das in der Zeit wo der SPieler läuft das Spiel wie bei sleep ansonsten nicht mehr reagiert. Und "Application.ProcessMessages;" bringt auch keine Hilfe

Ok die Procedure selber ist wohl auch nicht das beste aber der Spieler kommt am Ziel an und das reicht mir erst mal ^^ Nur das eingeschlafen sein nervt mich..
Michael
  Mit Zitat antworten Zitat
Phistev
(Gast)

n/a Beiträge
 
#2

Re: DelphiX - Bewegen ohne zu schlafen^^

  Alt 9. Sep 2005, 17:42
Such mal nach Hier im Forum suchenDelay

/edit: Hier ist die Funktion
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

Re: DelphiX - Bewegen ohne zu schlafen^^

  Alt 9. Sep 2005, 17:43
Ich benutze ja gar kein sleep, da bringt mir Delay auch nix -.-
Das kommt ja von der while - Schleife...
Michael
  Mit Zitat antworten Zitat
Phistev
(Gast)

n/a Beiträge
 
#4

Re: DelphiX - Bewegen ohne zu schlafen^^

  Alt 9. Sep 2005, 17:50
Ein Delay(10) könnte schon was bringen...
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

Re: DelphiX - Bewegen ohne zu schlafen^^

  Alt 9. Sep 2005, 17:53
Könnte meiner Meinung nicht aber auch wenn es was bringen könnte, es bringt nix
Michael
  Mit Zitat antworten Zitat
Benutzerbild von devnull
devnull

Registriert seit: 5. Okt 2003
362 Beiträge
 
Delphi 7 Personal
 
#6

Re: DelphiX - Bewegen ohne zu schlafen^^

  Alt 9. Sep 2005, 17:58
Kann man sowas nicht einfach mit Timern lösen, die laufen doch auch parallel??
Was benutzt du eigentlich als Zeichenfläche? Delphix, ...

Er nimmt natürlich DelphiX
-- Never change a running system --
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#7

Re: DelphiX - Bewegen ohne zu schlafen^^

  Alt 9. Sep 2005, 18:00
du solltest Bei Google suchentimebased movement einbauen.

Delphi-Quellcode:
function TPlayer.GetPosition():TVector3d;
var strecke:single;
begin
if self.fMoving then
 begin
  strecke:=speed / (gettickcount - fstarttime);
  {...} //hier die neue position berechnen
 end;
end;
@devnull: das hier is aber eleganter
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#8

Re: DelphiX - Bewegen ohne zu schlafen^^

  Alt 10. Sep 2005, 11:12
Zitat von DGL-luke:
du solltest Bei Google suchentimebased movement einbauen.

Delphi-Quellcode:
function TPlayer.GetPosition():TVector3d;
var strecke:single;
begin
if self.fMoving then
 begin
  strecke:=speed / (gettickcount - fstarttime);
  {...} //hier die neue position berechnen
 end;
end;
@devnull: das hier is aber eleganter
Also das kapier ich grad gar nicht ^^
Aber das da oben war ja nur eine von meinen 2 Versuchen.

Delphi-Quellcode:
procedure TSpieler.Move2(x1,y1 : Single);
var Strecke : Double;
    xWeg,yWeg, xDiff,yDiff, Schritte,Steigung : Double;
    var i : Integer;
begin
  xWeg := x1 -x;
  yWeg := y1 -y;
  Strecke := Sqrt(Sqr(xWeg)+Sqr(yWeg));
  Schritte := Round(Strecke / 2);
  if Schritte = 0 then Schritte := 20;
  xDiff := xWeg / Schritte;
  yDiff := yWeg / Schritte;
  for i:= 1 to Round(Schritte) do begin
   x := x + xDiff;
   y := y + yDiff;
  end;
end;
Hier ist nur das Problem das die Bewegung viiiel zu schnell geht. Der Spieler ist sofort da. Also als so als wurde ich einfach
Delphi-Quellcode:
Spieler.x := x1;
Spieler.y := y1;
schreiben ...
Michael
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#9

Re: DelphiX - Bewegen ohne zu schlafen^^

  Alt 10. Sep 2005, 11:36
Du musst nur drei Sachen definieren: Geschwindigkeit, Wegstrecke und Starzeit. Dann kannst du zu jederzeit berechnen, wo sich dein Objekt gerade befindet.
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#10

Re: DelphiX - Bewegen ohne zu schlafen^^

  Alt 10. Sep 2005, 11:50
Dein Link ist glaube ich ma ziemlich gut, ich glaube damit befasse ich mich mal näher... das könnte meine Lösung sein..

Nur ne Frage :

VergangeneZeit:= (Zeit1-Zeit0)/Frequenz; Was ist Zeit1 und Zeit0 ? bzw wann werden diese Zeiten besimmt ?

EDIT2 : Ich hab das Prinzip kapiert aber ich kanns nicht umsetzten -.-
Michael
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:45 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