public bool Gauche(ref Table grille) { // Je vérifie qu'on essaye pas de deplacer un objet non bloqué if (!this.bloquer) { bool placementvalide = grille.EmplacementDispo(this); List<int> precemplacement = new List<int>(); for (int i = 0; i < this.emplacement.Count; i++) { // Je copie la liste des emplacement dans la barre dans une liste afin de les garder en mémoire en cas de Fail precemplacement.Add(this.emplacement[i]); // J'effectue le deplacement sur la vrai liste this.emplacement[i] = this.emplacement[i] - 1; } // je verifie si tout est okay. Si oui, j'écris les nouveaux emplacement dans le tableau if (grille.EmplacementDispo(this) && grille.DepacementLargeur(this, precemplacement)) { grille.write(ref precemplacement, this); return true; } else { // Sinon, je remets tout comme avant grace a la liste copié auparavant this.emplacement = precemplacement; return false; } } return false; }