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 : 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();
};
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
 
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);
}
 
...
J'initialise la taille du plateau à 7.

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
Code : Sélectionner tout - Visualiser dans une fenêtre à part
plateau[1]	0x00343c18 {Occupe=false IdentifiantJoueur=0 Coefficient=1.0000000000000000 ...}	Case *
i=43
Code : Sélectionner tout - Visualiser dans une fenêtre à part
plateau[1]	0x00343c18 {Occupe=true IdentifiantJoueur=0 Coefficient=1.0000000000000000 ...}	Case *
i=44
Code : Sélectionner tout - Visualiser dans une fenêtre à part
plateau[1]	0x00343c18 {Occupe=true IdentifiantJoueur=3443232 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...

Merci pour votre aide !