Ejemplo n.º 1
0
 /// <summary>
 /// Signale à l'IA que le canon passé en paramètre a coulé un bateau.
 /// </summary>
 /// <param name="joueur">Joueur correspondant à l'IA</param>
 /// <param name="canon">Canon concerné</param>
 public static void SignalerCoule(int joueur, int canon)
 {
     IA.ResetCanon(canon);
     if (Joueur.ObtenirTailleSalve(joueur) > 1) // Si ce n'est pas le dernier canon encore utilisé, on le supprime afin de conserver les états de tout les autres canons encore utilisés
     {                                          // Pour éviter d'"oublier" un canon
         for (int i = canon; i < Bateau.NombreTypesBateaux - 1; i++)
         {
             IA.DerniersTirsX[i]     = IA.DerniersTirsX[i + 1];
             IA.DerniersTirsY[i]     = IA.DerniersTirsY[i + 1];
             IA.DerniersTirsCombo[i] = IA.DerniersTirsCombo[i + 1];
             IA.DirectionsTirs[i]    = IA.DirectionsTirs[i + 1];
         }
     }
 }
Ejemplo n.º 2
0
        /// <summary>
        /// Permet de jouer un tour en tant qu'IA
        /// </summary>
        /// <param name="joueur">Joueur concerné</param>
        public static void JouerIA(int joueur)
        {
            int x, y;

            int[,] salves = new int[Joueur.ObtenirTailleSalve(joueur), 2];
            for (int i = 0; i < salves.GetLength(0); i++)
            {
                IA.PositionIA(joueur, out x, out y, i);
                salves[i, 0] = x;
                salves[i, 1] = y;
            }

            for (int i = 0; i < salves.GetLength(0); i++)
            {
                x = salves[i, 0];
                y = salves[i, 1];
                Console.Write("L'ordinateur tire sur la cellule " + Grille.Lettres[y] + "" + (x + 1) + " ...");
                int[,] decouverte;
                bool coule = false;
                if (Bateau.Tirer(joueur, x, y, out coule) == true) // IA a touché
                {
                    IA.SignalerTouche(i);
                    Console.ForegroundColor = ConsoleColor.Red;
                    if (coule)
                    {
                        Console.WriteLine("L'ordinateur a coulé un navire !");
                        IA.SignalerCoule(joueur, i);
                        Joueur.ReglerTailleSalve(joueur, Joueur.ObtenirTailleSalve(joueur) - 1);
                    }
                    else
                    {
                        Console.WriteLine("L'ordinateur a touché un navire !");
                    }
                    Console.ResetColor();
                }
                else // IA n'a pas touché
                {
                    IA.SignalerRate(i);
                    Console.WriteLine("C'est un coup dans l'eau...");
                    decouverte       = Grille.ObtenirGrilleDecouverteJoueur(joueur);
                    decouverte[x, y] = (int)Grille.Cases.DECOUVERT_VIDE;
                }
            }
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Permet de joueur un tour en tant qu'humain
        /// </summary>
        /// <param name="joueur">Joueur concerné</param>
        public static void JouerHumain(int joueur)
        {
            int x, y;

            int[,] salves = new int[Joueur.ObtenirTailleSalve(joueur), 2];

            /*Console.WriteLine("Votre Grille:");
             * Grille.AfficherGrille(Grille.ObtenirGrilleJoueur(joueur));
             * Console.WriteLine("Ce que vous savez de la Grille de l'adversaire:");
             * Grille.AfficherGrille(Grille.ObtenirGrilleDecouverteJoueur(joueur));*/
            for (int i = 0; i < salves.GetLength(0); i++)
            {
                Console.Clear();
                Console.ForegroundColor = ConsoleColor.Blue;
                Console.WriteLine("==TOUR DU JOUEUR " + joueur + "=============");
                Console.ResetColor();
                string infoGrilles = "Votre Grille:                          Ce que vous savez de la grille de votre adversaire:";
                Console.WriteLine(infoGrilles);
                Grille.AfficherDeuxGrillesCoteACote(Grille.ObtenirGrilleJoueur(joueur), Grille.ObtenirGrilleDecouverteJoueur(joueur));
                Console.WriteLine("\n-------\nParamétrage du canon " + (i + 1) + "/" + salves.GetLength(0));
                Console.Write("Tirs paramétrés: ");
                Console.ForegroundColor = ConsoleColor.DarkYellow;
                for (int o = 0; o < i; o++)
                {
                    Console.Write(Grille.Lettres[salves[o, 1]] + "" + (salves[o, 0] + 1) + " ");
                }
                Console.WriteLine("");
                Console.ResetColor();
                DemanderPosition(joueur, out x, out y);
                salves[i, 0] = x;
                salves[i, 1] = y;
                Console.WriteLine("Un canon a été dirigé vers la cellule " + Grille.Lettres[y] + "" + (x + 1) + " ...");
            }
            Console.Clear();
            Console.WriteLine("------------------------");
            Console.WriteLine("Mise à feu des canons...");
            for (int i = 0; i < salves.GetLength(0); i++)
            {
                x = salves[i, 0];
                y = salves[i, 1];
                Console.Write("Tir sur la cellule " + Grille.Lettres[y] + "" + (x + 1) + " ...");
                bool coule = false;
                if (Bateau.Tirer(joueur, x, y, out coule) == true) // le joueur a touché
                {
                    if (coule == false)
                    {
                        Console.ForegroundColor = ConsoleColor.Red;
                        Console.WriteLine("Vous avez touché un navire !");
                        Console.ResetColor();
                    }
                    else
                    {
                        Console.ForegroundColor = ConsoleColor.Red;
                        Console.WriteLine("Un bateau a été coulé.");
                        Console.ResetColor();
                        Joueur.ReglerTailleSalve(joueur, Joueur.ObtenirTailleSalve(joueur) - 1);
                    }
                }
                else // le joueur n'a pas touché
                {
                    Console.WriteLine("C'est un coup dans l'eau...");
                }
            }
        }