Esempio n. 1
0
        /// <summary>
        /// Fonction qui effectue le déplacement d'une unité (si celle ci le peut).
        /// </summary>
        /// <param name="xdep"> la colonne de la case de départ </param>
        /// <param name="ydep"> le rang de la case de départ </param>
        /// <param name="xarr"> la colonne de la case de d'arrivée </param>
        /// <param name="yarr"> le rang de la case d'arrivée </param>
        /// <param name="casedep"> la case de départ </param>
        /// <param name="casearr"> la case d'arrivée </param>
        /// <param name="nompeuple">  le nom du peuple du joueur qui veut faire un déplacement </param>
        /// <param name="j">  le joueur qui veut faire un déplacement </param>
        /// <param name="numJoueur">  le numéro du joueur qui veut faire un déplacement </param>
        /// <returns> Vrai si le déplacement a été effectué, Faux si le déplacement ne pouvait pas avoir lieu</returns>
        public Boolean moveProcessing(int xdep, int ydep, int xarr, int yarr, Case casedep, Case casearr, Peuple.NomPeuple nompeuple, Joueur j, int numJoueur)
        {
            UniteDeBase u = casedep.UnitsOnCase[0];

            if (!isMoveAllowed(xdep, ydep, xarr, yarr, casedep, casearr, nompeuple))
            {
                return(false);
            }
            float cost = getMoveCost(casearr, nompeuple);

            if (u.ptDeDepl < cost)
            {
                return(false);
            }
            casedep.UnitsOnCase.Remove(u);
            if (casedep.UnitsOnCase.Count == 0)
            {
                casedep.setEtatOccupation(0); // 0 etant l'etat libre
            }
            UniteDeBase umodifie = u;

            umodifie.ptDeDepl -= cost;
            umodifie.setRow(yarr);
            umodifie.setColumn(xarr);
            casearr.UnitsOnCase.Add(umodifie);
            casearr.setEtatOccupation(numJoueur);
            return(true);
        }
Esempio n. 2
0
        /// <summary>
        /// Fonction qui effectue le combat (si celui ci peut avoir lieu).
        /// </summary>
        /// <param name="xdep"> la colonne de la case de l'attaquant </param>
        /// <param name="ydep"> le rang de la case de l'attaquant </param>
        /// <param name="xarr"> la colonne de la case du défenseur </param>
        /// <param name="yarr"> le rang de la case du défenseur </param>
        /// <param name="casedep"> la case de l'attaquant </param>
        /// <param name="casearr"> la case du défenseur </param>
        /// <param name="nompeuple">  le nom du peuple du joueur qui attaque</param>
        /// <param name="j">  le joueur qui veut faire un combat </param>
        /// <param name="numJoueur">  le numéro du joueur qui veut faire un combat </param>
        /// <returns> Vrai si le combat a été effectué, Faux si le combat ne pouvait pas avoir lieu</returns>
        public Boolean fightProcessing(int xdep, int ydep, int xarr, int yarr, Case casedep, Case casearr, Peuple.NomPeuple nompeuple, Joueur joueuratt, Joueur joueurdef)
        {
            if (!isFightAllowed(xdep, ydep, xarr, yarr, casedep, casearr, nompeuple))
            {
                return(false);
            }
            UniteDeBase uattaquante = casedep.UnitsOnCase[0];
            UniteDeBase udefensive  = casearr.getLUniteDePlusGrandeDefense();
            float       cost        = getMoveCost(casearr, nompeuple);

            if (uattaquante.ptDeDepl < cost)
            {
                return(false);
            }
            int nbCombat = WrapperAlgo.nbCombat(uattaquante.getPV(), udefensive.getPV());

            while (nbCombat > 0 && (uattaquante.getPV() != 0) && (udefensive.getPV() != 0))
            {
                Boolean LattaquantAPerduUnPV = WrapperAlgo.LattaquantPerdUnPV(uattaquante.getAtt(), udefensive.getDef(), uattaquante.getPourcentagePV(), udefensive.getPourcentagePV());
                if (LattaquantAPerduUnPV)
                {
                    int PVinit = (uattaquante.getPV() * 100) / uattaquante.getPourcentagePV();
                    uattaquante.setPourcentagePV(((uattaquante.getPV() - 1) * 100) / PVinit);
                    uattaquante.setPV(uattaquante.getPV() - 1);
                }
                else
                {
                    int PVinit = (udefensive.getPV() * 100) / udefensive.getPourcentagePV();
                    udefensive.setPourcentagePV(((udefensive.getPV() - 1) * 100) / PVinit);
                    udefensive.setPV(udefensive.getPV() - 1);
                }
                nbCombat--;
            }
            if (udefensive.getPV() == 0)
            {
                udefensive.meurt();
                casearr.UnitsOnCase.Remove(udefensive);
                joueurdef.getUnite().Remove(udefensive);
                if (casearr.UnitsOnCase.Count == 0)
                {
                    casearr.setEtatOccupation(0);// la case devient libre
                    return(true);
                }
            }
            if (uattaquante.getPV() == 0)
            {
                uattaquante.meurt();
                casedep.UnitsOnCase.Remove(uattaquante);
                joueuratt.getUnite().Remove(uattaquante);
                if (casedep.UnitsOnCase.Count == 0)
                {
                    casedep.setEtatOccupation(0);// la case devient libre
                }
                return(false);
            }
            return(false);
        }
Esempio n. 3
0
        /// <summary>
        /// Retrouve l'unité u dans la liste d'unité du peuple et la remplace par celle modifiée
        /// </summary>
        /// <param> UniteDeBase u * umodifie  </param>
        public void changeLeBonElement(UniteDeBase u, UniteDeBase umodifie)
        {
            List <UniteDeBase> l = _peuple.getUnites();
            int i;

            for (i = 0; i < l.Count; i++)
            {
                if (l[i] == u)
                {
                    l.RemoveAt(i);
                    l.Insert(i, umodifie);
                }
            }
        }
Esempio n. 4
0
        /// <summary>
        /// fonction permettant de connaitre l'unité de plus grande défense sur une case
        /// </summary>
        /// <returns> l'unité de cette case qui a la plus graande défense </returns>
        public UniteDeBase getLUniteDePlusGrandeDefense()
        {
            int         plusGrandeDef        = 0;
            UniteDeBase uniteDePlusGrandeDef = UnitsOnCase[0];

            foreach (UniteDeBase u in UnitsOnCase)
            {
                if (u.getDef() > plusGrandeDef)
                {
                    plusGrandeDef        = u.getDef();
                    uniteDePlusGrandeDef = u;
                }
            }
            return(uniteDePlusGrandeDef);
        }
Esempio n. 5
0
 /// <summary>
 /// fonction permettant d'ajouter une unités sur une case
 /// </summary>
 /// <param name="column"> l'unité que l'on veut ajouter à a case </param>
 public void setUnitsOnCase(UniteDeBase u)
 {
     UnitsOnCase.Add(u);
 }