#1 Le 19/03/2007, à 14:42
- otheym
[Résolu] [C++] emplacement des #include
Bonjour à tous,
Je voudrais savoir si les #include doivent se mettre obligatoirement au début du fichier ou non.
Car pour ce que je veux faire, j'aurais besoin de les inclures n'importes où.
En fait, je suis entrain de faire un tetris, mais il sera en plusieurs langues.
J'ai choisi de stocker chacune des langues dans un fichier .h séparé, et dans mon jeu, je permet à l'utilisateur de choisir la langue.
par exemple si:
#ifdef LANG_FR
#include "french.h"
#elif LANG_EN
#include "english.h"
#endif
Mais pour cela, si c'est après que je défini la langue, il y aura toujours la langue par défaut qui restera non ?
Dernière modification par otheym (Le 19/03/2007, à 16:25)
Aelita, je te promet que l'ont pourra bientôt vivre tous les deux.
Je te le jure mon amour.
Hors ligne
#2 Le 19/03/2007, à 14:56
- qqun
Re : [Résolu] [C++] emplacement des #include
les includes tu n'est pas oblige de les mettre au debut du fichier , ms bon a deconseiller
de toutes facons je ne pense pas que tu va gerer les langues avec des includes
a moins que tu souhaites recompiler pour chaques langues.
car les #ifdef, #define, #include, seront substituer aux pre-processing.
donc je ne vois pas comment le joueur pourras changer la langue au cours du jeu par ce moyen !
ifdef LANG_FR
#include "french.h"
#elif LANG_EN
#include "english.h"
#endif
#3 Le 19/03/2007, à 14:59
- otheym
Re : [Résolu] [C++] emplacement des #include
Effectivement j'avais pas pensé à cela lol
Je fais comment alors pour gérer plusieurs langues ?
Parce que la SDL_Config, impossible de la compiler donc peut pas m'en servir.
Au départ je voulais créer un fichier CFG ou INI par langue comme pour bcp de logiciels sous windows(logiciels gratuits ), mais je ne sais pas le faire.
Aelita, je te promet que l'ont pourra bientôt vivre tous les deux.
Je te le jure mon amour.
Hors ligne
#4 Le 19/03/2007, à 15:48
- qqun
Re : [Résolu] [C++] emplacement des #include
ben si tu n'a pas bcp de msg tu peux utiliser un fichier de config par langue avc un message par ligne
au demarrage tu charges le fichier de config de la langue par defaut dans un tableau de char* , qui te serviras apres pour l'affichage.
ex : msg[0] vaut "bonjour" msn[n]=blabla ect...
et dans ton menu , quand l'utilisateur change de langue tu recharge le fichier de conf correspondant.
ex:
fr.cfg:
Bonjour
Encore
Au revoir
en.cfg:
Hello
More
Bye
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define NB 3
char msg[NB][254];
char langue[64];
void lirecfg(char *nom)
{
FILE *in;
char line[254];
int nb=0;
in=fopen(nom,"r");
if(in==NULL)exit(1);
while(fgets(line,196,in)!=NULL)
{
strcpy(msg[nb],line);
nb++;
if(NB==nb)break;
}
fclose(in);
}
int menu(){
printf("\nchoix langue (fr ou en / autre = exit prg):");
scanf("%s",langue);
printf("choix =%s\n\n",langue);
if(strcmp(langue,"fr")==0)lirecfg("fr.cfg");
else if(strcmp(langue,"en")==0)lirecfg("en.cfg");
else return 1;
return 0;
}
int main(void)
{
int val;
debut:
val=menu();
if(val==1)goto fin;
printf("intro:%s\n",msg[0]);
printf("milieu:%s\n",msg[1]);
printf("fin:%s\n",msg[2]);
goto debut;
fin:
return 0;
}
#5 Le 19/03/2007, à 15:55
- otheym
Re : [Résolu] [C++] emplacement des #include
Oui, mais comme mon jeu sera en GPL, je voulais faire en sorte que l'utilisateur puisse si il le désire, créer un autre fichier de langue pour une autre langue, et ensuite me l'envoyer pour qu'il soit officielement inclus dans le jeu.
Là ta méthode oblige à mettre dans un ordre précis, hors avec un fichier INI, ont a:
[section]
variable=valeur
Ce qui permet de mettre dans l'ordre que je veux.
Sinon, il faut que je fasse un fichier expliquant à l'utilisateur comment créer le fichier de langue.
Enfin bon, si je trouve pas de meilleur idées, je ferais comme ça.
Quelqu'un n'aurais aps une meilleur idée ?
Aelita, je te promet que l'ont pourra bientôt vivre tous les deux.
Je te le jure mon amour.
Hors ligne
#6 Le 19/03/2007, à 16:06
- qqun
Re : [Résolu] [C++] emplacement des #include
ben c sur ca c'est vraiment pas tres pratique ,mais c'est l'exemple de base,)
maintenant si tu veux faire qqchose de complet et pratique , et que tu as qq competences
en C ,et notion en lex et yacc :
regarde ici
http://ymettier.free.fr/articles_lmag/lmag29/lmag29.html
#7 Le 19/03/2007, à 16:25
- otheym
Re : [Résolu] [C++] emplacement des #include
Merci pour le lien.
Je trouve ça vachement complex lol
Bon ce que je vais faire, dans un premier temps je vais appliqué le système de base, ensuite je verrais pour la prochaine release du jeu pour faire mieu
Merci à toi quand meme.
Aelita, je te promet que l'ont pourra bientôt vivre tous les deux.
Je te le jure mon amour.
Hors ligne
#8 Le 19/03/2007, à 16:53
- qqun
Re : [Résolu] [C++] emplacement des #include
rem ya pleins de solutions intermediaires .
dans un premier tps je pense que tu devrais regarder les src d'autres prg opensrc existants
et t'inspirer de ceux ci.
sur ce bonne chance pour ton dev
++