Je n'arrive pas à comprendre le comportement suivant
- Code: Tout sélectionner
public void playNAleat(int n,Partie p){
int r1=1;
int c1=1;
Position p1=new Position(r1,c1);
ArrayList part=new ArrayList();
for(int k=0;k<n;k++){
part.add(p);
}
for(int k=0;k<n;k++){
Partie temp=part.get(k);
ArbreGo tree=new ArbreGo(p1,temp.g);
System.out.println(tree.endGameAleat(temp));
}
}
Je commence par stocker n partie dans une array list.
Dans un second temps, je fais jouer ces partie de façon aléatoire
Sauf que voilà, il semblerait que j'ai les même tirage à chaque fois.
Par exemple pour n=2
1 2 3 4 5 6 7 8 9
1 . O O O X X X X X
2 X X X O X X X X X
3 X X . O X X X X X
4 X . X X X X X X X
5 X X X X X X X X X
6 . X X X X X X X X
7 X X X X X X X X X
8 X X X X X X X X X
9 X X X X X X X X X
1
1 2 3 4 5 6 7 8 9
1 . O O O X X X X X
2 X X X O X X X X X
3 X X O O X X X X X
4 X . X X X X X X X
5 X X X X X X X X X
6 . X X X X X X X X
7 X X X X X X X X X
8 X X X X X X X X X
9 X X X X X X X X X
1
On remarquera qu'une seule intersection vide se remplit.
En réalité je me dis...la première partie aléatoire se joue comme il faut...mais ensuite, comme les références de bases sont sur la même partie, il ne reprends pas du début mais comme le partie précédente a été laissé.
J'ai pu confirmer ce problème en spécifiant bien une nouvelle instance de classe partie et là ça marche comme il faut...sauf que si je fais ça je ne pourrais m'en servir que pour le premier coup...le but est de pouvoir dérouler plusieurs partie aléatoire à partir d'une même partie...
C'est un vrai casse tête ahah
En gros il semblerait que
si je fais
Partie p1=new Partie(9);
Partie p2=p1;
Toute opération sur p1 modifiera p2 aussi; et je voudrais éviter ça...mais je ne sais vraiment pas comment faire x) :mur: