Bonjour à tous!
Je refais une fois de plus appel à vous car j'ai (de nouveau ^^) un gros problème!
Je vous explique:
J'ai un projet à faire dans le cadre de ma formation. Ce projet est en quelque sorte un petit jeu vidéo (rpg).
Voici une petite partie de la consigne que je n'arrive décidément pas à faire:
Déterminer et implémenter les diverses structures de données de votre projet:
Chaque structure de données sera accompagnée des primitives nécessaires à la création, la modification et l'observation de la structure.
Pour cela nous vous proposons l'analyse suivante:
La table OUTILS qui correspond à un type OUTILS muni des primitives:
OUTILS CREER_OUTIL(nom , type); // Créer un outil de nom nom, de type type et d'énergie par défaut
nom NOM_OUTIL(OUTILS); // Retourne le nom d'un outil.
type_outil TYPE_OUTIL(OUTILS); // Retourne le type d'un outil.
void MODIF_ENERGIE(OUTILS&); // Modifie l'énergie d'un outil.
énergie ENERGIE_OUTIL(OUTILS); // Retourne l'énergie d'un outil.
Et c'est ici que se trouve mon gros problème!!
J'ai essayé d'implémenter les primitives de toutes les manières que je pouvais, de changer ma structure OUTILS de multiples fois mais je n'y arrive décidément pas!!
Je vous montre le brouillon de ce que j'ai fait pour le moment (il y a de très nombreuses erreurs dont je vous fait la copie juste en dessous):
#include<iostream>
using namespace std;
#ifndef_OUTILSU
#define_OUTILSU
/*
Les profils des méthodes:
CREER_OUTIL: NOM * TYPE -> OUTILS (Constructeur)
NOM_OUTIL: OUTILS -> NOM (Observateur)
TYPE_OUTIL: OUTILS -> TYPE (Observateur)
ENERGIE_OUTIL: OUTILS -> N (Observateur)
MODIF_ENERGIE: OUTILS -> OUTILS (Extenseur)
Les regles:
Pour tout x qui appartient à NOM
Pour tout y qui appartient à TYPE
Pour tout z qui appartient à N
NOM_OUTIL(CREER_OUTIL(NOM,TYPE))=NOM
TYPE_OUTIL(CREER_OUTIL(NOM,TYPE))=TYPE
ENERGIE_OUTIL(CREER_OUTIL(NOM,TYPE))=N
*/
typedef char nom_outil[20];
typedef char type_outil[20];
struct OUTILS{
nom_outil n_out;
type_outil t_out;
int energie_outil;
};
void CREER_OUTIL(OUTILS&, nom_outil, type_outil); // Créer un outil de nom nom, de type type et d'énergie par défaut
nom_outil NOM_OUTIL(OUTILS); // Retourne le nom d'un outil.
type_outil TYPE_OUTIL(OUTILS); // Retourne le type d'un outil.
void MODIF_ENERGIE(OUTILS&); // Modifie l'énergie d'un outil.
int ENERGIE_OUTIL(OUTILS); // Retourne l'énergie d'un outil.
#endif
void CREER_OUTIL(OUTILS &outi, nom_outil nom_out, type_outil type_out){
outi.n_out=nom_out;
outi.t_out=type_out;
outi.energie_outil=100;
}
nom_outil NOM_OUTIL(OUTILS outi){
return outi.n_out; }
type_outil TYPE_OUTIL(outi){
return outi.t_out; }
void MODIF_ENERGIE(OUTILS &outi){
outi.energie_outil--;
}
int ENERGIE_OUTIL(OUTILS &outi){
return outi.energie_outil;
}
//-----------------------------------------------------------------------------------------------
int main(){
OUTILS outila,outilb;
nom_outil scie="scie";
type_outil electrique="electrique";
CREER_OUTIL(outila,scie,electrique);
cout<<"Nom: "<<NOM_OUTIL(outila)<<endl<<"Type: "<<TYPE_OUTIL(outila)<<endl;
cout<<"Energie initiale: "<<ENERGIE_OUTIL(outila)<<endl<<MODIF_ENERGIE(outila)<<"Energie modifiée: "<<ENERGIE_OUTIL(outila)<<endl;
return 0;
}
Erreurs:
`NOM_OUTIL' declared as function returning an array
`TYPE_OUTIL' declared as function returning an array
In function `void CREER_OUTIL(OUTILS&, char*, char*)':
incompatible types in assignment of `char*' to `char[20]'
incompatible types in assignment of `char*' to `char[20]'
At global scope:
`NOM_OUTIL' declared as function returning an array
In function `int NOM_OUTIL(OUTILS)':
invalid conversion from `char*' to `int'
At global scope:
`char TYPE_OUTIL[20]' redeclared as different kind of symbol
previous declaration of `int TYPE_OUTIL(OUTILS)'
declaration of `char TYPE_OUTIL[20]'
conflicts with previous declaration `int TYPE_OUTIL(OUTILS)'
`outi' was not declared in this scope
cannot initialize arrays using this syntax
expected `,' or `;' before '{' token
In function `int main()':
call of overloaded `ENERGIE_OUTIL(OUTILS&)' is ambiguous
:43 candidates are: int ENERGIE_OUTIL(OUTILS)
:43 int ENERGIE_OUTIL(OUTILS&)
call of overloaded `ENERGIE_OUTIL(OUTILS&)' is ambiguous
:43 candidates are: int ENERGIE_OUTIL(OUTILS)
:43 int ENERGIE_OUTIL(OUTILS&)
Je vous avais prévenu il y en a bien une grande liste ^^
En résumé, j'aimerais que vous m'aidiez à réussir cette implémentation et à corriger mon nombre très important d'erreurs!!!
Merci d'avance!
