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