Пример #1
0
 /// <summary>
 /// Sauvegarde les données de la partie en cours dans un fichier texte de sauvegarde
 /// </summary>
 public static void Sauvegarder()
 {
     if (File.Exists(Sauvegarde.NomFichier()) && Sauvegarde.DemandeEffacerAnciennePartie() == false)
     {
         NomFichierIndex = Sauvegarde.RecupererDernierIndexSauvegarde() + 1;
     }
     // Sauvegarde positions J1
     string[] lignes = Sauvegarde.ConvertirObjetEnLigne(new string[0], Bateau.ObtenirPositionBateauxJoueur(1));
     // Sauvegarde vies J1
     lignes = Sauvegarde.ConvertirObjetEnLigne(lignes, Bateau.ObtenirVieBateauxJoueur(1));
     // Sauvegarde positions J2
     lignes = Sauvegarde.ConvertirObjetEnLigne(lignes, Bateau.ObtenirPositionBateauxJoueur(2));
     // Sauvegarde vies J2
     lignes = Sauvegarde.ConvertirObjetEnLigne(lignes, Bateau.ObtenirVieBateauxJoueur(2));
     // Sauvegarde grille j1
     lignes = Sauvegarde.ConvertirObjetEnLigne(lignes, Grille.ObtenirGrilleJoueur(1));
     // Sauvegarde grille decouverte J1
     lignes = Sauvegarde.ConvertirObjetEnLigne(lignes, Grille.ObtenirGrilleDecouverteJoueur(1));
     // Sauvegarde grille J2
     lignes = Sauvegarde.ConvertirObjetEnLigne(lignes, Grille.ObtenirGrilleJoueur(2));
     // Sauvegarde grille decouverte J2
     lignes = Sauvegarde.ConvertirObjetEnLigne(lignes, Grille.ObtenirGrilleDecouverteJoueur(2));
     // Sauvegarde niveau
     lignes = lignes.Concat(new string[] { ((int)Jeu.NiveauJeu).ToString() }).ToArray();
     File.WriteAllLines(Sauvegarde.NomFichier(), lignes);
     Console.Clear();
     Console.WriteLine("======= Sauvegarder une partie ===");
     Console.ForegroundColor = ConsoleColor.Green;
     Console.WriteLine("Votre partie a été sauvegardée dans le fichier " + Sauvegarde.NomFichier());
     Console.ResetColor();
     Console.WriteLine("-- Appuyez sur une touche pour continuer --");
     Console.ReadKey(false);
 }
Пример #2
0
        /// <summary>
        /// Affiche et gère l'écran de paramétrage d'une nouvelle partie
        /// </summary>
        public static void MenuDemarrerNouvellePartie()
        {
            Console.Clear();
            Joueur.Start();
            // On met à jour l'index de sauvegarde pour éviter d'écraser une ancienne partie
            Sauvegarde.NomFichierIndex = Sauvegarde.RecupererDernierIndexSauvegarde() + 1;


            // Initialisation des grilles
            Grille.GrilleJ1           = new int[Grille.LargeurGrille, Grille.HauteurGrille];
            Grille.GrilleDecouverteJ1 = new int[Grille.LargeurGrille, Grille.HauteurGrille];

            Grille.GrilleJ2           = new int[Grille.LargeurGrille, Grille.HauteurGrille];
            Grille.GrilleDecouverteJ2 = new int[Grille.LargeurGrille, Grille.HauteurGrille];

            // Initialisation des données des bateaux des joueurs
            Bateau.PositionBateauxJ1 = new int[Bateau.NombreTypesBateaux, 4];
            Bateau.VieBateauxJ1      = new int[Bateau.NombreTypesBateaux];

            Bateau.PositionBateauxJ2 = new int[Bateau.NombreTypesBateaux, 4];
            Bateau.VieBateauxJ2      = new int[Bateau.NombreTypesBateaux];

            Bateau.PlacerBateauxAuHasard(1);
            Bateau.PlacerBateauxAuHasard(2);

            //TODO: modifier ce code si on souhaite ajouter un mode JCJ
            Console.WriteLine("======= Nouvelle partie =======");
            Grille.AfficherGrille(Grille.GrilleJ1);
            Console.WriteLine("-------------------------------");
            ConsoleKey key = default(ConsoleKey);

            do
            {
                if (key != default(ConsoleKey))
                {
                    Console.ForegroundColor = ConsoleColor.Red;
                }
                Console.WriteLine("Etes-vous satisfait de ce placement ?");
                Console.ForegroundColor = ConsoleColor.Yellow;
                Console.WriteLine("(O)ui | N(on)");
                Console.ResetColor();
                key = Console.ReadKey(false).Key;
            }while (key != ConsoleKey.O && key != ConsoleKey.N);
            Program.ViderTampon();
            if (key == ConsoleKey.O)
            {
                Jeu.DeroulementPartie();
            }
            else
            {
                Jeu.MenuDemarrerNouvellePartie();
            }
        }
