예제 #1
0
        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;
            }
        }
예제 #2
0
        // 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;
            }
        }
예제 #3
0
        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;
        }