Esempio n. 1
0
        /// <summary>
        /// Algorithme de décryptage, il agit unité par unité et applique la
        /// lettre à l'unité mais aussi à tous ses voisins. Il détecte une
        /// le commencement d'une nouvelle parcelle en vérifiant si les
        /// voisins sont nulls eux aussi. Il procède par balayage de haut en
        /// bas et de droite à gauche.
        /// </summary>
        /// <param name="carte">Tableau de la carte en référence</param>
        /// <param name="frontieres">Tableau des frontières</param>
        /// <param name="x">Coordonnée x de l'unité</param>
        /// <param name="y">Coordonnée y de l'unité</param>
        /// <param name="ASCII">Code ASCII en ref(prochaine lettre)</param>
        private static void  AlgorithmeDecryptage(ref char[,] carte,
                                                  int[,] frontieres, int x, int y, ref int ASCII)
        {
            (bool, bool, bool, bool)NordOuestSudEst =
                Decrypteur.LectureBinaireVoisins(frontieres[y, x]);
            char lettre = '*';

            // Vérification des lettres des voisins
            // lettre change de valeur si une unité voisine n'est pas nulle
            if (NordOuestSudEst.Item1)
            {
                Decrypteur.ParcourirNord(ref lettre, carte, frontieres, x, y);
            }
            if (NordOuestSudEst.Item2)
            {
                Decrypteur.ParcourirOuest(ref lettre, carte, frontieres, x, y);
            }
            if (NordOuestSudEst.Item3)
            {
                Decrypteur.ParcourirSud(ref lettre, carte, frontieres, x, y);
            }
            if (NordOuestSudEst.Item4)
            {
                Decrypteur.ParcourirEst(ref lettre, carte, frontieres, x, y);
            }
            Decrypteur.AppliquerLesLettres(ref carte, NordOuestSudEst,
                                           ref ASCII, lettre, x, y);
        }
Esempio n. 2
0
 /// <summary>
 /// Parcourir les unités au nord tant qu'il y a un voisin au nord
 /// </summary>
 /// <param name="lettre">lettre</param>
 /// <param name="carte">carte</param>
 /// <param name="frontieres">tableau des frontières</param>
 /// <param name="x">coordonnées x de l'unité</param>
 /// <param name="y">coordonnées y de l'unité</param>
 private static void ParcourirNord(ref char lettre, char[,] carte,
                                   int[,] frontieres, int x, int y)
 {
     (bool, bool, bool, bool)NordOuestSudEst =
         Decrypteur.LectureBinaireVoisins(frontieres[y, x]);
     if (NordOuestSudEst.Item1)
     {
         if (carte[y - 1, x] != '*')
         {
             lettre = carte[y - 1, x];
         }
         Decrypteur.ParcourirNord(ref lettre, carte, frontieres, x,
                                  y - 1);
     }
 }
Esempio n. 3
0
        /// <summary>
        /// Parcourir les unités à l'est tant qu'il y a un voisin à l'est
        /// </summary>
        /// <param name="lettre">lettre</param>
        /// <param name="carte">carte</param>
        /// <param name="frontieres">tableau des frontières</param>
        /// <param name="x">coordonnées x de l'unité</param>
        /// <param name="y">coordonnées y de l'unité</param>
        private static void ParcourirEst(ref char lettre, char[,] carte,
                                         int[,] frontieres, int x, int y)
        {
            int suivant = x + 1;

            (bool, bool, bool, bool)NordOuestSudEst =
                Decrypteur.LectureBinaireVoisins(frontieres[y, x]);
            if (NordOuestSudEst.Item4)
            {
                if (carte[y, x + 1] != '*')
                {
                    lettre = carte[y, x + 1];
                }
                Decrypteur.ParcourirEst(ref lettre, carte, frontieres, suivant,
                                        y);
            }
        }