Пример #3
0
        /// <summary>
        /// Affiche et gère le déroulement d'une partie
        /// </summary>
        public static void DeroulementPartie()
        {
            int joueur = 1;

            IA.Reset();
            while (true)
            {
                Console.Clear();
                Joueur.Jouer(joueur);
                if (Joueur.aPerdu(Joueur.ObtenirAutreJoueur(joueur)) == true)
                {
                    Console.ForegroundColor = ConsoleColor.Green;
                    Console.WriteLine("Le joueur " + joueur + " a gagné !!!");
                    Console.ResetColor();
                    Console.WriteLine("-- Appuyez sur une touche pour continuer --");
                    Console.ReadKey(false);
                    Jeu.MenuPrincipal();
                }
                joueur = Joueur.ObtenirAutreJoueur(joueur);
                Console.WriteLine("-- Appuyez sur une touche pour passer au tour de l'autre joueur --");
                Console.ReadKey(false);
                Console.Clear();
                Joueur.Jouer(joueur);
                if (Joueur.aPerdu(Joueur.ObtenirAutreJoueur(joueur)) == true)
                {
                    Console.ForegroundColor = ConsoleColor.Red;
                    Console.WriteLine("Le joueur " + joueur + " a gagné :'(");
                    Console.ResetColor();
                    Console.WriteLine("-- Appuyez sur une touche pour continuer --");
                    Console.ReadKey(false);
                    Jeu.MenuPrincipal();
                }
                joueur = Joueur.ObtenirAutreJoueur(joueur);
                if (Joueur.DemanderContinuer() == false)
                {
                    Sauvegarde.Sauvegarder();
                    Jeu.MenuPrincipal();
                }
            }
        }
Пример #4
0
        /// <summary>
        /// Charge les données depuis le fichier de sauvegarde
        /// </summary>
        public static void Charger()
        {
            string[] lignes = File.ReadAllLines(Sauvegarde.NomFichier());
            int      index  = 0;

            int[] data;
            // Chargement de la position des bateaux du joueur 1
            for (int i = 0; i < Bateau.NombreTypesBateaux; i++)
            {
                data = ConvertirLigneEnTableauEntier(lignes[i]);
                for (int u = 0; u < data.Length; u++)
                {
                    Bateau.PositionBateauxJ1[i, u] = data[u];
                }
            }
            index += Bateau.NombreTypesBateaux;
            // Chargement de la vie des bateaux du joueur 1
            Bateau.VieBateauxJ1 = ConvertirLigneEnTableauEntier(lignes[index]);
            index++;
            // Chargement de la position des bateaux du joueur 2
            for (int i = 0; i < Bateau.NombreTypesBateaux; i++)
            {
                data = ConvertirLigneEnTableauEntier(lignes[index + i]);
                for (int u = 0; u < data.Length; u++)
                {
                    Bateau.PositionBateauxJ2[i, u] = data[u];
                }
            }
            index += Bateau.NombreTypesBateaux;
            // Chargement de la vie des bateaux du joueur 2
            Bateau.VieBateauxJ2 = ConvertirLigneEnTableauEntier(lignes[index]);
            index++;
            // Chargement de la grille du joueur 1
            for (int i = 0; i < Grille.GrilleJ1.GetLength(0); i++)
            {
                data = ConvertirLigneEnTableauEntier(lignes[index + i]);
                for (int u = 0; u < data.Length; u++)
                {
                    Grille.GrilleJ1[i, u] = data[u];
                }
            }
            index += Grille.GrilleJ1.GetLength(0);
            // Chargement de la grille de découverte du joueur 1
            for (int i = 0; i < Grille.GrilleDecouverteJ1.GetLength(0); i++)
            {
                data = ConvertirLigneEnTableauEntier(lignes[index + i]);
                for (int u = 0; u < data.Length; u++)
                {
                    Grille.GrilleDecouverteJ1[i, u] = data[u];
                }
            }
            index += Grille.GrilleDecouverteJ1.GetLength(0);
            // Chargement de la grille du joueur 2
            for (int i = 0; i < Grille.GrilleJ2.GetLength(0); i++)
            {
                data = ConvertirLigneEnTableauEntier(lignes[index + i]);
                for (int u = 0; u < data.Length; u++)
                {
                    Grille.GrilleJ2[i, u] = data[u];
                }
            }
            index += Grille.GrilleJ2.GetLength(0);
            // Chargement de la grille de découverte du joueur 2
            for (int i = 0; i < Grille.GrilleDecouverteJ2.GetLength(0); i++)
            {
                data = ConvertirLigneEnTableauEntier(lignes[index + i]);
                for (int u = 0; u < data.Length; u++)
                {
                    Grille.GrilleDecouverteJ2[i, u] = data[u];
                }
            }
            index += Grille.GrilleDecouverteJ2.GetLength(0);
            // Chargement du niveau de difficulté
            Jeu.NiveauJeu = (Jeu.Niveau)Convert.ToInt32(lignes[index]);
            index++;
            // Gestion du nombre de tirs par salves
            for (int i = 0; i < Bateau.NombreTypesBateaux; i++)
            {
                if (Bateau.VieBateauxJ1[i] <= 0)
                {
                    Joueur.TailleSalveJ2--;
                }
                if (Bateau.VieBateauxJ2[i] <= 0)
                {
                    Joueur.TailleSalveJ1--;
                }
            }
        }
