public override int SubirAttaque(Combattant agresseur)
 {
     int degats= (float)Rand.NextDouble() > Position1.chanceEsquiver(agresseur.Position1) ? agresseur.Attaquer(Position1)/_baseDefense : 0;
     Console.WriteLine("Le joueur {0} est attaqué par {3} {1} et perd {2} pv", Nom, agresseur.Nom, degats, agresseur.GetType().Name);
     Blesser(degats);
     return degats;
 }
 public void Tuer(Combattant c)
 {
     liste.Remove(c);
     if (c.Position1 is PositionTank)
         TuerTank(c);
     if (c.Position1 is PositionCorpsACorps)
     {
         placerCombattantsListe(listeCac, LargeurEcran / 2 + (Inverse ? 10 + LargeurPerso : -10 - 2 * LargeurPerso), new PositionCorpsACorps());
         listeCac.Remove(c);
     }
     if (c.Position1 is PositionDistance)
     {
         
         listeDistance.Remove(c);
         placerCombattantsListe(listeDistance,
             LargeurEcran / 2 + (Inverse ? 10 + 3 * LargeurPerso : -10 - 4 * LargeurPerso), new PositionDistance());
     }
 }
        private void TuerTank(Combattant c)
        {
            listeTank.Remove(c);
            if (listeTank.Count <1) { 
                if (listeCac.Count > 0)
                {
                    listeTank.Add(listeCac[0]);
                    listeCac.RemoveAt(0);
                    placerCombattantsListe(listeCac, LargeurEcran / 2 + (Inverse ? 10 + LargeurPerso : -10 - 2 * LargeurPerso), new PositionCorpsACorps());
                }
                else if (listeDistance.Count>0)
                {
                    listeTank.Add(listeDistance[0]);
                    listeDistance.RemoveAt(0);
                    placerCombattantsListe(listeDistance,
                        LargeurEcran / 2 + (Inverse ? 10 + 3 * LargeurPerso : -10 - 4 * LargeurPerso), new PositionDistance());
                }
            }
            placerCombattantsListe(listeTank, LargeurEcran / 2 + (Inverse ? 10 : -10 - LargeurPerso), new PositionTank());

        }
 public void Mercurochroume(Combattant soigne)
 {
     if (Mana <= 20) return;
     soigne.Soigner(10);
     Mana -= 20;
 }
 public abstract int SubirAttaque(Combattant agresseur);
        async Task Clignote(Combattant combattant, TimeSpan intervalle, CancellationToken token)
        {
            var timer = new Timer(intervalle.Milliseconds);
            var img = affichesCombattants[combattant];
            timer.Elapsed += (s, e) =>
            {
                Application.Current.Dispatcher.Invoke(() =>
                {
                    if (img.Visibility == Visibility.Hidden)
                    {
                        img.Visibility = Visibility.Visible;
                    }
                    else
                    {
                        img.Visibility = Visibility.Hidden;
                    }
                });
                if (token.IsCancellationRequested)
                {
                    timer.Stop();
                    Application.Current.Dispatcher.Invoke(() =>
                    {
                        img.Visibility = Visibility.Visible;
                    });
                }
            };
            timer.Start();

        }
 private void OnHasMoved(Combattant c)
 {
     if (onHasMoved != null)
         onHasMoved(listeCombattants.IndexOf(c), this);
 }
 private void OnIsDead(Combattant c)
 {
     if (onIsDead != null)
         onIsDead(listeCombattants.IndexOf(c), this);
 }