/// <summary>
        /// Attaque d'une armée ennemie -- appelée aussi par l'IA
        /// </summary>
        /// <param name="cible">armée cible</param>
        /// <returns> true si on a gagné</returns>
        public bool attaqueArmee(List <Armee> cible)
        {
            Combat combat = new Combat(_jeu, _jeu.selectedArmee, cible);

            // Mode auto ou graphique
            if (_jeu.factions.getFaction(_jeu.tourFaction).humanPlayer || _jeu.factions.getFaction(cible[0].faction).humanPlayer)
            {
                // mode graphique
                ZoneCombat zc = new ZoneCombat(_jeu, combat, delegate(bool attaquantVainqueur) {
                    if (!attaquantVainqueur)
                    {
                        _jeu.selectedArmee = null;
                    }
                });
                _jeu.addOverlay(zc);
            }
            else
            {
                bool resCombat = combat.combatAuto();
                if (!resCombat)
                {
                    // perdu !
                    _jeu.selectedArmee = null;
                }
            }
            return(_jeu.selectedArmee != null);
        }
        /// <summary>
        /// Attaque d'une ville ennemie -- appelée aussi par l'IA
        /// </summary>
        /// <returns> true si on a gagné</returns>
        /// <param name="cible">ville cible</param>
        public bool attaqueVille(VilleDescription cible)
        {
            bool retVal = false;
            // Détermine toutes les armées de la ville
            List <Armee> garnison = new List <Armee>();

            foreach (Armee arme in _jeu.armees)
            {
                if (cible.contains(arme.positionCarte))
                {
                    garnison.Add(arme);
                }
            }
            // Mode auto ou graphique
            if (_jeu.factions.getFaction(_jeu.tourFaction).humanPlayer || _jeu.factions.getFaction(cible.faction).humanPlayer)
            {
                if (garnison.Count != 0)
                {
                    // Mode graphique
                    Combat     combat = new Combat(_jeu, _jeu.selectedArmee, garnison);
                    ZoneCombat zc     = new ZoneCombat(_jeu, combat, delegate(bool attaquantVainqueur) {
                        if (!attaquantVainqueur)
                        {
                            _jeu.selectedArmee = null;
                        }
                        else
                        {
                            // On gagne
                            cible.faction = _jeu.selectedArmee.faction;
                        }
                    });
                    _jeu.addOverlay(zc);
                }
                else
                {
                    // On gagne
                    cible.faction = _jeu.selectedArmee.faction;
                }
            }
            else
            {
                if (garnison.Count != 0)
                {
                    attaqueArmee(garnison);
                }
                // Si il y a encore un attaquant, c'est la victoire !
                if (_jeu.selectedArmee != null)
                {
                    // Capture la ville
                    cible.faction = _jeu.selectedArmee.faction;
                    retVal        = true;
                }
            }
            return(retVal);
        }