tequilasurlaterre
Messages postés34Date d'inscriptionvendredi 13 mai 2005StatutMembreDernière intervention16 mars 2006
-
14 mars 2006 à 19:14
tequilasurlaterre
Messages postés34Date d'inscriptionvendredi 13 mai 2005StatutMembreDernière intervention16 mars 2006
-
16 mars 2006 à 18:24
bonjours a tous
Voila ! je cherche a faire un crono utiliser par les boxeurs.je m'explique..
il faut deux chauses
1) il faut que se crono est deux tempos ; Au
declanchement de celui-ci, il parte pour (exemple 3 minutes) temps du
combat et a la fin de celui-ci un son est emis et le second tempos est
mis en route automatiquement sans interuption pour une durer de 1
minute.' temps du repos. et cela indefiniment,tant que l'on ne le stop
pas.
2 ) j'aimerais aussi, avant de lancer le crono pouvoir modifier les deux temps,
ainsi je peux changer les temps de combat et de repos.
Et la c'est pas tres simple pour moi alors si vous pouvez me donnee un pti coup de mains,
f0xi
Messages postés4205Date d'inscriptionsamedi 16 octobre 2004StatutModérateurDernière intervention12 mars 202235 15 mars 2006 à 05:39
hola jlen!
mmm laisser des TTimer avec de si grand intervals c'est pas top top je trouve.
surtout qu'a aucun moment on ne sais réellement ou on en est.
uses mmSystem;
var
SNDFILE : string = 'c:\windows\media\ding.wav';
TimeRef : TTime; {le temps de reference ou l'on a cliquer sur le boutton}
nbRnd : integer = 0; {compteur des rounds}
nbRep : integer = 0; {compteur des repos}
TmRnd : array[1..2] of word = (0,10); {temps des rounds : min,sec}
TmRep : array[1..2] of word = (0,10); {temps des repos : min,sec}
Mode : boolean false; {false round, true = repos}
procedure PlayWave;
begin
sndPlaySound(Pchar(SNDFILE),0);
end;
function TimeToString : string;
begin
{formatte le temps en une chaine lisible : 00:00}
DateTimeToString(result,'nn:ss',Time-TimeRef);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
{si le timer n'est pas a true (false par defaut!)}
if not Timer1.Enabled then begin
Mode := False; {on commence par un round}
nbRnd := 1; {c'est le premier round}
nbRep := 0; {il n'y a pas encore eu de repos}
Timer1.Interval := 100; {on regle le timer a 100ms}
TimeRef := Time; {on initialise notre temps reference}
Timer1.Enabled := true; {on demarre le timer}
PlayWave;
end else begin
Timer1.Enabled := false;{on arrete le timer}
end;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
{si on est en mode Round et que le round est finis (Temps round + 100ms)}
if (not mode) and ((Time-TimeRef) >= EncodeTime(0,TmRnd[1],TmRnd[2],100)) then begin
mode := true; {on passe en mode repos}
TimeRef := Time; {on réinitialise le temps de reference}
Inc(nbRep); {on incremente les repos}
PlayWave;
end else
{si on est en mode repos et que le repos est finis (temps repos + 100ms)}
if (mode) and ((Time-TimeRef) >= EncodeTime(0,TmRep[1],TmRep[2],100)) then begin
mode := false; {on passe en mode round}
TimeRef := Time; {on réinitialise le temps de reference}
Inc(nbRnd); {on incremente les rounds}
PlayWave;
end;
{si on est en mode round}
if not mode then begin
{on affiche les infos du round}
Label1.Caption := TimeToString;
Label5.Caption := format('[%d]',[nbRnd]);
end else begin
{sinon on affiche les infos du repos}
<hr size="2" width="100%">La theorie c'est quand on sait tout, mais que rien ne fonctionne.
La pratique c'est quand tout fonctionne, mais que personne ne sait pourquoi.
<hr>
tequilasurlaterre
Messages postés34Date d'inscriptionvendredi 13 mai 2005StatutMembreDernière intervention16 mars 2006 16 mars 2006 à 18:15
bonjours a vous !! et merci pour avoir repondu aussi vite.
serait-il possible d'avoir votre code source ou quelque chose qui si
approche , car c'est pas que je veux pas reflechir mais je n'arrive pas
a mettre en pratique , ce qui est ecrit.