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 sud tant qu'il y a un voisin au sud
        /// </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 ParcourirSud(ref char lettre, char[,] carte,
                                         int[,] frontieres, int x, int y)
        {
            int suivant = y + 1;

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