示例#1
0
        /// <summary>
        /// Modifie la vie du bateau passé en paramètre associé au joueur passé en paramètres
        /// </summary>
        /// <param name="joueur">Joueur dont on doit modifier un bateau</param>
        /// <param name="type">Type de bateau dont on doit modifier la vie </param>
        /// <param name="x">Position x à la quelle le bateau a été touché</param>
        /// <param name="y">Position y à laquelle le bateau a été touché</param>
        /// <returns>Vrai si le bateau est coulé, Faux sinon</returns>
        public static bool ToucherBateau(int joueur, Bateau.TYPES type, int x, int y)
        {
            int[,] positionbateau = Bateau.ObtenirPositionBateauxJoueur(joueur);
            int[] vieBateaux = Bateau.ObtenirVieBateauxJoueur(joueur);
            int[,] grille         = Grille.ObtenirGrilleJoueur(joueur);
            grille[x, y]          = (int)Grille.Cases.TOUCHE;
            int[,] decouverte     = Grille.ObtenirGrilleDecouverteJoueur(Joueur.ObtenirAutreJoueur(joueur));
            decouverte[x, y]      = (int)Grille.Cases.TOUCHE;
            vieBateaux[(int)type] = vieBateaux[(int)type] - 1;
            //vieBateaux[(int)type] = 0;

            if (vieBateaux[(int)type] <= 0)
            {
                // On marque la bateau comme coulé sur la grille
                for (int o = 0; o < Bateau.LongueurBateaux[(int)type]; o++)
                {
                    if (Bateau.ObtenirAlignementBateau(joueur, type) == ALIGNEMENT.COLONNE)
                    {
                        grille[positionbateau[(int)type, 0], positionbateau[(int)type, 1] + o]     = (int)Grille.Cases.COULE;
                        decouverte[positionbateau[(int)type, 0], positionbateau[(int)type, 1] + o] = (int)Grille.Cases.COULE;
                    }
                    else
                    {
                        grille[positionbateau[(int)type, 0] + o, positionbateau[(int)type, 1]]     = (int)Grille.Cases.COULE;
                        decouverte[positionbateau[(int)type, 0] + o, positionbateau[(int)type, 1]] = (int)Grille.Cases.COULE;
                    }
                }
                return(true);
            }
            return(false);
        }
示例#2
0
        /// <summary>
        /// Paramètre les positions du bateau passé en paramètre dans la liste des positions de bateau
        /// </summary>
        /// <param name="joueur">Joueur associé au bateau à placer</param>
        /// <param name="type">Type de bateau à placer</param>
        /// <param name="x">Position x du premier point de la droite associée au bateau à placer</param>
        /// <param name="y">Position y du premier point de la droite associée au bateau à placer</param>
        /// <param name="alignement">Alignement du bateau à placer</param>
        public static void PlacerBateau(int joueur, Bateau.TYPES type, int x, int y, Bateau.ALIGNEMENT alignement)
        {
            int[,] positionBateaux = Bateau.ObtenirPositionBateauxJoueur(joueur);
            int[] vieBateaux = Bateau.ObtenirVieBateauxJoueur(joueur);
            int   x1;
            int   y1;


            if (alignement == ALIGNEMENT.LIGNE)
            {
                x1 = x + Bateau.LongueurBateaux[(int)type] - 1;
                y1 = y;
            }
            else
            {
                y1 = y + Bateau.LongueurBateaux[(int)type] - 1;
                x1 = x;
            }

            if (x < 0 || y < 0 || x1 >= Grille.LargeurGrille || y1 >= Grille.LargeurGrille)
            {
                throw new Exception("Impossible de placer le bateau. Il se trouve en dehors de la grille.");
            }

            vieBateaux[(int)type]         = Bateau.LongueurBateaux[(int)type];
            positionBateaux[(int)type, 0] = x;
            positionBateaux[(int)type, 1] = y;
            positionBateaux[(int)type, 2] = x1;
            positionBateaux[(int)type, 3] = y1;

            Grille.mettreaJourGrilleUnBateau(Grille.ObtenirGrilleJoueur(joueur), x, y, x1, y1);
        }
示例#3
0
 /// <summary>
 /// Retourne l'alignement du bateau de type type du joueur joueur
 /// </summary>
 /// <param name="joueur">Joueur dont on doit retourner l'alignement d'un bateau</param>
 /// <param name="type">Type de bateau dont on doit retourner l'alignement</param>
 /// <returns>L'alignement du bateau</returns>
 public static ALIGNEMENT ObtenirAlignementBateau(int joueur, Bateau.TYPES type)
 {
     int[,] positionbateaux = Bateau.ObtenirPositionBateauxJoueur(joueur);
     if (positionbateaux[(int)type, 0] == positionbateaux[(int)type, 2])
     {
         return(ALIGNEMENT.COLONNE);
     }
     else
     {
         return(ALIGNEMENT.LIGNE);
     }
 }
示例#4
0
 /// <summary>
 /// Détermine si les positions passées en paramètres sont libres ou occupées par un bateau
 /// </summary>
 /// <param name="joueur">Joueur dont on doit tester les bateaux</param>
 /// <param name="x1">Position x du premier point de la droite à tester</param>
 /// <param name="y1">Position y du premier point de la droite à tester</param>
 /// <param name="x2">Position x du deuxième point de la droite à tester</param>
 /// <param name="y2">Position y du deuxième point de la droite à tester</param>
 /// <param name="type">Type de bateau associé aux points à tester</param>
 /// <returns>Vrai si position libre, Faux si position occupée</returns>
 public static bool VerifierColisionBateaux(int joueur, int x1, int y1, int x2, int y2, Bateau.TYPES type)
 {
     int[,] grille = Grille.ObtenirGrilleJoueur(joueur);
     for (int o = 0; o < Bateau.LongueurBateaux[(int)type]; o++)
     {
         // Si le bateau est aligné en colonne
         if (x1 == x2)
         {
             if (grille[x1, y1 + o] != (int)Grille.Cases.VIDE)
             {
                 return(false);
             }
         }
         else //sinon le bateau est aligné en ligne
         {
             if (grille[x1 + o, y1] != (int)Grille.Cases.VIDE)
             {
                 return(false);
             }
         }
     }
     return(true);
 }