AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Schussfrequenz

Ein Thema von chaoslion · begonnen am 27. Mai 2006 · letzter Beitrag vom 27. Mai 2006
Antwort Antwort
chaoslion

Registriert seit: 1. Mär 2006
52 Beiträge
 
#1

Schussfrequenz

  Alt 27. Mai 2006, 12:05
Hallo

Hab mal ne Frage bzgl. Timing. Nehmen wir mal an ich hab eine Waffe, welche eine
Animation hat. Nun gibt es 2 Wege wie man eine geregelte Schusssequenz erzeugen kann
1.
Man hat eine Variable die, wenn man die Feuertaste drückt in der Spielschleife hochgezählt
wird bis ein bestimmter Wert erreicht ist. Dann ruft man die Schussprozedur auf.
2.
Wie angesprochen hab ich eine Animation. Ich Frage nun wenn ich die Feuertaste drücke
ab, ob die Animation läuft, wenn nicht dann schieße ansonsten mache nichts.
Die Schussfrequenz hängt also von der Länge der Schussanimation ab

Meine Frage: Gibt es nicht eine andere Möglichkeit, eine genauere und per Quellcode
steuerbare Frequenz zu erzeugen?
  Mit Zitat antworten Zitat
Ratte

Registriert seit: 12. Dez 2003
Ort: Erfurt
345 Beiträge
 
Delphi 2005 Personal
 
#2

Re: Schussfrequenz

  Alt 27. Mai 2006, 12:09
Schau dir mal Gettickcount an. Damit kannst du die Zeit messen. Musst hlat bei jedem Schuss eine variable setzen und bei jedem Tastendruck prüfen ob die Differenz groß genug ist für einen weiteren Schuss.
mfg,
Ratte
Schiffsratte der U.S.S. Delphipraxis, Laderaum 4538
BUSH:= TTerminator.create;
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.017 Beiträge
 
Delphi 12 Athens
 
#3

Re: Schussfrequenz

  Alt 27. Mai 2006, 12:14
Zitat von Ratte:
Musst hlat bei jedem Schuss eine variable setzen und bei jedem Tastendruck prüfen ob die Differenz groß genug ist für einen weiteren Schuss.
Delphi-Quellcode:
// beim Programmstart
X := GetTickCount; // X = LongWord


// beim Tastendruck
If GetTickCount - X >= 1000{1000ms=1s} Then Begin
  Schuß;
  X := GetTickCount;
End;

eine ander Möglichkeit wäre in Timer.
Delphi-Quellcode:
//Taste wird gedrückt (dafür gibt's ja entsprechende Events)
Schuß;
Timer.Enabled := True;


//Taste wurde losgelassen
Timer.Enabled := False;


//Timer-Event
Schuß;
Bei Letztrem könnte man dann och sowas ganz leicht realisieren, wie Schuß-langePause-Schuß-kleinePause-Schuß-kleinePause...
Delphi-Quellcode:
//Taste wird gedrückt (dafür gibt's ja entsprechende Events)
Schuß;
Timer.Interval := 1500;
Timer.Enabled := True;


//Taste wurde losgelassen
Timer.Enabled := False;


//Timer-Event
Schuß;
Timer.Interval := 500;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
chaoslion

Registriert seit: 1. Mär 2006
52 Beiträge
 
#4

Re: Schussfrequenz

  Alt 27. Mai 2006, 13:04
Hey Danke für die schnellen Antworten
Habs folgendermaßen probiert
Delphi-Quellcode:
var
  Form1: TForm1;
  x:longword;
  count:integer=0;

implementation

procedure TForm1.FormCreate(Sender: TObject);
begin
  x := GetTickCount;
end;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
   if GetTickCount - x >= 5000 Then
  begin
    listbox1.Items.Add('schuss '+inttostr(count));
    inc(count);
    X := GetTickCount;
  end;
end;
Aber immer wenn ich die Maus bewege, füllt er ohne Verzögerung die Listbox.. woran liegt das?
  Mit Zitat antworten Zitat
Flare

Registriert seit: 26. Jan 2006
Ort: Leipzig
529 Beiträge
 
Delphi 7 Professional
 
#5

Re: Schussfrequenz

  Alt 27. Mai 2006, 13:19
Weil der für X warscheinlich den X-Wert der Maus nimmt, schlechte Vairablenüberlappung ^^
Ich wundere mich eher, warum der Compiler nicht gemeckert hat.
Und die Windows-Zeit in ms ist warscheinlich immer größer als 1024+5000 ...
Das wäre meine Idee.
Nimm einfach einen anderen Variablennamen.


Flare
Willy Scheibel
  Mit Zitat antworten Zitat
chaoslion

Registriert seit: 1. Mär 2006
52 Beiträge
 
#6

Re: Schussfrequenz

  Alt 27. Mai 2006, 13:27
Oh mein Gott.. Schande über mein Haupt, habs echt übersehen, es lag natürlich an dem x..
Es funktioniert aber so perfekt!! danke euch
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 02:49 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