Faire un double chronomètre

tequilasurlaterre Messages postés 34 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 16 mars 2006 - 14 mars 2006 à 19:14
tequilasurlaterre Messages postés 34 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 16 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,

merci d'avance a tous

Teq@+

5 réponses

jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
14 mars 2006 à 19:54
salut, utilises un timer

procedure TForm1.DepartClick(Sender: TObject);

begin

with timer1 do

begin

Interval:=180000;//on initialise 3mn

Enabled:=true;// on lance le timer

end;

end;



procedure TForm1.Timer1Timer(Sender: TObject);

begin

with timer1 do

begin

if tag=0 then// si 0 fin du premier temps

begin


interval:=60000 ;// on met 1mn dans le timer

tag:=1;// on positonne le tag
pour savoir si l'on est dans le premier pu le second
temps

end else

begin

interval:=1800000 ;// on met 3mn dans le timer

tag:=0;// on réinitielise le tag

beep;

end;

end;

end;

rocedure TForm1.ArretClick(Sender: TObject);

begin

timer1.Enabled:=false

tag:=0;// on réinitielise le tag

MessageDlg('terminer', mtError , [mbOk], 0);

end;



@+

jlen
0
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
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}

Label2.Caption := TimeToString;
Label6.Caption := format('[%d]',[nbRep]);
end;
end;

<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>
0
tequilasurlaterre Messages postés 34 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 16 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.

je debute,

et c'est un peux dure a comprendre pour moi

voila merci encore pour vos reponces

@+ teq
0
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
16 mars 2006 à 18:21
salut,

le code source tu l'a

sur une forme tu mets un timer et 2 boutons et tu fais un copié collé de ce qu'on t'as donné



@+

jlen
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
tequilasurlaterre Messages postés 34 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 16 mars 2006
16 mars 2006 à 18:24
Merci Merci !! a toi jlen



je vais essayer de ce pas!!



@+ teq
0
Rejoignez-nous