/// <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); }
/// <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); } }