Boite de vitesse

Soyez le premier à donner votre avis sur cette source.

Vue 28 725 fois - Téléchargée 999 fois

Description

il s'agit d'une simulation qui vous permet d'utiliser une boite de vitesse
j'ai pas vu de codes qui permettez de le faire sur le site
se mettre au commande d'une voiture, pouvoir passer les vitesse en mode manuel
avoir un vrai son de voiture dans un jeu de voiture finalement et qui correspond a la vitesse ou vous vous deplacez
ben c'est ce que cette classe de moins de 500 lignes (enfin je crois permet de faire)
et son utilisation est simple sauf si
vitesse.Gerer(); est quelque chose qui est penible a ecrire pour vous :-)

vous etes donc le conducteur du vehicule et vous avez le tableau de bord devant vous (tres rudimentaire vous verrez)
a gauche les tours par minute
a droite la vitesse
(il n'y a pas d'echelle pour ces deux valeurs)

pour accelerer fleche du haut
pour freiner fleche du bas

//--> en mode automatique
pour passer le rapport suivant fleche de droite
pour passer le rapport inferieur fleche de guauche


je veux signaler quelque chose qui pourra vous paraitre bizarre lorsque vous testerez ce programme
il s'agit de retrograder lorsque vous accelerer
c'est possible de le faire sur une voiture standard enfin en tout cas c'est possible dans Gran Tourismo
donc a ce propos:
vous definissez dans l'appel au constructeur une valeur seuil (en tr/min) que ne doit pas depasser le moteur pour
un rapport donné.
si vous etes en troisieme et que vous etes au dessus de la valeur seuil correspondant au second rapport
vous ne pourez pas retrograder
ce qui est logique dans le cas d'une voiture reele. on risquerait de casser le moteur
ca n'est pas possible dans mon programme car j'utilise une exponentielle qui tends vers cette valeur seuil
elle ne peut donc pas etre au dessus
bonne lecture

Source / Exemple :


/*
aout 2004

  • /
//pour l'exponentielle #include <math.h> #ifndef VITESSE_H #define VITESSE_H enum mode_conduite {AUTOMATIQUE,MANUELLE}; enum V_CHANGE {PLUS, MOINS , NONE}; class Vitesse { public: mode_conduite conduite; //nombre de tour par minute qu'effectue notre moteur float tr_min; //se charge d'accorder l'acceleration , le freinage... void Gerer(); //constructeur: s'occupe d'initialiser les valeur lors de la cretion d'un objet vitesse Vitesse( float _val_1, float _val_2, float _val_3, float _val_4, float _acc_1,float _acc_2,float _acc_3,float _acc_4, float _trans_1 ,float _trans_2 ,float _trans_3 ,float _trans_4 ); //changement_vitesse = PLUS <-> le changement de vitesse est en cours et le moteur doit passer a la vitesse superieure //changement_vitesse = MOINS <-> le changement de vitesse est en cours et le moteur doit passer a la vitesse inferieure //changement_vitesse = NONE <-> le changement de vitesse n'est pas en cours V_CHANGE changement_vitesse; //le vehicule est en train d'accelerer ou ne l'est pas bool is_acc; //le vehicule est en train de freiner ou ne l'est pas bool is_frein; //vitesse du vehicule float vel; //nombre de tour au demarrage du vehicule float val_demarrage; void UpGrader(); void RetroGrader(); //vitesse en cours :) int v_en_cours; private: //augmente le nombre de tour par minute et change de vitesse void Accelerer(); //diminue le nombre de tour par minute et retrograde //l'argument est la valeur de deceleration plus elle est elevée plus la deceleration sera rapide void Freiner(float _dec); /* chaque passage de vitesse necessite un nombre de tour different pour le moteur on passe pas une seconde a 1000 tours minutes sur une formule 1 par exemple dans val[1] vous stockez la valeur (en nombre de tour / min) a laquelle doit seffetuer le changement de vitesse de la 1ere a la 2eme dans val[0] y a rien
  • /
float val[5]; /* chaque vehicule a (ce que l'on appele dans le jargon) de la patate. cette patate varie d'un vehicule a un autre et elle varei aussi sur chaque vitesse ainsi en 5 eme la capacité d'acceleration d'une catrelle sera plus faible que celle d'une clio (il a un 5 eme sur les catrelles ?) et entre la 5eme et la 4eme d'une clio la vitesse d'acceleration est aussi differente vous stockez donc pour chaque rapport cette valeur dans le tableau suivant
  • /
float acc[5]; /* la c'est le rapport de transmission pour chaque vitesse. pour la theorie le rapport correspond: vitesse de rotation des roues / vitesse de rotation de l'arbre de sortie du moteur pour avoir la vitesse faut faire R*w avec R le rayon de la roue et w la vitesse de rotation de l'arbre bon moi je me preocupe pas de R puisque c'est une variable du modele du vehicule si vous voulez en tenir compte vous n'avez qu'a faire rapport_transmission * R
  • /
float trans[5]; //capacité de deceleration du vehicule (valeur arbitraire que vous fixez) float dec; /* ous le nom de i se cache ... la temps en fait i c'est le point clé des equation que j'utilise pour gerer la vitesse etant donné que j'utilise des fonctions mathematique a une variable je suis obligé d'avoir une valeur incrementale commme quand vous etes en cours et qu'on ecrit au tableau : f(x) et ben x = i ici :) les fonction que j'utilise sont simples et j'aurais quand meme pu me donner la peine d'utiliser les suites convergentes correspondantes ce qui est du ressort d'un 1er ou terminal mais j'y ai pas pensé tout de suite et j'ai un peu la fleme mais cessons de tergiverser et continuons nos explications
  • /
float i; }; #endif

Conclusion :


le frein moteur est implementé

now just listen to the vroom vroom music !!

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
6
Date d'inscription
vendredi 30 mars 2007
Statut
Membre
Dernière intervention
2 avril 2007

bon tu m'explikera comment utiliser et mettre en marche ce simulateur
Messages postés
212
Date d'inscription
dimanche 29 juin 2003
Statut
Membre
Dernière intervention
13 mai 2006

oula jme fais spamer ma boite email par cppfrance la ;-)
bon la j'ai pas trop le temps mais des que possible je mettrai a jour le prog avec une version de fmod valable!! disons ce week end ca devrait le faire !!
->Arnaud16022 je vois que t'es toujours hyper present ! ca fait plaisir !!
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
54
MP = Message Privé
Messages postés
6
Date d'inscription
vendredi 30 mars 2007
Statut
Membre
Dernière intervention
2 avril 2007

c koi MP ???
Messages postés
39
Date d'inscription
mercredi 6 octobre 2004
Statut
Membre
Dernière intervention
27 mai 2009

alors poulenc, les dll le plus simple c'est de les mettre dans le meme dossier que le programme (ou dans le repertoire windows). C'est pareil avec TOUTES les applications(ca a deja été dit plus haut il me semble).
par contre, tu risques d'être très décu si tu veux jouer... c'est pas un jeu ! Par contre, c'est une source super interessante qui met en oeuvre de la modélisation 3D, et la modulation d'un son. Si tu veux voir a quoi ressemble le programme, regarde l'apercu...

Arnaud, si je dit "et ca marche" c'est que oui, en effet j'ai testé ...
Afficher les 43 commentaires

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.