Ejemplo n.º 1
0
 // On initialise la grille du joueur
 public void FaireGrille()
 {
     MaGrille = new Grille(ID);
     Console.WriteLine("Création de la grille ...");
     MaGrille.Draw();
     PlacerMaFlotte(); // A quoi ça sert une grille sans bateaux ? :P
 }
Ejemplo n.º 2
0
 public Joueur(string _nom, NumJoueur _num)
 {
     Nom = _nom;
     ID = _num;
     SaGrille = new Grille(NumJoueur.J2);
     NbTirs = 0;
 }
Ejemplo n.º 3
0
 // Vérifier que toutes les cases sur lesquelles se trouve le bateau sont disponibles.
 public bool PeutPlacer(Grille _grille, Flotte _flotte)
 {
     bool peutPlacer = true;
     foreach (var cell in Plage)
     {
         if (O == Orientation.Est || O == Orientation.Ouest)
         {
             if (!_grille.grille[Y, cell].PeutPlacer()) // Les lignes et les colonnes sont dans l'autre sens dans les tableaux C# (donc Y à la place du X)
             {
                 peutPlacer = false;
                 break;
             }
         }
         else
         {
             if (!_grille.grille[cell, X].PeutPlacer())
             { 
                 peutPlacer = false;
                 break;
             }
         }
     }
     if (peutPlacer)
     {
         if (O == Orientation.Est || O == Orientation.Ouest)
         {
             foreach (var Case in Plage)
             {
                 _grille.grille[Y, Case].ChangerEtat(EtatCase.Bateau);
             }
         }
         else
         {
             foreach (var Case in Plage)
             {
                 _grille.grille[Case, X].ChangerEtat(EtatCase.Bateau);
             }
         }
         
         EauInaccessible(_grille);
     }
     else
     {
         Console.WriteLine("Impossible de placer le bateau. Suppression ...");
     }         
     return peutPlacer;
 }
Ejemplo n.º 4
0
 public bool EstCoule(Grille _grilleAdversaire, Grille _monAffichageDeSaGrille)
 {
     bool estCoule = true; // On part du principe que le bateau est coulé.
     foreach (var cell in Plage)
     {   
         if (O == Orientation.Est || O == Orientation.Ouest)
         {
             if (_grilleAdversaire.grille[Y, cell].Etat == EtatCase.Bateau) // Si on trouve une case dont l'état est bateau
             {
                 estCoule = false; // alors le bateau n'est pas coulé.
                 break;
             }
         }
         else
         {
             if (_grilleAdversaire.grille[cell, X].Etat == EtatCase.Bateau)
             {
                 estCoule = false;
                 break;
             }
         }
     }
     if (estCoule)
     {
         Coule = true;
         foreach (var cell in Plage)
         {
             if (O == Orientation.Est || O == Orientation.Ouest)
             {
                 _grilleAdversaire.grille[Y, cell].ChangerEtat(EtatCase.Coulé);
                 _monAffichageDeSaGrille.grille[Y, cell].ChangerEtat(EtatCase.Coulé);
             }
             else
             {
                 _grilleAdversaire.grille[cell, X].ChangerEtat(EtatCase.Coulé);
                 _monAffichageDeSaGrille.grille[cell, X].ChangerEtat(EtatCase.Coulé);
             }
         }
     }
     return estCoule;
 }
Ejemplo n.º 5
0
        // Détermine le contour du bateau pour rendre cette zone inaccessible lors du placement des autres bateaux.
        public void EauInaccessible(Grille _grille)
        {
            // Les calculs changent en fonction de l'orientation du bateau.
            int PosXEauInacDebut, PosXEauInacFin, PosYEauInacDebut, PosYEauInacFin, x, y;
            if (O == Orientation.Est)
            {
                PosXEauInacDebut = X - 1;
                PosXEauInacFin = X + Taille;
                PosYEauInacDebut = Y - 1;
                PosYEauInacFin = Y + 1;

                y = PosYEauInacDebut;
                while (y <= PosYEauInacFin)
                {
                    x = PosXEauInacDebut;
                    while (x <= PosXEauInacFin)
                    {
                        if (_grille.grille[y, x].Etat == EtatCase.Eau)
                        {
                            _grille.grille[y, x].ChangerEtat(EtatCase.EauInaccessible);
                        }
                        x++;
                    }
                    y++;
                }
            }
            else if (O == Orientation.Ouest)
            {
                PosXEauInacDebut = X - Taille;
                PosXEauInacFin = X + 1;
                PosYEauInacDebut = Y - 1;
                PosYEauInacFin = Y + 1;

                y = PosYEauInacDebut;
                while (y <= PosYEauInacFin)
                {
                    x = PosXEauInacDebut;
                    while (x <= PosXEauInacFin)
                    {
                        if (_grille.grille[y, x].Etat == EtatCase.Eau)
                        {
                            _grille.grille[y, x].ChangerEtat(EtatCase.EauInaccessible);
                        }
                        x++;
                    }
                    y++;
                }
            }
            else if (O == Orientation.Nord)
            {
                PosXEauInacDebut = X - 1;
                PosXEauInacFin = X + 1;
                PosYEauInacDebut = Y - Taille;
                PosYEauInacFin = Y + 1;

                y = PosYEauInacDebut;
                while (y <= PosYEauInacFin)
                {
                    x = PosXEauInacDebut;
                    while (x <= PosXEauInacFin)
                    {
                        if (_grille.grille[y, x].Etat == EtatCase.Eau)
                        {
                            _grille.grille[y, x].ChangerEtat(EtatCase.EauInaccessible);
                        }
                        x++;
                    }
                    y++;
                }
            }
            else // Si orientation == Sud
            {
                PosXEauInacDebut = X - 1;
                PosXEauInacFin = X + 1;
                PosYEauInacDebut = Y - 1;
                PosYEauInacFin = Y + Taille;

                y = PosYEauInacDebut;
                while (y <= PosYEauInacFin)
                {
                    x = PosXEauInacDebut;
                    while (x <= PosXEauInacFin)
                    {
                        if (_grille.grille[y, x].Etat == EtatCase.Eau)
                        {
                            _grille.grille[y, x].ChangerEtat(EtatCase.EauInaccessible);
                        }
                        x++;
                    }
                    y++;
                }
            }
        }