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