AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi 3 Timer für eine gleichmäßige Beschleunigung
Thema durchsuchen
Ansicht
Themen-Optionen

3 Timer für eine gleichmäßige Beschleunigung

Ein Thema von Flo.Hoe · begonnen am 2. Feb 2007 · letzter Beitrag vom 3. Feb 2007
Antwort Antwort
Flo.Hoe

Registriert seit: 28. Sep 2006
Ort: Berlin
73 Beiträge
 
Turbo C++
 
#1

3 Timer für eine gleichmäßige Beschleunigung

  Alt 2. Feb 2007, 15:59
Hi

Ich bin gerade dabei ein Program zu erstellen,
in dem eine Kugel vom Benutzer gleichmäßig beschleunigt werden kann.
Nach etlichen Stunden Tipparbeit habe ich es mal mit F9 versucht und.....
es ist mir überhaupt nicht möglich die Kugel zu beschleunigen/bewegen/steuern
Ich guck die ganze zeit wie blöd auf meien code und finde einfach nicht den Fehler /die Fehler!
Wäre echt cool wenn sich jemand findet, der mir ein bischen unter die Arme greift.
Ihr kennt das ja selber manchmal muss der Blickwinkel gewechselt werden.

ps:mein Gedanke:
Ich habe 2 Timer (VxTimer/VyTimer) mit denen die Geschwindigkeit der Kugel im Raum bestimmt wird.
Nach jedem Abschluss ihres veränderlichen Intervalls wird die Kugel jeweils um einen Pixel verschoben.
Ein Timer (a) ist für die gleichmäßige Änderung beider Geschwindigkeiten (also für die Beschleunigung) zuständig. Dabei greift mein Programm auf den nächsten bzw. vorherigen wert in dem array Vx zu.
Anschließend wird die Bewegungsrichtung bestimmt.
Angehängte Dateien
Dateityp: rar kugel_143.rar (9,8 KB, 19x aufgerufen)
Florian
  Mit Zitat antworten Zitat
Benutzerbild von juergen
juergen

Registriert seit: 10. Jan 2005
Ort: Bönen
1.164 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: 3 Timer für eine gleichmäßige Beschleunigung

  Alt 2. Feb 2007, 18:04
Hallo,
also bei mir geht es...
Aber eben seeehr langsam. Über die Großschreibtaste und mit "W", "A", "S" und "D" kann die Kugel "gesteuert" werden.
Du müsstest die Werte noch anpassen (z.B. den Wertbereich von [VX].
Weiterhin scheint das "reseten" nicht zu funktionieren. (wenn man die Taste wechselt)
Jürgen
Indes sie forschten, röntgten, filmten, funkten, entstand von selbst die köstlichste Erfindung: der Umweg als die kürzeste Verbindung zwischen zwei Punkten. (Erich Kästner)
  Mit Zitat antworten Zitat
Flo.Hoe

Registriert seit: 28. Sep 2006
Ort: Berlin
73 Beiträge
 
Turbo C++
 
#3

Re: 3 Timer für eine gleichmäßige Beschleunigung

  Alt 2. Feb 2007, 18:12
Der Ball müsste sich aber viel schneller bewegen
(dazu aber erst beschleunigen - bis auf 80 Pixel pro Sekunde).
Delphi-Quellcode:
 for j:=1to 40 do begin
    vx[j]:= 1000 div ((41-j)*2);
(j=1,vx[1] = 1000 div 80 = 12
Florian
  Mit Zitat antworten Zitat
Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: 3 Timer für eine gleichmäßige Beschleunigung

  Alt 2. Feb 2007, 19:55
Delphi-Quellcode:
begin
  for j:=1to 40 do begin
    vx[j]:= 1000 div ((41-j)*2);
  end; //VX[40]:=500;1. Mal 500
  VX[41]:=999999 ;
  for k:=42to 81 do begin
    vx[k]:= 1000 div ((k-41)*2);//versuch mal mit vx[k]:= 1000 div ((k-41)*2)+ 1
  end; //VX[42]:=500;//2. Mal 500
Delphi-Quellcode:
  if rechtsklick then begin
    for i := 81 downto 2 do begin
      if (vxTimer.Interval=vx[i]) and not abbruchderschleife then begin
        vxTimer.Interval:=vx[i-1];//hier mal einen Breakpoint setzen! Interval ist entweder 500 oder 999999, da 500 2 Mal im Array vorkommt einmal vor 999999 und einmal dahinter, daduch wird immer hin und her geschaltet
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  Mit Zitat antworten Zitat
Flo.Hoe

Registriert seit: 28. Sep 2006
Ort: Berlin
73 Beiträge
 
Turbo C++
 
#5

Re: 3 Timer für eine gleichmäßige Beschleunigung

  Alt 2. Feb 2007, 23:36
Also....

Ich hab's noch mal probiert:
Es ist doch bei dem Program unmöglich die gespiegelte Seite im Array wegzulassen.
Ich wüsste jedenfalls nicht wie. ?

warum sollte ich es mit ''K'' versuchen gibt es da einen grundlegenden Unterschied?

Und was für ein Breakpoint meinst du?
Florian
  Mit Zitat antworten Zitat
Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: 3 Timer für eine gleichmäßige Beschleunigung

  Alt 2. Feb 2007, 23:49
Ich habe vorgeschlagen bei der 2. Schleife 1 dazu zu addieren, dann wird aus 500 501.
vx[k]:= 1000 div ((k-41)*2)+ 1; Bei mir hatte sich dann jedenfalls die Geschwindigkeit geändert, zumindest wenn ich mehrmals D gedrückt hatte.
Sonst hat der Timer immer nur den Intervall 500 oder 999999.

Einen Breakpoint setzt man für den Debugger, damit kann man dann die Variablen auslesen. Ansonsten setze doch einfach mal eine Listbox zu Testzwecken auf die Form und fügst dann folgenden Code ein, damit kannst du dann den Timer Interval anzeigen lassen, wenn du die Taste D drückst. Listbox1.Enabled muss im OI auf false gesetzt werden, ansonsten wird onKeyDow der Form nicht ausgelöst.;
Delphi-Quellcode:
  if rechtsklick then begin
    for i := 81 downto 2 do begin
      if (vxTimer.Interval=vx[i]) and not abbruchderschleife then begin
        vxTimer.Interval:=vx[i-1];
        Listbox1.Items.Add(inttostr(vxTimer.Interval));//nur zur Demo
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  Mit Zitat antworten Zitat
blablab

Registriert seit: 3. Jan 2006
509 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: 3 Timer für eine gleichmäßige Beschleunigung

  Alt 3. Feb 2007, 08:16
Ist es nicht besser, wenn das Intervall des ersten Timers immer gleich bleibt und der zweite Timer die Geschwindigkeit (Pixel/Sekunde) erhöht? (Theoretisch reicht dir dann auch nur ein Timer).
Du musst den ersten Timer ja nur so einstellen, dass das menschliche Auge eine flüssige Bewegung wahrnimmt. Dann kannst du die Geschwindigkeit beliebig groß einstellen...
  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 09:25 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