Bonjour,
je dois (à mon grand désespoir) rendre un TP en C++, et on a du mal à être copain tous les deux.
Mon code (.h) :
Code bis (.cpp)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 class Case { public: bool Occupe; int IdentifiantJoueur; double Coefficient; int Position; stack<int> EtatsForUndo; Case(); Case(bool oqp, int idJoueur, double coef, int pos); }; class Virus { private: int TaillePlateau; int CalculerPossession(int color); public: Case *plateau[]; Virus(int taille); bool VerifierValiditeCoup(int x, int y, int color); int AlphaBeta(int depth, int alpha, int beta, int color, list<Case> & meilleursCoups); void PlayMove(Case c, int color, bool savePositions); void UndoMove(); void FindLegalMoves(list<Case> & moves, int color); int Evaluate(int color); void ComblerEspaces(int color); int GetTaillePlateau(); };
J'initialise la taille du plateau à 7.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 Case::Case(bool oqp, int idJoueur, double coef, int pos) :Occupe(oqp),IdentifiantJoueur(idJoueur),Coefficient(coef), Position(pos) { } Case::Case() :Occupe(false), IdentifiantJoueur(0), Coefficient(1.0), Position(0) { } Virus::Virus(int taille) :TaillePlateau(taille) { *plateau = new Case[TaillePlateau*TaillePlateau]; for(int i = 0; i < TaillePlateau*TaillePlateau; i++) plateau[i] = new Case(false, VIDE, 1.0, i); plateau[0] = new Case(true, HUMAIN, 1.0, 0); plateau[TaillePlateau-1] = new Case(true, IA, 1.0, TaillePlateau-1); plateau[TaillePlateau*TaillePlateau -1] = new Case(true, HUMAIN, 1.0, TaillePlateau*TaillePlateau -1); plateau[TaillePlateau*TaillePlateau -TaillePlateau] = new Case(true, IA, 1.0, TaillePlateau*TaillePlateau -TaillePlateau); } ...
Résultat, quand j'initialise chaque case de mon tableau, rendu à partir de 43, il s'amuse à me changer mes valeurs à l'indice 1 du tableau en même temps
i =42
i=43
Code : Sélectionner tout - Visualiser dans une fenêtre à part plateau[1] 0x00343c18 {Occupe=false IdentifiantJoueur=0 Coefficient=1.0000000000000000 ...} Case *
i=44
Code : Sélectionner tout - Visualiser dans une fenêtre à part plateau[1] 0x00343c18 {Occupe=true IdentifiantJoueur=0 Coefficient=1.0000000000000000 ...} Case *
Ces valeurs barbares cassent le fonctionnement de mon programme de TP, et je ne comprends pas pourquoi cela se passe comme ça...
Code : Sélectionner tout - Visualiser dans une fenêtre à part plateau[1] 0x00343c18 {Occupe=true IdentifiantJoueur=3443232 Coefficient=1.0000000000000000 ...} Case *
Merci pour votre aide !
Partager