public void Resoudre() { _ihm.AfficherRegles(_bdRegles.Regles); bool resteRegles = true; BaseRegles reglesDispo = new BaseRegles { Regles = new List <Regle>(_bdRegles.Regles) }; _bdFaits.RaZ(); while (resteRegles) { Tuple <Regle, int> regleIns = TrouverDispo(reglesDispo); if (regleIns != null) { IFait faitIns = regleIns.Item1.These; faitIns.DefinirNiveau(regleIns.Item2 + 1); _bdFaits.Ajouter(faitIns); reglesDispo.Supprimer(regleIns.Item1); } else { resteRegles = false; } } _ihm.AfficherFaits(_bdFaits.Faits); }
public static void Main(string[] args) { //Utilisables.JouerMusiqueIntro(); int[,] plateau = new int[4, 4]; // variable représentant l'état du plateu de jeux pendant la partie int[] piecesJouables = new int[16]; // variable contenant l'identifiant des pieces encore disponibles //int[] piecesJouees = new int[16]; // variable contenant l'identifiant des pieces déjà placées sur le plateau IHM.InitialiserGraphiques(); IHM.AfficherIntro(); //============================================================================================================ // Affichage du menu principal du jeu //============================================================================================================ int boutonCourantMenu = 1; // Initialisation du bouton courant du menu bool menu = true; // Boucle permettant d'afficher le menu de manière interactive while (menu) { IHM.AfficherMenu(boutonCourantMenu); System.ConsoleKeyInfo Bouton = Console.ReadKey(); switch (Bouton.Key) { case ConsoleKey.LeftArrow: case ConsoleKey.UpArrow: boutonCourantMenu = (boutonCourantMenu -= 1) % 3; break; case ConsoleKey.RightArrow: case ConsoleKey.DownArrow: boutonCourantMenu = (boutonCourantMenu += 1) % 3; break; case ConsoleKey.Enter: if (boutonCourantMenu == 2) { Environment.Exit(0); // Bouton Quitter } else if (boutonCourantMenu == 1) { menu = false; // Bouton Jouer } else { Console.Clear(); IHM.AfficherRegles(); } // Bouton Règles break; } /*// Définition des touches permettants de parcourir les boutons du menu * if (Bouton.Key == ConsoleKey.LeftArrow) boutonCourantMenu = (boutonCourantMenu -= 1) % 3; * else if (Bouton.Key == ConsoleKey.RightArrow) boutonCourantMenu = (boutonCourantMenu += 1) % 3; * * // Action à réaliser quand un bouton est selectionné * else if (Bouton.Key == ConsoleKey.Enter) * { * if (boutonCourantMenu == 2) Environment.Exit(0); // Bouton Quitter * else if (boutonCourantMenu == 1) menu = false; // Bouton Jouer * else { Console.Clear(); IHM.AfficherRegles(); } // Bouton Règles * }*/ if (boutonCourantMenu < 0) { boutonCourantMenu = Math.Abs(boutonCourantMenu + 3); // Permet de réaliser le "modulo négatif" } } bool jouer = true; while (jouer) { //============================================================================================================ // Affichage du menu de chargement de partie //============================================================================================================ int BoutonChargerCourant = 1; bool nouveauJeux = true; bool charger = false; while (nouveauJeux) // Menu de jeu, charger, nouvelle partie { IHM.AfficherEcranChargement(BoutonChargerCourant); System.ConsoleKeyInfo Bouton = Console.ReadKey(); switch (Bouton.Key) { case ConsoleKey.LeftArrow: case ConsoleKey.UpArrow: BoutonChargerCourant = (BoutonChargerCourant -= 1) % 2; break; case ConsoleKey.RightArrow: case ConsoleKey.DownArrow: BoutonChargerCourant = (BoutonChargerCourant += 1) % 2; break; case ConsoleKey.Enter: if (BoutonChargerCourant == 0) { nouveauJeux = false; } else { charger = true; nouveauJeux = false; } break; } /* * if (Bouton.Key == ConsoleKey.LeftArrow) BoutonChargerCourant = (BoutonChargerCourant -= 1) % 2; * else if (Bouton.Key == ConsoleKey.RightArrow) BoutonChargerCourant = (BoutonChargerCourant += 1) % 2; * else if (Bouton.Key == ConsoleKey.Enter) * { * if (BoutonChargerCourant == 0) nouveauJeux = false; * else * { * charger = true; * nouveauJeux = false; * } * } */ //BoutonChargerCourant = BoutonChargerCourant < 0 ? Math.Abs(BoutonChargerCourant + 2) % 2 : BoutonChargerCourant; if (BoutonChargerCourant < 0) { BoutonChargerCourant = Math.Abs(BoutonChargerCourant + 2); } } //============================================================================================================ string nomFichier = "../../Sauvegardes\\Z_NouvellePartie.txt"; //============================================================================================================ // Création de la partie chargée ou non //============================================================================================================ if (charger == true) // Si on charge un sauvegarde { nomFichier = IHM.AfficherPageChargement(); } // Initialisation du tableau et des pieces pour la partie Utilisables.InitialiserPartie(nomFichier, ref plateau, ref piecesJouables); IHM.InitialiserEcranJeux(); int caseCourante = -1; int pieceCourante = -1; IHM.AfficherEcranJeux(plateau, piecesJouables, caseCourante, pieceCourante); int tour = 0; bool gagner = false; //============================================================================================================ // Départ de la Boucle de jeux pour un Player vs Ordi //============================================================================================================ bool sauvegarde = false; bool joueur = true; int[] piecesVides = new int[] { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; while (!gagner) { if (piecesJouables.SequenceEqual(piecesVides)) { IHM.AfficherEgalite(); } // Tour de l'ordinateur if (tour % 2 == 0) { int idPiece = Utilisables.ChoisirPiece(piecesJouables, sauvegarde, plateau); IHM.AfficherEcranJeux(piecesJouables); sauvegarde = IA.PoserPiece(out int position, idPiece, plateau); IHM.AfficherEcranJeux(plateau); gagner = Utilisables.TesterVictoire(idPiece, position, plateau); } // Tour du joueur else { int idPiece = IA.ChoisirPiece(piecesJouables); sauvegarde = false; IHM.AfficherEcranJeux(piecesJouables); sauvegarde = Utilisables.PoserPiece(out int position, idPiece, plateau, sauvegarde, piecesJouables); IHM.AfficherEcranJeux(plateau); gagner = Utilisables.TesterVictoire(idPiece, position, plateau); if (gagner) { joueur = false; } } tour++; } //IHM.AnimationVictoire(); IHM.AfficherEcranVictoire(joueur); jouer = IHM.AfficherRejouer(); } //Console.Read(); }