Problème de modules en C [urgent]

Résolu
john_cc Messages postés 10 Date d'inscription samedi 7 janvier 2006 Statut Membre Dernière intervention 10 janvier 2006 - 10 janv. 2006 à 15:31
john_cc Messages postés 10 Date d'inscription samedi 7 janvier 2006 Statut Membre Dernière intervention 10 janvier 2006 - 10 janv. 2006 à 16:38
Bonsoir,

J'ai encore un problème dans mon jeu de combat style rpg en c.
J'ai 2 modules : un pour la saisie, un pour le combat.
Quand je veux lancer les fonctions du module de combat depuis le module de combat, j'ai des erreurs du style : perso1' undeclared (first use in this function). Pourtant, mes structures perso1.nom, perso1.pv... fonctionnent bien dans le module de saisie et j'ai pourtant bien pris soin d'inclure battle.c (mon module de combat).

Le code de mon module de saisie :

#include
#include
#include
#include "battle.c"



// prototype de la stucture archivant les données sur les combattants//

int race;
int choix;
char guerrier;
char pretre;
char mage;

struct combattant
{ char nom[20];
int metier;
int pv;
int pa;
int sortmage;
int sortpretre;
};


// fonction qui permetra le choix du metier//
int Choixmetier()
{

printf ("\n Dans ce univers d'heroic-fantasy il existe plusieur type de personnage .\n\n");
printf ("Le guerrier qui confere 2 points d'attaque en plus de ce de la race.\n\n");
if (race != 2)
{
printf ("Le mage qui possede le pouvoir de diviser \n les points de vie de l'enemie ciblé par 2.\n\n");
}
if (race != 3)
{
printf ("Le pretre lui à la capacité de soigner entierement un membre de son equipe.\n\n");
}
printf ("alors lequels allez vous choisir ?\n\n");

printf (" 1 : Le guerrier.\n\n ");
if (race !=2)
{
printf (" 2 : Le mage \n\n ");
}
if (race != 3)
{
printf (" 3 : Le pretre \n\n");
}
scanf ("%d", &choix);
switch(choix)
{
case 1: printf ("\n Vous avez decider de jouer un Guerrier.\n");
break;
case 2: if (race == 2) {printf("\n Vous ne pouvez pas cree un mage elfe\n"); system("pause"); system("cls"); Choixmetier();}
else {printf ("\n Vous avez decider de jouer un mage. Le monde de la magie s'ouvre à vous.\n");}
break;
case 3: if (race == 3) {printf("\n Vous ne pouvez pas cree un nain pretre n'essayez pas de tricher.\n Nyana vous a un l'oeil sur vous.\n"); system("pause"); system("cls"); Choixmetier();}
printf ("\n Vous avez decider de jouer un pretre. Les autres combattants du groupe vous en remercient.\n");
break;

return(0);
}
}

// fonction permetant le choix de la race//
int Choixrace ()
{
puts("\n Desormais il vous faut choisir la race avec laquel vous partirai \n au combat pour permettre le retablissement de l'ordre dans le monde de Nyana");
//ici sera decrit chacune des races proposŽ dans notre jeu
printf("\n 1 : Les Humain possedant 10 points de vie et 3 points d'attaque.\n");
printf("\n 2 : Les Elfes possedant 8 points de vie et 4 points d'attaque.\n");
printf("\n 3 : Les Nains possedant 12 points de vie et 2 points d'attaque.\n");
// le choix est fait par un switch
scanf ("%d", &race);
switch(race)
{
case 1: printf("vous avez choisi les Humains \n ");
// et info relative
break;
case 2: printf("vous avez choisi les Elfes \n ");
// et info relative
break;
case 3: printf("vous avez choisi les Nains \n ") ;
// et info relative
break;

return(0);

}
}


main()
{
// Voila la description de l'ambiance du jeu.
puts(" Bienvenue dans Le Monde de Nyana\n\n\n\n");
puts(" Il y a fort longtemps dans une lointaine contre, \n oublie du monde connu depuis des temps immemoriaux .");
puts(" Magie, courage, vaillance, mais aussi cruaute, desespoir et perfidie .\n Telle furent les lois qui regissent ce monde : Le Fabuleux Monde de Nyana \n\n\n");
puts(" Ce monde etais peuple de toutes sortes de creatures aussi belle \n pour les une qu'abject pour les autres.\n ");
puts(" Les Humains, Les elfes, Les Nains gouvernerent ce monde en harmonie \n durant des millenaires.\n Les Humains fragiles mais determiner viverent dans les plaines.\n Les elfes etais la race la plus inteligente de toutes,\n elle vivais en harmonie avec la nature \n principalement dans les forets et pres des oceans.\n Les Nains etais solide et harnieux passer leur temps \n dans le montagne pour en prelever les matieres les plus precieuses.\n");
puts(" Seulement cette equilibre est voué à etre rompu .\n Si Nyana, createur de ce monde, represente tous \n ce qu'il y avais plus beau dans ce monde.\n Romain represente tous ce qu'il pouvais y avoir de malefique,\n il naquit a la creation de ce monde, c'etais la noir parti de Nyana.\n");
puts(" Il n'avais pour obsession que de s'empare du Monde de Nyana.\n Et pour ce faire à monter les races une contre les autre.\n");
puts(" Les Humains malgres leur fragilité posseder un courage infaillible \n qui compensa leur faible aptitude. Guerriers, puissant au corp a corp,\n Mages, s'averant tres efficace en debt de combat \n et pretres, pouvant soigne ses compagnons,\n constitue le plus grand de leur troupe.\n");
puts(" Les elfes etais naturelement de tres bon combattant de ce fait \n leur armees se constituer exclusivement de guerriers ainsi que de pretres.\n");
puts(" Les Nains quant à eux etais robuste et puissant \n mais toutefois sachant maitrise la magie par l'intermediaire \n de rune puissante cree grace au materiaux les plus rares . \n Leur corp de combattant se constituer soit de mage, \n soit de guerrier, soit des deux .\n");
system("PAUSE");
system("CLS");
puts("\nEt maintenant passons au choix de notre équipe de combattant\n");
int perso = 0;
// structure pour le premier groupe et initialisation de celui ci (saisie des nom) , enregistrement //
/*for (perso = 0; perso

1 réponse

john_cc Messages postés 10 Date d'inscription samedi 7 janvier 2006 Statut Membre Dernière intervention 10 janvier 2006
10 janv. 2006 à 16:38
Problème réglé :

---Je suppose que tu a voulu dire :
les fonctions du module de saisie depuis le module de combat.

Bon bien dans ce cas c'est très simple : t'es variable perso1, perso2, ... créer sur le modèle de la structure ont été déclaré dans ta fonction main du module de saisie. Elle sont donc locale a cette fonction et tu ne peux pas y acceder depuis n'importe quel autres fonctions.

La solution ben tu peux tout simplement mettre la déclaration de tes variables en plubic par exemple juste en dessous de la déclaration de la structure.

Mais là y a un autre petit problème qui devrais apparaitre.
Quand tu fait un include, le fichier que tu inclu est lors de la compilation intègralement copié à l'endroit du #include. Donc dans ce cas il ne verra pas les variables perso1,... ni même la structure. Il faudrait donc que tu incluses ce "battle.c" après la déclaration des variables.

Voilà voilà.---

Merci à une personne sur un autre forum.
3
Rejoignez-nous