コード例 #1
0
        // Retourne le meilleur défenseur pour une position donnée
        public Unit choseDefender(Position position)
        {
            List <Unit> unitsListDef;
            Unit        defender  = null;
            float       bestRatio = 0;
            float       ratio     = 0;
            int         playerDef = (1 + 2) - CurrentPlayer;

            UnitsDictionary.TryGetValue(playerDef, out unitsListDef);
            // Retourne une liste des unités présentes à la position passée en paramètre
            List <Unit> unitsListAtPos = unitsListDef.FindAll(u => u.Position.Equals(position));

            // Recherche l'unité disposant du meilleur ratio ptsvierestants/ptsviemax
            foreach (Unit u in unitsListAtPos)
            {
                ratio = (float)u.Health / (float)u.MaxHealth;
                if (ratio == 1)
                {
                    return(u);
                }
                if (ratio > bestRatio)
                {
                    bestRatio = ratio;
                    defender  = u;
                }
            }
            return(defender);
        }
コード例 #2
0
        public void nextUnit()
        {
            List <Unit> unitsList;

            UnitsDictionary.TryGetValue(CurrentPlayer, out unitsList);
            // On a parcouru toutes les unités
            if (UnitCounterTurn == UnitCount)
            {
                // Si le joueur actuel est le 1, on passe au joueur 2
                if (CurrentPlayer == 1)
                {
                    CurrentPlayer   = 2;
                    UnitCounterTurn = 0;
                    nextUnit();
                }
                // Si le joueur actuel est le 2, on passe au tour suivant
                else
                {
                    nextTurn();
                }
                return;
            }
            UnitCounterTurn++;
            Unit unit = unitsList.Find(u => u.IdUnit.Equals(UnitCounterTurn));

            if (unit == null)
            {
                nextUnit();
                return;
            }
            SelectedUnit = unit;
        }
コード例 #3
0
        // Retire une unité du jeu
        public void deleteUnit(int idPlayer, Unit unit)
        {
            List <Unit> unitsList;

            UnitsDictionary.TryGetValue(idPlayer, out unitsList);
            unitsList.Remove(unit);

            if (unitsList.Count == 0)
            {
                // On met fin à la partie
                EndTurnCommand etd = new EndTurnCommand(true);
                etd.execute();
            }
        }
コード例 #4
0
 // Calcule le nombre de VictoryPoints génerés par l'ensemble des unités
 public void computeVictoryPoints()
 {
     foreach (KeyValuePair <int, Player> kvp in PlayersDictionary)
     {
         int             IdPlayer = kvp.Key;
         Player          p        = kvp.Value;
         List <Unit>     unitsList;
         List <Position> alreadyCounted = new List <Position>();
         p.Points = 0;
         UnitsDictionary.TryGetValue(IdPlayer, out unitsList);
         foreach (Unit u in unitsList)
         {
             if (alreadyCounted.Find(pos => pos.X == u.Position.X && pos.Y == u.Position.Y) == null)
             {
                 alreadyCounted.Add(u.Position);
                 p.Points += u.computeVictoryPoint(Map.getTileAt(u.Position));
             }
         }
     }
 }