| | Premier problème [RESOLU] | |
|
|
| Auteur | Message |
|---|
kimerafusion Possedé par Mark Overmars


Nombre de messages: 1622 Programme utilisé (Gm/RmXp/...): gamemaker 7.0 pro, code::blocks, adobe dreamweaver, gnu-gcc Etudes: futur ingénieur logiciel (j'aimerais bien bosser sur de la nanotechnologie, biotechnologie ou autres), seconde GT Loisirs: jeux-vidéos - programmation (C/C++, Qt, SDL) Date d'inscription: 14/10/2008
 | Sujet: Premier problème [RESOLU] Mar 5 Mai - 18:53 | |
| Me voilà déjà avec un problème en C++. J'ai mes petites structures : | Code: | typedef struct perso perso; struct perso { int atk; int def; int vit; int cc; int pvmax; int pvactu; int manamax; int manaactu; };
typedef struct monstre monstre; struct monstre { int atk; int def; int vit; int cc; int pvmax; int pvactu; int manamax; int manaactu; }; |
dans mon .h . Voici mes prototypes :
| Code: | int atkPerso(int perso.atk); int defPerso(int perso.def); int vitPerso(int perso.vit); int ccPerso(int perso.cc); int pvPerso(int perso.pv); |
et ce cake de codeblocks me met exactement 36 erreurs. On ne peut pas mettre de variable structurée dans une fonction?
Dernière édition par kimerafusion le Mer 6 Mai - 17:15, édité 1 fois |
|
 | |
Xierra54 Admin - .: el traductor :.


Nombre de messages: 8504 Age: 50 Programme utilisé (Gm/RmXp/...): GM (6.1 et 7 enregistrées), Purebasic (démo) Etudes: Supérieures Loisirs: ordinateur Date d'inscription: 13/08/2005
 | Sujet: Re: Premier problème [RESOLU] Mar 5 Mai - 19:17 | |
| Tu devrais avoir pas loin de 40 erreurs pour être exact. Je pense que le pb. vient que dans tes prototypes, tu utilises une structure inconnue (perso.atk, etc.) à ce stade. Les structures ont été définies à un niveau où le h ne peut avoir accès. Si mes souvenirs sont bons, il suffit de mettre ceci : int atkPerso(int);... etc. pour définir tes prototypes. Dis-moi si je suis dans le vrai. A+ |
|
 | |
kimerafusion Possedé par Mark Overmars


Nombre de messages: 1622 Programme utilisé (Gm/RmXp/...): gamemaker 7.0 pro, code::blocks, adobe dreamweaver, gnu-gcc Etudes: futur ingénieur logiciel (j'aimerais bien bosser sur de la nanotechnologie, biotechnologie ou autres), seconde GT Loisirs: jeux-vidéos - programmation (C/C++, Qt, SDL) Date d'inscription: 14/10/2008
 | Sujet: Re: Premier problème [RESOLU] Mar 5 Mai - 19:18 | |
| Tu veux dire que je retire "perso.atk"? EDIT : en fait il faudrait que je mette : | Code: | perso perso; monstre monstre; |
dans mon .h, mais comment? j'ai testé mais c'est limite impossible pour moi et mes connaissances... |
|
 | |
Xierra54 Admin - .: el traductor :.


Nombre de messages: 8504 Age: 50 Programme utilisé (Gm/RmXp/...): GM (6.1 et 7 enregistrées), Purebasic (démo) Etudes: Supérieures Loisirs: ordinateur Date d'inscription: 13/08/2005
 | Sujet: Re: Premier problème [RESOLU] Mar 5 Mai - 19:21 | |
| Tu mets ce que j'ai écrit dans ton fichier de tes prototypes : int atkPerso(int); int defPerso(int); ... etc. L'important ici, si mes souvenirs sont bons, est de déclarer tes variables et de définir le type de tes variables prototypées. |
|
 | |
kimerafusion Possedé par Mark Overmars


Nombre de messages: 1622 Programme utilisé (Gm/RmXp/...): gamemaker 7.0 pro, code::blocks, adobe dreamweaver, gnu-gcc Etudes: futur ingénieur logiciel (j'aimerais bien bosser sur de la nanotechnologie, biotechnologie ou autres), seconde GT Loisirs: jeux-vidéos - programmation (C/C++, Qt, SDL) Date d'inscription: 14/10/2008
 | Sujet: Re: Premier problème [RESOLU] Mar 5 Mai - 19:23 | |
| Je viens de tester, mais ça fonctionne pas... mes fonctions ont absolument besoin de ces variables... |
|
 | |
Xierra54 Admin - .: el traductor :.


Nombre de messages: 8504 Age: 50 Programme utilisé (Gm/RmXp/...): GM (6.1 et 7 enregistrées), Purebasic (démo) Etudes: Supérieures Loisirs: ordinateur Date d'inscription: 13/08/2005
 | Sujet: Re: Premier problème [RESOLU] Mar 5 Mai - 19:25 | |
| Qu'est-ce qui ne fonctionne pas ? La déclaration semble correcte : le but étant comme toujours d'allouer une zone mémoire entière (16 ou 32 bits) pour chacune de tes variables prototypées. Ou alors, explique davantage ce que tu souhaites faire (on peut parfois avoir besoin des pointeurs) |
|
 | |
kimerafusion Possedé par Mark Overmars


Nombre de messages: 1622 Programme utilisé (Gm/RmXp/...): gamemaker 7.0 pro, code::blocks, adobe dreamweaver, gnu-gcc Etudes: futur ingénieur logiciel (j'aimerais bien bosser sur de la nanotechnologie, biotechnologie ou autres), seconde GT Loisirs: jeux-vidéos - programmation (C/C++, Qt, SDL) Date d'inscription: 14/10/2008
 | Sujet: Re: Premier problème [RESOLU] Mar 5 Mai - 19:29 | |
| Bon je te donne mes codes, j'espère que tu comprendras d'où vient le problème : jdrH.h : | Code: | #ifndef JDRH_H_INCLUDED #define JDRH_H_INCLUDED
typedef struct perso perso; struct perso { int atk; int def; int vit; int cc; int pvmax; int pvactu; int manamax; int manaactu; };
typedef struct monstre monstre; struct monstre { int atk; int def; int vit; int cc; int pvmax; int pvactu; int manamax; int manaactu; };
int atkPerso(int perso.atk); int defPerso(int perso.def); int vitPerso(int perso.vit); int ccPerso(int perso.cc); int pvPerso(int perso.pvmax);
#endif // JDRH_H_INCLUDED |
newperso.cpp :
| Code: | #include <iostream> #include "jdrH.H" // On inclut le header
int atkPerso(int perso.atk) { perso.atk = (rand() % (5 - 2 + 1)) + 2; return perso.atk; }
int defPerso(int perso.def) { perso.def = (rand() % (4 - 1 + 1)) + 1; return perso.def; }
int vitPerso(int perso.vit) { perso.vit = (rand() % (10 - 1 + 1)) + 1; if(perso.vit <= 2) perso.vit = perso.vit + 2; return perso.vit; }
int ccPerso(int perso.cc) { perso.atk = (rand() % (100 - 25 + 1)) + 25; return perso.cc; }
int pvPerso(int perso.pvmax) { perso.pvmax = (rand() % (10 - 5 + 1)) + 5; return perso.pvmax; } |
Voilà! |
|
 | |
Xierra54 Admin - .: el traductor :.


Nombre de messages: 8504 Age: 50 Programme utilisé (Gm/RmXp/...): GM (6.1 et 7 enregistrées), Purebasic (démo) Etudes: Supérieures Loisirs: ordinateur Date d'inscription: 13/08/2005
 | Sujet: Re: Premier problème [RESOLU] Mar 5 Mai - 19:40 | |
| Mes souvenirs sont lointains ! Aussi pourrais-tu mettre une copie d'écran de l'affichage des erreurs. Je suis presque sûr qu'il s'agit d'un pb. de déclaration ou d'utilisation de tes variables. |
|
 | |
kimerafusion Possedé par Mark Overmars


Nombre de messages: 1622 Programme utilisé (Gm/RmXp/...): gamemaker 7.0 pro, code::blocks, adobe dreamweaver, gnu-gcc Etudes: futur ingénieur logiciel (j'aimerais bien bosser sur de la nanotechnologie, biotechnologie ou autres), seconde GT Loisirs: jeux-vidéos - programmation (C/C++, Qt, SDL) Date d'inscription: 14/10/2008
 | Sujet: Re: Premier problème [RESOLU] Mar 5 Mai - 19:40 | |
| D:\Mes Documents\Projets C et C++\JDR sur console en C++ 1.0\newperso.cpp||In function `int atkPerso(perso)'  D:\Mes Documents\Projets C et C++\JDR sur console en C++ 1.0\newperso.cpp|6|error: expected primary-expression before '.' token| D:\Mes Documents\Projets C et C++\JDR sur console en C++ 1.0\newperso.cpp|7|error: expected primary-expression before '.' token| D:\Mes Documents\Projets C et C++\JDR sur console en C++ 1.0\newperso.cpp||In function `int defPerso(perso)'  D:\Mes Documents\Projets C et C++\JDR sur console en C++ 1.0\newperso.cpp|12|error: expected primary-expression before '.' token| D:\Mes Documents\Projets C et C++\JDR sur console en C++ 1.0\newperso.cpp|13|error: expected primary-expression before '.' token| D:\Mes Documents\Projets C et C++\JDR sur console en C++ 1.0\newperso.cpp||In function `int vitPerso(perso)'  D:\Mes Documents\Projets C et C++\JDR sur console en C++ 1.0\newperso.cpp|18|error: expected primary-expression before '.' token| D:\Mes Documents\Projets C et C++\JDR sur console en C++ 1.0\newperso.cpp|19|error: expected primary-expression before '.' token| D:\Mes Documents\Projets C et C++\JDR sur console en C++ 1.0\newperso.cpp|20|error: expected primary-expression before '.' token| D:\Mes Documents\Projets C et C++\JDR sur console en C++ 1.0\newperso.cpp|20|error: expected primary-expression before '.' token| D:\Mes Documents\Projets C et C++\JDR sur console en C++ 1.0\newperso.cpp|21|error: expected primary-expression before '.' token| D:\Mes Documents\Projets C et C++\JDR sur console en C++ 1.0\newperso.cpp|24|error: expected `,' or `...' before '.' token| D:\Mes Documents\Projets C et C++\JDR sur console en C++ 1.0\newperso.cpp||In function `int ccPerso(int)'  D:\Mes Documents\Projets C et C++\JDR sur console en C++ 1.0\newperso.cpp|26|error: `atk' has not been declared| D:\Mes Documents\Projets C et C++\JDR sur console en C++ 1.0\newperso.cpp|26|error: request for member of non-aggregate type before '=' token| D:\Mes Documents\Projets C et C++\JDR sur console en C++ 1.0\newperso.cpp|27|error: `cc' has not been declared| D:\Mes Documents\Projets C et C++\JDR sur console en C++ 1.0\newperso.cpp|27|error: request for member of non-aggregate type before ';' token| D:\Mes Documents\Projets C et C++\JDR sur console en C++ 1.0\newperso.cpp|30|error: expected `,' or `...' before '.' token| D:\Mes Documents\Projets C et C++\JDR sur console en C++ 1.0\newperso.cpp||In function `int pvPerso(int)'  D:\Mes Documents\Projets C et C++\JDR sur console en C++ 1.0\newperso.cpp|32|error: `pvmax' has not been declared| D:\Mes Documents\Projets C et C++\JDR sur console en C++ 1.0\newperso.cpp|32|error: request for member of non-aggregate type before '=' token| D:\Mes Documents\Projets C et C++\JDR sur console en C++ 1.0\newperso.cpp|33|error: `pvmax' has not been declared| D:\Mes Documents\Projets C et C++\JDR sur console en C++ 1.0\newperso.cpp|33|error: request for member of non-aggregate type before ';' token| ||=== Build finished: 19 errors, 0 warnings ===| Voilà! |
|
 | |
Xierra54 Admin - .: el traductor :.


Nombre de messages: 8504 Age: 50 Programme utilisé (Gm/RmXp/...): GM (6.1 et 7 enregistrées), Purebasic (démo) Etudes: Supérieures Loisirs: ordinateur Date d'inscription: 13/08/2005
 | Sujet: Re: Premier problème [RESOLU] Mar 5 Mai - 19:42 | |
| Je mange puis je regarde. |
|
 | |
kimerafusion Possedé par Mark Overmars


Nombre de messages: 1622 Programme utilisé (Gm/RmXp/...): gamemaker 7.0 pro, code::blocks, adobe dreamweaver, gnu-gcc Etudes: futur ingénieur logiciel (j'aimerais bien bosser sur de la nanotechnologie, biotechnologie ou autres), seconde GT Loisirs: jeux-vidéos - programmation (C/C++, Qt, SDL) Date d'inscription: 14/10/2008
 | Sujet: Re: Premier problème [RESOLU] Mar 5 Mai - 19:43 | |
| moi je go miam et je verrai ta réponse demain. Merci d'avance |
|
 | |
Xierra54 Admin - .: el traductor :.


Nombre de messages: 8504 Age: 50 Programme utilisé (Gm/RmXp/...): GM (6.1 et 7 enregistrées), Purebasic (démo) Etudes: Supérieures Loisirs: ordinateur Date d'inscription: 13/08/2005
 | Sujet: Re: Premier problème [RESOLU] Mar 5 Mai - 20:08 | |
| Le pb. vient bien apparemment de la manière de passer en arguments, les éléments de tes structures à chacune de tes fonctions ! Est-ce qu'un expert en C/C++ pourrait aider SVP ? Merci pour Kimerafusion. |
|
 | |
Fireranger Possedé par Mark Overmars


Nombre de messages: 1360 Age: 16 Programme utilisé (Gm/RmXp/...): Game Maker 7 PRO, Visual Basic 9.0, Visual C++ et Code::Blocks Date d'inscription: 22/11/2007
 | |
 | |
Rayman3640 Experimenté


Nombre de messages: 429 Age: 15 Programme utilisé (Gm/RmXp/...): GM7 Pro/gcc/Vim/RM2003/ Etudes: Collégien Loisirs: Informatique, tennis, lecture, écriture, jeux vidéo, handball Date d'inscription: 29/04/2008
 | Sujet: Re: Premier problème [RESOLU] Mer 6 Mai - 12:35 | |
| Moi j'aurais plutôt envoyé à chaque fonction un pointeur sur la structure perso. Avec cette méthode, tu peux même faire le tout en une fonction ! | Code: | //Prototype void defPerso(perso *personnage);
|
| Code: | //Envoi du pointeur à la fonction defPerso defPerso(&perso); |
| Code: | //Modification de l'attaque via le pointeur void defPerso(perso *personnage) { personnage->atk = (rand() % (5 - 2 + 1)) + 2; personnage->def = (rand() % (5 - 2 + 1)) + 2; }
|
_________________ Supra-Quest, un jeu vidéo concentrant une aventure épique, un monde presque sans limites à découvrir et un système de combat novateur ! N'oubliez pas de visiter le SQ-Devblog, le blog de développement du jeu !
Dernière édition par Rayman3640 le Mer 6 Mai - 14:06, édité 1 fois |
|
 | |
kimerafusion Possedé par Mark Overmars


Nombre de messages: 1622 Programme utilisé (Gm/RmXp/...): gamemaker 7.0 pro, code::blocks, adobe dreamweaver, gnu-gcc Etudes: futur ingénieur logiciel (j'aimerais bien bosser sur de la nanotechnologie, biotechnologie ou autres), seconde GT Loisirs: jeux-vidéos - programmation (C/C++, Qt, SDL) Date d'inscription: 14/10/2008
 | Sujet: Re: Premier problème [RESOLU] Mer 6 Mai - 14:01 | |
| merci mais je vais garder la technique de Fireranger. Donc, si j'ai bien compris, il faut que je mette par exemple : | Code: | perso perso, int atk |
?? Je fais le test et j'edit pour vous donner la réponse EDIT : Ca fonctionne, il n'y a plus d'erreur de compilation... Mais une erreur apparait  Voici le code de mon jdrH.h :
| Code: | #ifndef JDRH_H_INCLUDED #define JDRH_H_INCLUDED
typedef struct perso perso; struct perso { int atk; int def; int vit; int cc; int pvmax; int pvactu; int manamax; int manaactu; };
typedef struct monstre monstre; struct monstre { int atk; int def; int vit; int cc; int pvmax; int pvactu; int manamax; int manaactu; };
int atkPerso(perso perso, int atk); int defPerso(perso perso, int def); int vitPerso(perso perso, int vit); int ccPerso(perso perso, int cc); int pvPerso(perso perso, int pvmax);
#endif // JDRH_H_INCLUDED |
Et celui de mon newperso.cpp :
| Code: | #include <iostream> #include "jdrH.H" // On inclut le header
int atkPerso(perso perso, int atk) { perso.atk = (rand() % (5 - 2 + 1)) + 2; return perso.atk; }
int defPerso(perso perso, int def) { perso.def = (rand() % (4 - 1 + 1)) + 1; return perso.def; }
int vitPerso(perso perso, int vit) { perso.vit = (rand() % (10 - 1 + 1)) + 1; if(perso.vit <= 2) perso.vit = perso.vit + 2; return perso.vit; }
int ccPerso(perso perso, int cc) { perso.atk = (rand() % (100 - 25 + 1)) + 25; return perso.cc; }
int pvPerso(perso perso, int pvmax) { perso.pvmax = (rand() % (10 - 5 + 1)) + 5; return perso.pvmax; } |
Maintenant, j'affiche à l'écran mes variables perso.atk, perso.def etc. dans mon main.cpp, voici le code me permettant de faire ceci :
| Code: | int atkPerso(); //On lance les fonctions de création du personnage int defPerso(); int vitPerso(); int ccPerso(); int pvPerso(); cout << perso.atk << " " << perso.def << " " << perso.vit << " " << perso.cc << " " << perso.pvmax << endl; |
Voici maintenant ce que m'affiche mon ami MS-DOS : 2009118740 4072616 4072496 8 2009116333
Je crois avoir encore besoin d'aide  |
|
 | |
Rayman3640 Experimenté


Nombre de messages: 429 Age: 15 Programme utilisé (Gm/RmXp/...): GM7 Pro/gcc/Vim/RM2003/ Etudes: Collégien Loisirs: Informatique, tennis, lecture, écriture, jeux vidéo, handball Date d'inscription: 29/04/2008
 | Sujet: Re: Premier problème [RESOLU] Mer 6 Mai - 14:19 | |
| | Code: | int atkPerso(); //On lance les fonctions de création du personnage int defPerso(); int vitPerso(); int ccPerso(); int pvPerso(); cout << perso.atk << " " << perso.def << " " << perso.vit << " " << perso.cc << " " << perso.pvmax << endl; |
Dans ton code, tu n'envoies aucun paramètre à tes fonctions d'initialisation, donc elles ne fonctionnnent pas, et tu ne récupères pas les variables qu'elles retournent.
Je pense que tu dois remplacer ce code par le suivant :
| Code: | perso.atk = atkPerso(perso,5); //Remplace 5 par ce que tu veux perso.def = defPerso(perso,5); //etc
|
_________________ Supra-Quest, un jeu vidéo concentrant une aventure épique, un monde presque sans limites à découvrir et un système de combat novateur ! N'oubliez pas de visiter le SQ-Devblog, le blog de développement du jeu ! |
|
 | |
kimerafusion Possedé par Mark Overmars


Nombre de messages: 1622 Programme utilisé (Gm/RmXp/...): gamemaker 7.0 pro, code::blocks, adobe dreamweaver, gnu-gcc Etudes: futur ingénieur logiciel (j'aimerais bien bosser sur de la nanotechnologie, biotechnologie ou autres), seconde GT Loisirs: jeux-vidéos - programmation (C/C++, Qt, SDL) Date d'inscription: 14/10/2008
 | Sujet: Re: Premier problème [RESOLU] Mer 6 Mai - 14:24 | |
| non non non ça marche pas du tout ça m'énerve |
|
 | |
Rayman3640 Experimenté


Nombre de messages: 429 Age: 15 Programme utilisé (Gm/RmXp/...): GM7 Pro/gcc/Vim/RM2003/ Etudes: Collégien Loisirs: Informatique, tennis, lecture, écriture, jeux vidéo, handball Date d'inscription: 29/04/2008
 | Sujet: Re: Premier problème [RESOLU] Mer 6 Mai - 14:32 | |
| Ça t'affiche les mêmes nombres ? Alors peut-être que c'est un problème dans la génération du nombre par la fonction. Essaie de remplacer le code de choix du nombre au hasard d'une de tes fonctions (comme atkPerso) par un nombre prédéfini (4 par exemple), c'est juste pour voir si le problème vient de là. _________________ Supra-Quest, un jeu vidéo concentrant une aventure épique, un monde presque sans limites à découvrir et un système de combat novateur ! N'oubliez pas de visiter le SQ-Devblog, le blog de développement du jeu ! |
|
 | |
kimerafusion Possedé par Mark Overmars


Nombre de messages: 1622 Programme utilisé (Gm/RmXp/...): gamemaker 7.0 pro, code::blocks, adobe dreamweaver, gnu-gcc Etudes: futur ingénieur logiciel (j'aimerais bien bosser sur de la nanotechnologie, biotechnologie ou autres), seconde GT Loisirs: jeux-vidéos - programmation (C/C++, Qt, SDL) Date d'inscription: 14/10/2008
 | Sujet: Re: Premier problème [RESOLU] Mer 6 Mai - 14:34 | |
| non, le problème ne vient pas de là, je pense qu'il vient de l'appel de la fonction. quand je met que perso.atk = 4 dans ma fonction, il me réaffiche la même chose : mon rand() est bon  Je pense que ça va finir que je vais essayer de ne pas faire de fonctions pour ça (même si ça fait que mon code est en bordel  ) |
|
 | |
Rayman3640 Experimenté


Nombre de messages: 429 Age: 15 Programme utilisé (Gm/RmXp/...): GM7 Pro/gcc/Vim/RM2003/ Etudes: Collégien Loisirs: Informatique, tennis, lecture, écriture, jeux vidéo, handball Date d'inscription: 29/04/2008
 | Sujet: Re: Premier problème [RESOLU] Mer 6 Mai - 15:17 | |
| Sinon il reste toujours les pointeurs (enfin si tu veux pas les utiliser je vais pas t'obliger  ). _________________ Supra-Quest, un jeu vidéo concentrant une aventure épique, un monde presque sans limites à découvrir et un système de combat novateur ! N'oubliez pas de visiter le SQ-Devblog, le blog de développement du jeu ! |
|
 | |
| | Premier problème [RESOLU] | |
|