Registriert seit: 26. Mai 2004
3.159 Beiträge
|
AW: Tischtennis Problem beim 2. Mal
13. Jul 2010, 00:39
Wo setzt du denn die Position von Position zurück auf 0? ( scrbCountdown.Position)
Noch ein paar Tipps:
Delphi-Quellcode:
if shBall.Left < shRacketL.Left then //Rückschlag von l. Wand
begin
shBall.Brush.Color:=clred;
timBall.Enabled:=false;
bGameOver:=true;
end;
// Mach doch hier ein ELSE-IF, denn du musst hier ja nicht mehr
// wenn weiter oben schon das if true ist
if shBall.Left > shRacketR.Left then //Rückschlag von r. Wand
begin
shBall.Brush.Color:=clred;
timBall.Enabled:=false;
bGameOver:=true;
end;
Delphi-Quellcode:
// bitte nicht auf true testen. bGameOver ist doch schon
// ein Boolean, ergo brauchst du das nicht machen. Gründe hierfür
// findest du auch im Forum.
if bGameOver = true then
begin
lblCountdown.Visible:=True;
timCountdown.Enabled:=True;
end;
end;
Delphi-Quellcode:
{ ... }
// hier würde ich noch die Reihenfolge ändern
6: begin
// lblCountdown.Visible:=False;
// lblCountdown.Caption:='5 ...';
// timBall.Enabled:=True;
// timCountdown.Enabled:=False;
// bGameOver:=false;
// nach:
lblCountdown.Visible:=False;
lblCountdown.Caption:='5 ...';
bGameOver:=false;
timCountdown.Enabled:=False;
timBall.Enabled:=True;
// Warum? Weil so sichergestellt ist, dass nicht doch der
// Timer timBall feuert, obwohl nicht alle Variablen gesetzt
// sind. Ich weiß, sowas ist kleinlich und kann je nach Interval
// von timBall nicht eintreten, aber sicher ist sicher. In
// anderen Fällen kann sowas evtl. schief gehen.
end;
end;
end;
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
|