Cube timor

Description

Cette source permet de réaliser vos average au Rubik's Cube© ou tout simplement peut vous servir de chronomètre !

J'ai crée une classe clsTimer qui permet d'avoir un chronomètre trés précis et trés rapide sur TOUT type de machine ( il fonctionne pareil sur mon AMD Ahtlon XP 1800, 512 DDR et sur mon vieux portable : Intel 133 Mhz, 32 Ram ...)

J'utilise un Timer de Microsoft© et un label de Renfield ( pour éviter les scintillements ) afin d'afficher le chronomètre !

Source / Exemple :


' Ci-joint, le code source de la classe clsTimer :
' Pour le reste, c'est dans le .Zip !!

Option Explicit

' Fonction permettant de récupérer le Temps courant de l'horloge :
Private Declare Function QueryPerformanceCounter Lib "kernel32" (lpPerformanceCount As Currency) As Long
' Fonction permettant de récupérer la Fréquence de "Tics" de l'ordinateur :
Private Declare Function QueryPerformanceFrequency Lib "kernel32" (lpPerformanceCount As Currency) As Long

' Fréquence des "tic" sur cet ordinateur !
Private m_FrequenceTic As Currency
' Temps de l'horloge lorsque le Timer démarre
Private m_TempsAuDepart As Currency
' Permet de savoir si le Timer est en marche ou pas
Private m_ONOFF As Boolean
' Combien de temps s'est écoulé depuis le départ du Timer
Private m_TempsPasse As Currency
' Permet d'ajuster le temps lorsque l'on arrete le Timer
Private m_TempsFinal As Currency

' Sub qui se lance lorsque l'on instancie la classe avec le mot clé : New
Private Sub Class_Initialize()
    MiseAZero
End Sub

' Permet de remettre à zéro le Timer :
Public Sub MiseAZero()
    ' On remet tous à 0 :
    m_TempsAuDepart = 0
    m_TempsPasse = 0
    m_TempsFinal = 0
    ' On détecte la fréquence des "Tics" sur l'ordinateur :
    QueryPerformanceFrequency m_FrequenceTic
    ' On indique que le Timer n'est pas démarré !
    m_ONOFF = False
End Sub

' Permet de démarrer le Timer :
Public Sub Demarrer()
    ' Si le Timer n'est pas encore démarré :
    If Not m_ONOFF Then
        ' Récupere le temps de l'horloge et le sauvegarde dans m_TempsAuDepart !
        QueryPerformanceCounter m_TempsAuDepart
        ' On met à 0 :
        m_TempsFinal = 0
        ' On indique que le Timer est en marche ( ON ) :
        m_ONOFF = True
    End If
End Sub

' Permet de savoir combien de temps s'est écoulé depuis le démarrage du Timer :
Public Function Temps() As Double
    ' On récupère le temps :
    If m_ONOFF Then QueryPerformanceCounter m_TempsPasse
    ' On le renvoie selon la formule traditionelle ;)
    Temps = (m_TempsPasse - m_TempsAuDepart) / m_FrequenceTic
End Function

' Permet d'arreter le Timer et de mettre à jour une dernière fois le Timer !
Public Function Arreter() As Double
    ' On récupère le temps :
    If m_ONOFF Then QueryPerformanceCounter m_TempsFinal
    ' On le renvoie selon la formule traditionelle ;)
    Arreter = (m_TempsFinal - m_TempsAuDepart) / m_FrequenceTic
    ' On indique que le Timer est OFF !
    m_ONOFF = False
End Function

' Retourne l'état du Timer :
Public Function IsRunning() As Boolean
    IsRunning = m_ONOFF
End Function

' Ne sert à rien mais bon...
Private Sub Class_Terminate()
    m_ONOFF = False
End Sub

Conclusion :


Il me reste à faire quelques trucs :
- La gestion des Temps ( Average, Meilleur Temps, Mauvais Temps ... )
- La sauvegarde des Averages....

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.