Пример #5
0
        /// <summary>
        /// Affichage et gestion de l'interaction du joueur du menu de chargement d'une partie sauvegardée
        /// </summary>
        public static void MenuChargerPartie()
        {
            Console.Clear();
            Joueur.Start();
            Console.WriteLine("======= Charger une partie =======");
            string[] sauvegardes = Sauvegarde.RecupererFichiersSauvegarde();
            if (sauvegardes.Length <= 0)
            {
                Console.WriteLine("Aucune partie sauvegardée n'a été trouvée.");
                Console.WriteLine("Appuyez sur une touche pour continuer...");
                Console.ReadKey(false);
                Jeu.MenuPrincipal();
                return;
            }
            Console.WriteLine("Veuillez sélectionner une sauvegarde ci-dessous");
            Console.ForegroundColor = ConsoleColor.Yellow;
            for (int i = 0; i < sauvegardes.Length; i++)
            {
                Console.WriteLine("" + (i + 1) + ")" + sauvegardes[i]);
            }
            Console.ResetColor();
            int index = -1;

            do
            {
                try
                {
                    index = Convert.ToInt32(Console.ReadLine());
                    index = index - 1;
                    if (index < 0 || index >= sauvegardes.Length)
                    {
                        index = -1;
                    }
                }
                catch (Exception)
                {
                    index = -1;
                }
                if (index == -1)
                {
                    Console.ForegroundColor = ConsoleColor.Red;
                    Console.WriteLine("Ce n'est pas une sélection valide. Veuillez réessayer.");
                    Console.ResetColor();
                }
            }while (index == -1);

            Sauvegarde.ReglerFichierSauvegarde(sauvegardes[index]);

            Console.Clear();
            Console.WriteLine("======= Charger une partie =======");
            try
            {
                Sauvegarde.Charger();
            }
            catch (Exception e)
            {
                Console.ForegroundColor = ConsoleColor.Red;
                Console.WriteLine("Impossible de charger la partie. Etes-vous sûr d'avoir un fichier de sauvegarde existant ?");
                Console.ResetColor();
                Console.WriteLine("Appuyez sur une touche pour continuer...");
                Console.ReadKey(false);
                Jeu.MenuPrincipal();
            }
            Console.ForegroundColor = ConsoleColor.Green;
            Console.WriteLine("La partie a été chargée !");
            Console.ResetColor();
            Console.WriteLine("Appuyez sur une touche pour continuer...");
            Console.ReadKey(false);
            Jeu.DeroulementPartie();
        }