Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
5558 connectés 

 


Dernière réponse
Sujet : [Delphi 6] comment chronométrer une boucle ? + pb compteur (résolu)
Jubijub merci à tous les deux...
 :jap:

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
Jubijub merci à tous les deux...
 :jap:
antp ha ouais, c'est vrai que c'est encore plus simple...
Bruce Ou encore une autre solution qui marche dans divers languages (Windows powa :)) :
 

Code :
  1. uses
  2.   Windows,...;
  3. var
  4. time: DWORD;
  5. ...
  6. begin
  7. ...
  8. time := GetTickCount;
  9. ... // ici tu fais tout ce qui doit être chronométré  
  10. time := GetTickCount-time; // fin du compteur  
  11. ...


 
GetTickCount te renvois des millisecondes...

antp alors:
 

Code :
  1. var
  2.   before: TDateTime;
  3.   createdTime: int64;
  4.   ...
  5. begin
  6.   ...
  7.   before := now; // début du compteur
  8.   ... // ici tu fais tout ce qui doit être chronométré
  9.   createdTime := MilliSecondsBetween(now,before); // fin du compteur
  10.   ...


 
la variable createdTime contient le nombre de millisecondes écoulées
si nécessaire tu peux mettre les deux variables en global.
l'avantage ici c'est qu'y a aucun timer, donc aucune charge supplémentaire pour le système.

 

[edtdd]--Message édité par antp--[/edtdd]

Jubijub toujours dans mon prog pourri pour apprendre, je fais une boucle qui demande le nombre secret (on ne rit pas :ange:  )...
 
g déjà mis un compteur (qui foire un peu, si on quitte dès la première question y compte ca comme trouvé en 2 essais, mais bon :o )...
 
pour pouvoir faire un calcul de score, j'aurais besoin du temps écoulé entre le moment où le joueur rentre dans le boucle et celui où il en sort, pour pouvoir faire un calcul du score genre nb de 1/(coup * temps) *1000 (pour que plus coup*temps augmente, plus le score diminue :D)
 
moin main.pas donne ca :  
 

Code :
  1. unit Main;
  2. interface
  3. uses
  4.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  5.   Dialogs, StdCtrls,ExtCtrls, CPU;
  6. type
  7.   TForm1 = class(TForm)
  8.     Button1: TButton;
  9.     Button3: TButton;
  10.     procedure Button1Click(Sender: TObject);
  11.     procedure Button3Click(Sender: TObject);
  12.   private
  13.     { Private declarations }
  14.   public
  15.     { Public declarations }
  16.   end;
  17. var
  18.     Form1: TForm1;
  19.     LimiteTXT, UserEntry, Disp, textfin : string;
  20.     CpuQuery, Compteur : shortint;
  21.     LimiteNum, UserEntryNum, Nb : integer;
  22.     COntinuer : boolean;
  23. implementation
  24. {$R *.dfm}
  25. procedure TForm1.Button1Click(Sender: TObject);
  26.     begin
  27.     LimiteNum := 1 ;
  28.     CpuQuery :=0 ;
  29.     LimiteTXT := '0' ;
  30.     repeat
  31.     InputQuery('Donnez une limite comprise entre 100 et 300', 'Valeur', LimiteTXT);
  32.     LimiteNum := StrToInt(LimiteTXT);
  33.         if LimiteNum < 100 then
  34.         ShowMessage(LimiteTXT + ' est trop petit : entrez un nombre plus grand')
  35.         else if LimiteNum > 300 then
  36.        ShowMessage(LimiteTXT + ' est trop grand : entrez un nombre plus petit');
  37.     CpuQuery := CpuQuery + 1 ;
  38.         if CpuQuery > 3 then
  39.         ShowMessage ('Il vous a fallu ' + IntToStr(CpuQuery) + ' essais pour y arriver');
  40.     until (LimiteNum >= 100) AND (LimiteNum <= 300);
  41.     end;
  42. LE TIMER DEVRAIT COMMENCER ICI
  43. procedure TForm1.Button3Click(Sender: TObject);
  44.     begin
  45.     UserEntry :='0';
  46.     Compteur := 1;
  47.     Nb := Generation(LimiteNum);
  48.     Continuer := True;
  49.         Repeat
  50.         Continuer:=InputQuery('Entrez un nombre', 'Essai n° '+ inttostr(Compteur), UserEntry);
  51.         UserEntryNum :=strToInt(UserEntry);
  52.         Disp := test(UserEntryNum,Nb);
  53.         Compteur := Compteur +1;
  54.         if (Disp = 'Vous avez entré un nombre trop petit') XOR (Disp = 'Vous avez entré un nombre trop grand') then
  55.         ShowMessage(Disp)
  56.         else
  57.         ShowMessage(Disp + ' en ' + IntToStr(Compteur) + ' coups');
  58.         until (UserEntryNum = Nb) OR (Continuer = False) ici faut que je trouve comment tester continuer = false pour que d'une ca sorte de la boucle (c le cas), mais que ca foute le compteur au bon nombre de coups (0 si on quitte de suite, etc...) et que ca affiche le nombre secret qu'il fallait découvrir
  59.     end;

 

[edtdd]--Message édité par Jubijub--[/edtdd]


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)