AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Timer einmalig sofort auslösen.

Ein Thema von xDIMAx · begonnen am 1. Aug 2012 · letzter Beitrag vom 2. Aug 2012
 
xDIMAx

Registriert seit: 4. Feb 2012
5 Beiträge
 
#1

Timer einmalig sofort auslösen.

  Alt 1. Aug 2012, 19:55
Delphi-Version: 7
Guten Tag, ich würde gerne, wie im Titel beschrieben, einen Timer einmalig sofort auslösen und dann wieder in den Normalzustand versetzen, ohne, dass es zu Dopplungen oder Ähnlichem kommt.

Um diesen Teil des Programms zu erklären:
Man hat einen Shape, der per Timer zufällig versetzt wird. Innerhalb des Intervalls muss der Shape berührt werden, damit "das Spiel" nicht vorbei ist. Wenn man sich verklickt endet das Spiel ohne, dass man den Shape noch klicken kann. Ich will nun verhindern, dass nachdem man entweder erfolgreich war, oder Game Over ist, direkt der nächste Schritt folgt. Also die Versetzung des Shapes, wenn man den Shape geklickt hat, oder der Punktescreen, wenn man verliert, weil entweder der Intervall abegelaufen ist und man nichts geklickt hat, oder sich verklickt hat.


Delphi-Quellcode:
procedure TForm1.FormClick(Sender: TObject);
begin
  H:=1; //Zufällige Variable, um dem Timer anzuzeigen, ob die Form angeklickt wurde.
  Timer1.Interval:=1;
end;

procedure TForm1.Shape1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  G:=0; //Zufällige Variable, um dem Timer anzuzeigen, ob der Shape angeklickt wurde.
  Timer1.Interval:=1;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Form1.Timer1.Interval:=TI; //TI ist der ursprüngliche Timerintervall. //////////XXXXX//////////
  if (G=0) and (H=0) then
    begin //Soll passieren, wenn der Shape innerhalb des Intervalls angeklickt wurde.
      G:=1; //G:=1; Sorgt dafür, dass man den Shape anklicken muss, um den Then-Befehl auszuführen.
      H:=0;
      Shape1.Left:=trunc(random*(Form1.Width-64))+16;
      Shape1.Top:=trunc(random*(Form1.Height-64))+64;
    end
  else
    begin
      Button1Click(Self); //Soll passieren, wenn entweder die Form oder gar nichts innerhalb des Intervalls angeklickt wurde.
    end;
end;
Das Problem ist nun, dass wenn ich den Timerintervall zurücksetzte (siehe Quellcode://///XXXXX/////), der ganze Then-Befehl nicht ausgeführt wird, wodurch der Ablauf des Intervalls keine Auswirkung mehr hat und man nur weiterkommt, indem man richtig klickt oder sich verklickt.
Also im Grunde funktioniert das Verlieren, durch Ablauf der Zeit nicht mehr.
Ich hoffe mein Problem irgendwie kenntlich machen oder mich viel zu wiederholen, hehe.


P.S. Für zukünftige Threads: Kann man den Titel des Threads noch verändern? Wenn ich ihn mir jetzt nochmal durchlese, kommt er mir ein bisschen komisch vor.

Geändert von xDIMAx ( 1. Aug 2012 um 20:00 Uhr)
  Mit Zitat antworten Zitat
 


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 19:51 Uhr.
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