Einzelnen Beitrag anzeigen

Lefko

Registriert seit: 31. Jul 2003
359 Beiträge
 
Delphi 6 Enterprise
 
#1

Ein ganz merkwürdiges Problem... hab nicht mal den Ursprung!

  Alt 11. Nov 2003, 17:29
Hallo Freunde ,

ich hab ein kleines Programm geschrieben (Snake um genau zu sein ) mit dem ich ein Problem ungeahnter Herkunft habe:

Die App wird gestartet, und es läuft ein Timer, der jede sekunde den integer in einem label um 1 vermindert (also ein zähler) so: 3 , 2 , 1 LOS
wenn der Spieler verloren hat, wird das Programm beendet und per ShellExecute erneut gestartet.

HÄUFIG kommt es nun aber vor, dass das Label folgende Reihenfolge zeigt: 3, 1, -1, -2,-3,...
und dadurch dann das Programm durcheinander kommt, timer falsch gestartet werden und tasten nicht reagieren!

HÄÄÄ??

ich hab dann festgestellt, dass dieses Mysterium seltener auftritt, wenn ich den Speedbutton zum starten (DANN läuft der zähler) nicht per Enter sondern mit der Maus betätige.... warum auch immer...

Hat irgendjemand IRGENDEINE Idee, woher so n quatsch kommen könnte?

hier ist der text, der ausgeführt wird:

Delphi-Quellcode:

procedure TForm1.FormCreate(Sender: TObject);
begin
StartZaehler := 3;

//Feld anpassen
Form1.width := round(Form1.width div 10) * 10;
Form1.height := round(Form1.height div 10) * 10;
Image1.width := Form1.width;
Image1.Height := Form1.Height - 40;
Image1.Left := 0;
Image1.Top := 40;

//StartFeld generieren
CreateStartArray;
CreateStartSnake;
DrawArray(Spielfeld, Image1, true{schlange}, true{frucht}, true{wand}, true{nix});
ZeichneAugen;
end;

// und der Timer, der den StartZaehler vermindert:

procedure TForm1.Timer2Timer(Sender: TObject);
begin
Speedbutton1.visible := true;
Speedbutton1.caption := inttostr(StartZaehler);
dec(StartZaehler);

if StartZaehler = -1 then begin
                          image1.Canvas.pen.color := SchlangenFarbe;
                          image1.Canvas.brush.Color := SchlangenFarbe;
                          speedbutton1.visible := false;
                          timer1.enabled := true;
                          timer2.Enabled := false;
                          SetCursorPos(Form1.Left + Form1.width + 10, Form1.Top);
                          CreateFruit;
                          end;
timer2.Interval := 1000;
end;
MfG Lefko.
Johannes
-=[Nennst du meinen Namen, bin ich schon nicht mehr da]=-
  Mit Zitat antworten Zitat