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

  FORUM HardWare.fr
  Programmation

  [Delphi 6] comment chronométrer une boucle ? + pb compteur (résolu)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Delphi 6] comment chronométrer une boucle ? + pb compteur (résolu)

n°87634
Jubijub
Parce que je le VD bien
Posté le 09-01-2002 à 23:06:19  profilanswer
 

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]


---------------
Jubi Photos : Flickr - 500px
mood
Publicité
Posté le 09-01-2002 à 23:06:19  profilanswer
 

n°87712
antp
Super Administrateur
Champion des excuses bidons
Posté le 10-01-2002 à 09:38:52  profilanswer
 

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]


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°87718
Bruce
Music 4 your ears!
Posté le 10-01-2002 à 09:54:49  profilanswer
 

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...


---------------
A+++ Bruce - http://www.bheller.com
n°87728
antp
Super Administrateur
Champion des excuses bidons
Posté le 10-01-2002 à 10:23:37  profilanswer
 

ha ouais, c'est vrai que c'est encore plus simple...


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°88366
Jubijub
Parce que je le VD bien
Posté le 11-01-2002 à 14:30:10  profilanswer
 

merci à tous les deux...
 :jap:


---------------
Jubi Photos : Flickr - 500px

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  [Delphi 6] comment chronométrer une boucle ? + pb compteur (résolu)

 

Sujets relatifs
[Delphi] Changer la langue que un TTextToSpeech parle[Delphi] Probleme avec les DELETE en sql ... :(
[Delphi] Identifier le déclencheur d'une fonction :)[Delphi] Comment créer une DLL ?
[DELPHI] Créer un racourci dans le menu démarer depuis un programme[DELPHI] récupérer la liste des programmes en cours d'execution
[C++] Lire un .mid en boucle (Command MCI)[delphi] On peut activer le drag and drop sur un DBgrid ?
[Delphi] Couleur: memobox et label[Delphi/SQL] Big probleme de comparaisons de date en SQL-> access :(
Plus de sujets relatifs à : [Delphi 6] comment chronométrer une boucle ? + pb compteur (résolu)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR