Switch: pas de variables, comment faire ?
J'utilise un fichier de configuration ( Config.tfc ) que mon programme lit pour y récupérer une série de chiffres : ces chiffres sont sensés remplacer les SDLK_UP et autres mots clé qui désignent les touches du clavier ( par exemple, le SDLK_ESCAPE vaut 27, si si essayez :D ).
Ensuite, je stoque les chiffres dans une classe ( keystates ) et je remplace les SDLK dans le switch de la boucle qui gère les évènements par les variables qui contiennent les nombres sus nommés.
Le seul probleme c'est que je ne peux pas intégrer dans un switch des variables... Comment faire ?
Config.cpp
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| int EtablirConfiguration()
{
Keystates KEY;
FILE* fichier = NULL;
fichier = fopen("Config.tfc", "r");
if (fichier != NULL)
{
fscanf(fichier, "%ld-%ld-%ld-%ld-%ld-%ld-%ld-%ld-%ld-%ld-%ld-%ld-%ld-%ld", &KEY.MarcherAvant,
&KEY.MarcherArriere,&KEY.MarcherGauche, &KEY.MarcherDroite, &KEY.Acheter, &KEY.Tirer, &KEY.Recharger,
&KEY.Arme01, &KEY.Arme02, &KEY.Arme03, &KEY.Arme04, &KEY.Quitter, &KEY.InfoMap, &KEY.Fullscreen);
fclose(fichier);
}
if(fichier == NULL)
{
MessageBox(0,"Impossible d'ouvrir Config.tfc",NULL,0);
return 1;
}
return 0;
} |
Config.h
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| #ifndef DEF_CONFIG
#define DEF_CONFIG
class Keystates
{
public:
int MarcherAvant, MarcherArriere, MarcherGauche, MarcherDroite;
int Acheter, Tirer, Recharger, Arme01, Arme02, Arme03, Arme04;
int Quitter, InfoMap;
int Fullscreen;
};
int EtablirConfiguration();
#endif |
Ce que je veux faire:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| void Player::handle_input()
{
Keystates KEY;
if( event.type == SDL_KEYDOWN )
{
switch( event.key.keysym.sym )
{
case KEY.Quitter: free_support(); break; /* C'est ici que ça bloque */
}
}
} |