/// <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); }
/// <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); }
/// <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); } } }
/// <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); }
/// <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); }