private Joueur RunAttack(Position currentJoueurPosition)
        {
            bool isJoueurDead     = false;
            bool isAdversaireDead = false;


            if (currentJoueurPosition != null)
            {
                List <Position> listPosAuChampsDatt   = _attaqueService.GetChampsDattaques(currentJoueurPosition, currentJoueur.Portee, grille);
                Position        adversairAattaquerPos = _attaqueService.GetAdversaireAattaquer(_listPosition, listPosAuChampsDatt);
                if (adversairAattaquerPos != null)
                {
                    do
                    {
                        adversairAattaquerPos.Joueur.OnAttack = true;


                        InitializerNouveauTour(ActionTour.Attaque);
                        tour.JoueurEnAttaque = currentJoueur;
                        tour.JoueurEndefense = adversairAattaquerPos.Joueur;
                        SetTourInfo();
                        isAdversaireDead = _attaqueService.Attaquer(currentJoueur, adversairAattaquerPos.Joueur);
                        ConsoleWriter.Attaquer(currentJoueurPosition, adversairAattaquerPos, isAdversaireDead);
                        ActualiserBarEtat(currentJoueur);

                        if (isAdversaireDead)
                        {
                            return(adversairAattaquerPos.Joueur);
                        }
                        if (Console.KeyAvailable)
                        {
                            return(null);
                        }
                        TourAdversaire(currentJoueurPosition);
                        Thread.Sleep(2000);
                        InitializerNouveauTour(ActionTour.Attaque);
                        tour.JoueurEnAttaque = adversairAattaquerPos.Joueur;
                        tour.JoueurEndefense = currentJoueur;
                        SetTourInfo();
                        isJoueurDead = _attaqueService.Attaquer(adversairAattaquerPos.Joueur, currentJoueur);
                        ConsoleWriter.Attaquer(adversairAattaquerPos, currentJoueurPosition, isJoueurDead);
                        ActualiserBarEtat(adversairAattaquerPos.Joueur);
                    } while (!isJoueurDead && !isAdversaireDead && !Console.KeyAvailable);
                    adversairAattaquerPos.Joueur.OnAttack = false;
                }
                if (isJoueurDead)
                {
                    return(currentJoueur);
                }
                else if (isAdversaireDead)
                {
                    return(adversairAattaquerPos.Joueur);
                }
                else
                {
                    return(null);
                }
            }
            else
            {
                return(null);
            }
        }