Compteur de voiture : cadran avec aiguilles très simple

Description

Suite à une question posée sur cppfrance, j'ai fait un compteur de voiture qui affiche la vitesse, en visual basic bien sur ;-)
Le compteur est très paramêtrable:
- La vitesse
- La vitesse maximale du compteur
- L'angle de décalage de départ de l'aiguille par rapport à l'axe vertical
- La taille de l'aiguille
- La position du centre
Tout ça dans une simple picturebox, le calcul est automatique vous avez simplement à donner la vitesse...
C'est très simple et très commenté, destiné surtout aux débutants qui veulent mettre ça dans leurs jeux sans se casser la tête, donc pas la peine de critiquer (je parle pour les experts qui passe dans les codes "débutants" ;-)

Source / Exemple :


'  Une form un timer et une picturebox nommée "Pic"

' MadMatt

' La vitesse
Public Vitesse As Long

Private Sub Timer1_Timer()
    ' Les variables que l'ont peut regler :
    'CentreX , CentreY
    'La Vitesse bien sur
    'L'angle de décalage de départ
    'La vitesse max du cadran
    'La taille de l'aiguille

    ' On augmente la vitesse à chaque fois
    Vitesse = Vitesse + 3
    ' Les coordonées du centre
    Dim CentreX, CentreY As Long
    ' L'angle de l'aiguille
    Dim Angle As Single
    Dim Taille_Aiguille As Long
    ' L'angle de décalage de l'aiguille à vitesse 0 par rapport à la verticale
    Dim Angle_Decalage As Long
    Angle_Decalage = 20
    ' La vitesse maximale
    Dim Vmax As Long
    Vmax = 160
    ' La taille de l'aiguille
    Taille_Aiguille = 70
    ' Centre le point de centre du cadran
    CentreX = Pic.ScaleWidth / 2
    CentreY = Pic.ScaleHeight / 2
    ' Converti la vitesse en angle
    ' (on ne prend pas 360° mais 360° - l'angle de décalage de départ * 2 (le meme de chaque coté de l'axe vertical))
    Angle = ((360 - Angle_Decalage * 2) / Vmax) * Vitesse
    ' Positionne l'angle de départ de l'aiguille sur le cadran
    ' (90 pour que l'aiguille soit à la verticale, 20 est l'angle de décalage pour faire + vrai mais on peut la modifier)
    Angle = Angle + 90 + Angle_Decalage
    If Angle > 360 + 90 - Angle_Decalage Then Angle = 360 + 90 - Angle_Decalage
    ' Convertit l'angle en radian (à la place des degrés)
    Angle = 3.1415926 / 180 * Angle
    ' Efface le cadran
    Pic.Cls
    ' Dessine l'aiguille
    Pic.Line (CentreX, CentreY)-(CentreX + Cos(Angle) * Taille_Aiguille, CentreY + Sin(Angle) * Taille_Aiguille)
    ' Affiche la vitesse au dernière coordonées utilisées (c'est beau ça suit l'aiguille)
    Pic.Print Vitesse
End Sub

Conclusion :


Y'a aussi le zip

Je suis ouvert aux suggestions, critiques et notes... ;-)

@ +
MadMatt

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.