Ejemplo n.º 1
0
        /// <summary>
        /// Gère le tir sur la matrice et retourne un indicateur de ce qui s'est passé
        /// </summary>
        /// <param name="x"></param>
        /// <param name="y"></param>
        /// <returns></returns>
        public int Tirer(int x, int y)
        {
            int  retour = 0;//0:raté, 1:déjàtiré, 2:touché, 3:couler
            char maCase = matrice[x, y];

            if (maCase == '-')//tir dans l'eau
            {
                retour        = 0;
                matrice[x, y] = 'v';
            }
            else if (maCase == 'v' || maCase == 'X' || maCase == 'O')//tir déjà effectué
            {
                retour = 1;
            }
            if (maCase == 'H')//tir sur bateau
            {
                retour        = 2;
                matrice[x, y] = 'X';

                Bateau b = GetBateauByCoords(x, y);
                b.Vies--;
                if (b.Vies == 0)
                {
                    retour = 3;
                    BateauCoulé(b);
                }
            }

            return(retour);
        }
Ejemplo n.º 2
0
 /// <summary>
 /// Fonction utilisée en interne pour remplacer les bateaux coulés par le marqueur adapté
 /// </summary>
 /// <param name="b"></param>
 private void BateauCoulé(Bateau b)
 {
     if (b.Horizontal)
     {
         //alors on le dessine
         for (uint i = b.Y; i < (b.Y + b.Taille); i++)
         {
             matrice[b.X, i] = 'O';
         }
     }
     else
     {
         //alors on le dessine
         for (uint i = b.X; i < (b.X + b.Taille); i++)
         {
             matrice[i, b.Y] = 'O';
         }
     }
 }
        /// <summary>
        /// Structuration du code :
        /// Cette fonction gère l'ajout des bateaux dans une carte
        /// </summary>
        /// <param name="b"></param>
        /// <param name="m"></param>
        public void Setup(Bateau b,Carte m)
        {
            bool ValideBoat = false, valideInput = false, exit = false;
            string input = "";
            string[] array;
            int x = 0, y = 0;
            do
            {
                resetView();
                Console.WriteLine(@"Création d'un bateau:");

                //coordonnées
                do
                {
                    valideInput = false;
                    input = AskUser("Quelles sont les coordonnées de son point haut-Gauche?\n(format: '1-a')");

                    if (TestCoords(input, m))
                    {
                        array = input.Split('-', StringSplitOptions.None);
                        Int32.TryParse(array[0], out x);
                        y = ((int)array[1].ToCharArray()[0]) - 96;
                        b.X = ((uint)x)-1;
                        b.Y = ((uint)y)-1;
                        valideInput = true;
                    }

                    if (valideInput == false)
                    {
                        resetView();

                        Console.WriteLine("Valeur invalide (" + x + "-"  + y + "), recommencez.");
                    }

                } while (!valideInput);

                //Longueur
                resetView();
                Console.WriteLine(@"Création d'un bateau:");
                do
                {
                    valideInput = false;
                    input = AskUser("Quelle est sa longueur?\n(valeur de 2 à 5)");
                    int length;
                    if (Int32.TryParse(input, out length))
                    {
                        if (length > 1 && length < 6)
                        {
                            valideInput = true;
                            b.Vies = b.Taille = length;
                        }

                    }

                    if (valideInput == false)
                    {
                        resetView();
                        Console.WriteLine("Valeur invalide, recommencez.");
                    }
                } while (!valideInput);

                //axe
                resetView();
                Console.WriteLine(@"Création d'un bateau:");
                do
                {
                    valideInput = false;
                    input = AskUser(@"Est-il horizontal?\n(format: o (oui) ou n (non))");
                    if (input == "o" || input == "n")
                    {
                        valideInput = true;
                        b.Horizontal = (input == "o") ? true : false;
                    }

                    if (valideInput == false)
                    {
                        resetView();
                        Console.WriteLine("Valeur invalide, recommencez.");
                    }
                } while (!valideInput);

                resetView();
                Console.WriteLine(@"Création d'un bateau:");

                ValideBoat = m.AddBateau(b);
                if (ValideBoat) exit = true;
                else
                {
                    do
                    {
                        valideInput = false;
                        input = AskUser("Le bateau ne peut être inséré au plateau avec ces paramêtres, voulez vous réessayer?\n(format: o(oui) ou n(non))");
                        if (input == "o" || input == "n")
                        {
                            valideInput = true;
                            exit = (input == "n") ? true : false;

                            if (!exit)
                                Console.WriteLine("\nOn recommence.");
                        }

                        if (valideInput == false)
                            Console.WriteLine(@"Valeur invalide, recommencez.");
                    } while (!valideInput);
                }

            } while (!exit);
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Essaie d'ajouter le bateau mis en paramêtre. S'il y arrive, retourne Vrai, sinon Faux
        /// </summary>
        /// <param name="b"></param>
        /// <returns></returns>
        public bool AddBateau(Bateau b)
        {
            int matriceTaille = matrice.GetLength(0);


            if (b.Horizontal)
            {
                //Si le bateau ne sors pas de la map
                if (b.Y < 0 || b.Y + b.Taille - 1 > (matriceTaille - 1))
                {
                    return(false);
                }
                if (b.X < 0 || b.X > (matriceTaille - 1))
                {
                    return(false);
                }

                //si son espace n'est pas occupé
                for (uint i = b.Y; i < (b.Y + b.Taille); i++)
                {
                    if (matrice[b.X, i] != '-')
                    {
                        return(false);
                    }
                }

                //alors on le dessine
                for (uint i = b.Y; i < (b.Y + b.Taille); i++)
                {
                    matrice[b.X, i] = 'H';
                }
            }
            else
            {
                //Si le bateau ne sors pas de la map
                if (b.X < 0 || b.X + b.Taille - 1 > (matriceTaille - 1))
                {
                    return(false);
                }
                if (b.Y < 0 || b.Y > (matriceTaille - 1))
                {
                    return(false);
                }

                //si son espace n'est pas occupé
                for (uint i = b.X; i < (b.X + b.Taille); i++)
                {
                    if (matrice[i, b.Y] != '-')
                    {
                        return(false);
                    }
                }

                //alors on le dessine
                for (uint i = b.X; i < (b.X + b.Taille); i++)
                {
                    matrice[i, b.Y] = 'H';
                }
            }

            bateaux.Add(b);
            return(true);
        }