public override void Tourner(ref Barre barre, ref Table grille) { // Sauvegarde des précédents emplacements List<int> emplacements = new List<int>(); Barre b = new BarreL(); int precposition = position; foreach (var emp in barre.emplacement) { emplacements.Add(emp); } b.emplacement = emplacements; if (position == 0) { if (this.emplacement[0] - 9 > 0) { this.emplacement[0] -= 9; this.emplacement[2] += 9; this.emplacement[3] += 18; position++; } } else { if (this.emplacement[2] - 9 > 0 && this.emplacement[3] - 18 > 0) { this.emplacement[0] += 9; this.emplacement[2] -= 9; this.emplacement[3] -= 18; position = 0; } } // Vérification que le déménagement est correct if (grille.EmplacementDispo(this)) { grille.write(ref b.emplacement, this); } else { this.emplacement = b.emplacement; this.position = precposition; } }
// Pour faire descendre une barre //vérifier le débordement sur un coté public bool Descendre(Table grille) { 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] + 10; } // je verifie si tout est okay. Si oui, j'écris les nouveaux emplacement dans le tableau if (grille.EmplacementDispo(this)) { grille.write(ref precemplacement, this); this.posInitiale = false; return true; } else { // Sinon, je remets tout comme avant grace a la liste copié auparavant this.emplacement = precemplacement; this.bloquer = true; grille.checkLigne(); if (this.posInitiale) { MainWindow.main.Termine.Text = "Partie Terminée"; Partie.stop(); MainWindow.main.GameOver.Visibility = System.Windows.Visibility.Visible; MainWindow.main.ScoreNom.Visibility = Visibility.Collapsed; MainWindow.main.ScoreScore.Visibility = Visibility.Collapsed; MainWindow.main.ScoreNiveau.Visibility = Visibility.Collapsed; MainWindow.main.labelScore.Visibility = Visibility.Collapsed; MainWindow.main.labelScoreLevel.Visibility = Visibility.Collapsed; MainWindow.main.labelScoreNom.Visibility = Visibility.Collapsed; } return false; } }
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; }