//Fonction attaque, le gladiateur attaquant attaque le défenseur avec chacune de son/ses arme(s) public Entity Attack(Entity entity) { Gladiator ennemy = (Gladiator)entity; /* * On boucle sur les armes de l'attaquant * Si l'attaquant à un filet, on l'ignore, le filet étant géré dans la passe d'arme (une seule utilisation par passe d'arme) * On déclenche la capacité de blocage ici */ for (int i = (this.Weapons.Contains("Net") ? 1 : 0); i < this.Weapons.Count; i++) { Console.WriteLine(this._Name + " attack " + ennemy.Name + " with " + this.Weapons[i] + "!"); //Console.WriteLine ("Hit rate: " + Stuff.HitRate [this.Weapons[i]] * this._DamageRate + "%"); if (Stuff.getPercentage() <= Stuff.HitRate[this.Weapons[i]] * this._HitRate) { if (ennemy.Block(this)) { Console.WriteLine(ennemy.Name + " blocked the attack !"); } else { Console.WriteLine("It's super effective ! " + ennemy.Name + " dies..\n"); //Retourne le gladiateur courant (attaquant) s'il tue l'ennemi return(this); } } else { Console.WriteLine(this._Name + " missed his attack..\n"); } } //Retourne l'ennemi si l'attaquant n'est pas parvenu à le tuer return(ennemy); }
//Fonction passe d'arme, on génère des attaques jusqu'a obtenir un gagnant public Entity Trade(Entity entity) { Entity winner = null; Gladiator ennemy = (Gladiator)entity; bool firstRound = true; //Si premier tour, utilisation des filets while (winner == null) { if (firstRound) { this.UseNet(ennemy); } if (this.Attack(ennemy) == ennemy) { if (firstRound) { ennemy.UseNet(this); } if (ennemy.Attack(this) == ennemy) { winner = ennemy; } } else { winner = this; } firstRound = false; } return(winner); }
//Execution du match avec détermination du premier tour en fonction de l'initiative des armes public override Entity PlayMatch() { Gladiator g1 = (Gladiator)this._Part1; Gladiator g2 = (Gladiator)this._Part2; //Si g1 à une arme plus haute en initiative, il commence if (Stuff.Initiative[g1.Weapons[0]] > Stuff.Initiative[g2.Weapons[0]]) { return(Winner(g1.Trade(g2))); //Sinon c'est g2 } else if (Stuff.Initiative[g1.Weapons[0]] < Stuff.Initiative[g2.Weapons[0]]) { return(Winner(g2.Trade(g1))); } else { //Si les deux gladiateurs ont la même armes, tirage au sort équitable pour le premier tour Console.WriteLine(g1.Name + " and " + g2.Name + " both have a " + g1.Weapons[0]); Console.WriteLine("->Random choice for first"); if (Stuff.getPercentage() > 50) { Console.WriteLine(g1.Name + " first:\n"); return(Winner(g1.Trade(g2))); } else { Console.WriteLine(g2.Name + " first:\n"); return(Winner(g2.Trade(g1))); } } }
//Fonction d'utilisation du filet private void UseNet(Gladiator ennemy) { if (this._Weapons.Contains("Net")) { Console.WriteLine(this.Name + " uses Net ! \n" + ennemy.Name + " gets 50% hite rate malus."); ennemy._HitRate = 0.5; } }
//Fonction d'ajout de gladiateurs pour gérer le nombre de gladiateurs et d'armes qu'ils possèdes public void AddGlad(Gladiator glad) { if (this.Gladiators.Count < 3) { while (glad.Weapons.Count == 0 || (glad.Weapons.Count == 1 && glad.Weapons[0] == "Net")) { ErrorMessage(": " + glad.Name + " must have a least one weapon (he can't either fight with only a net)"); } glad.SortWeaponByIni(); this.Gladiators.Add(glad); } else { ErrorMessage(": You can't have more than 3 gladiators per team !"); } }
//Fonction blocage, retourne TRUE si l'attaque est bloquée, sinon FALSE public bool Block(Gladiator ennemy) { if (this._Armors.Count == 0) { return(false); } else { foreach (string armor in this._Armors) { //Console.WriteLine ("BlockRate: " + Stuff.BlockRate [armor] + "%"); if (Stuff.getPercentage() <= Stuff.BlockRate[armor]) { Console.WriteLine(this.Name + " uses " + armor + " !"); return(true); } } } return(false); }
public Test() { //Instanciation des joueurs avec des matchs pour le winRate Player Max = new Player("FLORILE", "Maxime", "Zywo"); Player Cam = new Player("ALLES", "Camille", "Kaoumlya"); Player Ben = new Player("DESMET", "Benjamin", "Yela"); Player Kwi = new Player("QUERON", "Quentin", "Kwintyn"); Max.Victories = 5; Max.Defeats = 3; Cam.Victories = 2; Cam.Defeats = 1; Ben.Victories = 3; Ben.Defeats = 0; Kwi.Victories = 5; Kwi.Defeats = 3; //Instanciation des teams avec des matchs pour le winRate et le matchMaking Team ZyT1 = new Team("Team Zywo", "La team de Zywo alias Maxime"); Team KaT1 = new Team("Team Kamoulya", "La team de Kamoulya alias Camille"); Team YeT1 = new Team("Team Yela", "La team de Yela alias Benjamin"); Team KwT1 = new Team("Team Kwintyn", "La team de Kwintyn alias Quentin"); ZyT1.Victories = 2; ZyT1.Defeats = 1; KaT1.Victories = 2; KaT1.Defeats = 3; YeT1.Victories = 5; YeT1.Defeats = 1; KwT1.Victories = 0; KwT1.Defeats = 3; //Instanciation des gladiateurs Gladiator ZyGla1 = new Gladiator("Zywo_Glad_1", 1); Gladiator ZyGla2 = new Gladiator("Zywo_Glad_2", 2); Gladiator ZyGla3 = new Gladiator("Zywo_Glad_3", 3); Gladiator KaGla1 = new Gladiator("Kamoulya_Glad_1", 1); Gladiator KaGla2 = new Gladiator("Kamoulya_Glad_2", 2); Gladiator KaGla3 = new Gladiator("Kamoulya_Glad_3", 3); Gladiator YeGla1 = new Gladiator("Yela_Glad_1", 1); Gladiator YeGla2 = new Gladiator("Yela_Glad_2", 2); Gladiator YeGla3 = new Gladiator("Yela_Glad_3", 3); Gladiator KwGla1 = new Gladiator("Kwintyn_Glad_1", 1); Gladiator KwGla2 = new Gladiator("Kwintyn_Glad_2", 2); Gladiator KwGla3 = new Gladiator("Kwintyn_Glad_3", 3); //Equipement gladiateurs Zywo ZyGla1.AddItem("Dagger"); ZyGla1.AddItem("Sword"); ZyGla1.AddItem("Net"); ZyGla2.AddItem("Big shield"); ZyGla2.AddItem("Dagger"); ZyGla3.AddItem("Dagger"); ZyGla3.AddItem("Helmet"); //Equipement gladiateurs Kamoulya KaGla1.AddItem("Helmet"); KaGla1.AddItem("Lance"); KaGla2.AddItem("Helmet"); KaGla2.AddItem("Lance"); KaGla3.AddItem("Trident"); KaGla3.AddItem("Dagger"); //Equipement gladiateurs Yela YeGla1.AddItem("Sword"); YeGla1.AddItem("Net"); YeGla2.AddItem("Sword"); YeGla2.AddItem("Dagger"); YeGla2.AddItem("Helmet"); YeGla3.AddItem("Lance"); YeGla3.AddItem("Helmet"); //Equipement gladiateurs Kwintyn KwGla1.AddItem("Helmet"); KwGla1.AddItem("Lance"); KwGla2.AddItem("Helmet"); KwGla2.AddItem("Lance"); KwGla3.AddItem("Trident"); KwGla3.AddItem("Dagger"); //Ajout des gladiateurs aux équipes ZyT1.AddGlad(ZyGla1); ZyT1.AddGlad(ZyGla2); ZyT1.AddGlad(ZyGla3); KaT1.AddGlad(KaGla1); KaT1.AddGlad(KaGla2); KaT1.AddGlad(KaGla3); YeT1.AddGlad(YeGla1); YeT1.AddGlad(YeGla2); YeT1.AddGlad(YeGla3); KwT1.AddGlad(KwGla1); KwT1.AddGlad(KwGla2); KwT1.AddGlad(KwGla3); //Ajout des équipes aux joueurs Max.Teams.Add(ZyT1); Cam.Teams.Add(KaT1); Ben.Teams.Add(YeT1); Kwi.Teams.Add(KwT1); //Formation du tournois List<Team> Teams = new List<Team>(); Teams.Add(Max.Teams[0]); Teams.Add(Cam.Teams[0]); Teams.Add(Kwi.Teams[0]); Teams.Add(Ben.Teams[0]); Tournament match = new Tournament(Teams); match.StartTournament(); Console.Read(); }
public Test() { //Instanciation des joueurs avec des matchs pour le winRate Player Max = new Player("FLORILE", "Maxime", "Zywo"); Player Cam = new Player("ALLES", "Camille", "Kaoumlya"); Player Ben = new Player("DESMET", "Benjamin", "Yela"); Player Kwi = new Player("QUERON", "Quentin", "Kwintyn"); Max.Victories = 5; Max.Defeats = 3; Cam.Victories = 2; Cam.Defeats = 1; Ben.Victories = 3; Ben.Defeats = 0; Kwi.Victories = 5; Kwi.Defeats = 3; //Instanciation des teams avec des matchs pour le winRate et le matchMaking Team ZyT1 = new Team("Team Zywo", "La team de Zywo alias Maxime"); Team KaT1 = new Team("Team Kamoulya", "La team de Kamoulya alias Camille"); Team YeT1 = new Team("Team Yela", "La team de Yela alias Benjamin"); Team KwT1 = new Team("Team Kwintyn", "La team de Kwintyn alias Quentin"); ZyT1.Victories = 2; ZyT1.Defeats = 1; KaT1.Victories = 2; KaT1.Defeats = 3; YeT1.Victories = 5; YeT1.Defeats = 1; KwT1.Victories = 0; KwT1.Defeats = 3; //Instanciation des gladiateurs Gladiator ZyGla1 = new Gladiator("Zywo_Glad_1", 1); Gladiator ZyGla2 = new Gladiator("Zywo_Glad_2", 2); Gladiator ZyGla3 = new Gladiator("Zywo_Glad_3", 3); Gladiator KaGla1 = new Gladiator("Kamoulya_Glad_1", 1); Gladiator KaGla2 = new Gladiator("Kamoulya_Glad_2", 2); Gladiator KaGla3 = new Gladiator("Kamoulya_Glad_3", 3); Gladiator YeGla1 = new Gladiator("Yela_Glad_1", 1); Gladiator YeGla2 = new Gladiator("Yela_Glad_2", 2); Gladiator YeGla3 = new Gladiator("Yela_Glad_3", 3); Gladiator KwGla1 = new Gladiator("Kwintyn_Glad_1", 1); Gladiator KwGla2 = new Gladiator("Kwintyn_Glad_2", 2); Gladiator KwGla3 = new Gladiator("Kwintyn_Glad_3", 3); //Equipement gladiateurs Zywo ZyGla1.AddItem("Dagger"); ZyGla1.AddItem("Sword"); ZyGla1.AddItem("Net"); ZyGla2.AddItem("Big shield"); ZyGla2.AddItem("Dagger"); ZyGla3.AddItem("Dagger"); ZyGla3.AddItem("Helmet"); //Equipement gladiateurs Kamoulya KaGla1.AddItem("Helmet"); KaGla1.AddItem("Lance"); KaGla2.AddItem("Helmet"); KaGla2.AddItem("Lance"); KaGla3.AddItem("Trident"); KaGla3.AddItem("Dagger"); //Equipement gladiateurs Yela YeGla1.AddItem("Sword"); YeGla1.AddItem("Net"); YeGla2.AddItem("Sword"); YeGla2.AddItem("Dagger"); YeGla2.AddItem("Helmet"); YeGla3.AddItem("Lance"); YeGla3.AddItem("Helmet"); //Equipement gladiateurs Kwintyn KwGla1.AddItem("Helmet"); KwGla1.AddItem("Lance"); KwGla2.AddItem("Helmet"); KwGla2.AddItem("Lance"); KwGla3.AddItem("Trident"); KwGla3.AddItem("Dagger"); //Ajout des gladiateurs aux équipes ZyT1.AddGlad(ZyGla1); ZyT1.AddGlad(ZyGla2); ZyT1.AddGlad(ZyGla3); KaT1.AddGlad(KaGla1); KaT1.AddGlad(KaGla2); KaT1.AddGlad(KaGla3); YeT1.AddGlad(YeGla1); YeT1.AddGlad(YeGla2); YeT1.AddGlad(YeGla3); KwT1.AddGlad(KwGla1); KwT1.AddGlad(KwGla2); KwT1.AddGlad(KwGla3); //Ajout des équipes aux joueurs Max.Teams.Add(ZyT1); Cam.Teams.Add(KaT1); Ben.Teams.Add(YeT1); Kwi.Teams.Add(KwT1); //Formation du tournois List <Team> Teams = new List <Team>(); Teams.Add(Max.Teams[0]); Teams.Add(Cam.Teams[0]); Teams.Add(Kwi.Teams[0]); Teams.Add(Ben.Teams[0]); Tournament match = new Tournament(Teams); match.StartTournament(); Console.Read(); }
public GvG(Gladiator g1, Gladiator g2) : base(g1, g2) { }
//Fonction blocage, retourne TRUE si l'attaque est bloquée, sinon FALSE public bool Block(Gladiator ennemy) { if (this._Armors.Count == 0) { return false; } else { foreach (string armor in this._Armors) { //Console.WriteLine ("BlockRate: " + Stuff.BlockRate [armor] + "%"); if (Stuff.getPercentage() <= Stuff.BlockRate[armor]) { Console.WriteLine(this.Name + " uses " + armor + " !"); return true; } } } return false; }