Пример #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);
        }
Пример #2
0
        /// <summary>
        /// Parcourir les unités à l'ouest tant qu'il y a un voisin à l'ouest
        /// </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 ParcourirOuest(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.Item2)
            {
                if (carte[y, x - 1] != '*')
                {
                    lettre = carte[y, x - 1];
                }
                Decrypteur.ParcourirOuest(ref lettre, carte, frontieres, suivant,
                                          y);
            }
        }