Bonjour a tous et a toutes,
J'ai un problème lorsque je cherche a afficher ma pelouse ou mon lombric je pense que j'ai mal programmer au niveau de mes pointeurs (pour ma classe du lombric) mais je n'en suis pas sur.
voici les classes:
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 #include <string> #include <iostream.h> #include "Pelouse.h" #include "Lombric.h" #include "Position.h" #include "Balade.h" void lancerJeu(Lombric serpent); int main(int argc, char* argv[]) { /*Pelouse pel(10,10,2); Position pos(4,2); Lombric serpent(pel,pos,5); lancerJeu(serpent);*/ Balade bal; bal.affiche(); return 0; } void lancerJeu(Lombric serpent){ }
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 /* * Balade.h * * Created on: 06-févr.-2010 * */ #ifndef BALADE_H_ #define BALADE_H_ #include "Pelouse.h" #include "Lombric.h" class Balade { Pelouse * pelouse; Lombric * lombric; public: Balade(); void affiche(); virtual ~Balade(); }; #endif /* BALADE_H_ */
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 /* * Balade.cpp * * Created on: 06-févr.-2010 * */ #include "Balade.h" #include "Lombric.h" #include "Direction.h" #include "Pelouse.h" #include "Parcelle.h" #include "iostream.h" Balade::Balade():pelouse(new Pelouse()),lombric(new Lombric()){ Pelouse pel(10,18,30); *pelouse=pel; Position pos(4,2); Lombric lomb(*pelouse,pos,5); *lombric=lomb; } Balade::~Balade() { // TODO Auto-generated destructor stub } void Balade::affiche(){ for( int i=0;i<(*(pelouse)).getLiPel();i++){ for( int j=0;j<(*(pelouse)).getColPel();j++){ if((*((*(pelouse)).getParcelle(i,j))).getAlim()==NULL) cout << "."; else cout << (*((*(pelouse)).getParcelle(i,j))).getAlim()->getAli(); cout << " "; } cout<<endl; } }
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40 /* * Lombric.h * * Created on: 05-févr.-2010 * */ #ifndef LOMBRIC_H_ #define LOMBRIC_H_ #include "Direction.h" #include "Pelouse.h" #include "Position.h" class Lombric { private: int tailleInit; int tailleLombric; int nbAlimIngurgite; Position * corps; Position initPos; Pelouse & pelouse; public: Lombric::Lombric(); Lombric(Pelouse & _pelouse, Position _initPos, int _tailleInit=4); //Lombric(const Lombric & lombric); Lombric & operator=(const Lombric & lombric); virtual ~Lombric(); private: bool grandi(Position pos); Position deploiementAnneau(Direction direction, Position position); Position deploiementNord(Position position); Position deploiementEst(Position position); Position deploiementSud(Position position); Position deploiementOuest(Position position); bool estContigue(Position posPrecedent,Position posActuelle); }; #endif /* LOMBRIC_H_ */
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77 /* * Lombric.cpp * * Created on: 05-févr.-2010 * */ #include "Lombric.h" #include "Direction.h" #include "Pelouse.h" #include "Parcelle.h" #include "iostream.h" Lombric::Lombric():pelouse(*(new Pelouse())){ } Lombric::Lombric(Pelouse & _pelouse, Position _initPos, int _tailleInit) : } /* Lombric::Lombric(const Lombric & lombric):pelouse(lombric.pelouse){ t }*/ Lombric & Lombric::operator=(const Lombric & lombric){ ; } bool Lombric::pasSurCorps(Position anneau,int position){ } bool Lombric::grandi(Position pos){ } Lombric::~Lombric() { delete [] corps; } Pelouse & Lombric::getPelouse(){ return pelouse; } Position Lombric::getPosition(int i){ return corps[i]; } void Lombric::affiche(){ } void Lombric::affiche2(){ for(int i=0;i<tailleLombric;i++){ cout<<"["<<corps[i].ligne<<","<<corps[i].colonne<<"]"; } } void Lombric::deplacement(Direction direction){ } Position Lombric::deploiementAnneau(Direction direction, Position position){ } void Lombric::lombricSeNourri(Position newPosTete){ } Position Lombric::deploiementNord(Position position){ } Position Lombric::deploiementEst(Position position){ } Position Lombric::deploiementSud(Position position){ } Position Lombric::deploiementOuest(Position position){ } bool Lombric::estContigue(Position posPrecedent,Position posActuelle){ }
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43 /* * Pelouse.cpp * * Created on: 05-févr.-2010 * */ #include "Pelouse.h" #include "Parcelle.h" #include "Aliment.h" #include "Pelouse.h" #include <time.h> #include <iostream.h> #include "math.h" Pelouse::Pelouse(int ligne,int colonne,unsigned int pourcentAlim) :lignes(ligne),colonnes(colonne) { } Pelouse::~Pelouse() { // TODO Auto-generated destructor stub } void Pelouse::affiche(){ } Parcelle * Pelouse::getParcelle(int lignes,int colonnes){ return &pelouse[lignes][colonnes]; } Pelouse::Pelouse(const Pelouse & _pelouse) { } Pelouse & Pelouse::operator=(const Pelouse & _pelouse){ } bool Pelouse::verifPos( Position pos){ return ((( pos.ligne >=0 ) && ( pos.ligne <lignes))&& ((pos.colonne >=0 )&&( pos.colonne < colonnes))); }
Voilà je n'arrive pas a trouvé mon problème dans mon code Je suis censé afficher et faire jouer une balade qui utilise les classes Pelouse et Lombric, la pelouse se crée bien et j'arrive a l'afficher mais par contre une fois que je fais intervenir ma classe Lombric dans Balade ca ne fonctionne absolument plus je n'ai aucun affichage :s.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
25
26
27
28
29
30
31 /* * Pelouse.h * * Created on: 05-févr.-2010 * */ #ifndef PELOUSE_H_ #define PELOUSE_H_ #include "Parcelle.h" #include "Position.h" class Pelouse{ private: Parcelle * * pelouse; int lignes; int colonnes; int nbAliment; public: Pelouse(int ligne=10,int colonne=10,unsigned int pourcentAlim=10); Pelouse(const Pelouse & _pelouse); Pelouse & operator=(const Pelouse & _pelouse); inline int getLiPel()const{return lignes;} inline int getColPel()const{return colonnes;} inline int getStockAlim(){return nbAliment;} bool verifPos(Position pos); void affiche(); Parcelle * getParcelle(int lignes,int colonnes); virtual ~Pelouse(); }; #endif /* PELOUSE_H_ */
( je n'ai pas mis tout mon code complet juste le prototype des fonctions qui ne sont pas vraiment importante résoudre mon problème je pense)
Je pense que c'est un problème de pointeur mais je ne comprends pas du tout :s
Si quelqu'un saurait m'expliquer mon erreur ou mes erreurs :s