diff --git a/Program.cs b/Program.cs index db4d7ce..7cf85d3 100644 --- a/Program.cs +++ b/Program.cs @@ -3,9 +3,8 @@ public class Program { public static void Main(string[] args) { GameManager gm = new GameManager(); - gm.initializeGame(); + gm.InitializeGame(); - Console.WriteLine(gm.GetPlayers()[0]); Console.WriteLine(""); } } \ No newline at end of file diff --git a/csv/Characters.csv b/csv/Characters.csv index e132d46..eb259e8 100644 --- a/csv/Characters.csv +++ b/csv/Characters.csv @@ -1,10 +1,10 @@ //Nom;Description;Effet -Applejack;Applejack est une honnête dresseuse pokémon et sait faire preuve d'un grand altruisme envers les pokémon. Elle vit et travaille à la Ferme de la Douce Baie Oran.;Ses Pokémons ont un bonus de PV de 5% +Applejack;Applejack est une honnête dresseuse pokémon et sait faire preuve d'un grand altruisme envers les pokémon. Elle vit et travaille à la Ferme de la Douce Baie Oran;Ses Pokémons ont un bonus de PV de 5% Rainbow Dash;Rainbow Dash est une loyale dresseuse pokémon. Elle est en charge de la météo de Pokeville;Ses Pokémons ont un bonus d'ATKPhys de 3% Twilight Sparkle;Twilight Sparkle est une dresseuse pokémon avec un talent inné. Elle a la capacité d'élever ses pokémons avec aisance. Elle vit dans le palais royal du Bourg Galop;Ses Pokémons ont un bonus de vitesse de 7% -Pinkie Pie;Pinkie Pie est une souriante dresseuse pokémon. Elle fait sourire tous les pokémons en un instant. Elle vit avec sa famille dans une ferme de production de caillous à Mérouville.;Ses Pokémons ont un bonus de DEFPhys de 4% -Fluttershy;Fluttershy est une timide dresseuse pokémon mais néanmoins très puissante. Elle est la seule dresseuse capable de parler aux pokémons. Elle les élève dans sa pension à Bonville.;Ses Pokémons ont un bonus de DEFSpé de 4% -Izzy Moonbow;Izzy Moonbow est une dresseuse pokémon qui adore unicycler les restes des objets laissés par les dresseurs pour les transformer en outils de capture. Elle vit dand la forêt de Brideblanc.;Ses Pokémons ont un bonus de PV de 5% et un malus de vitesse de 5% -Zipp Storm;Zipp Storm est une enquêtrice pokémon qui enquête régulièrement sur les mystères à travers les régions pokémon. Bien que de sang royal, elle vit loin de sa famille pour vivre sa passion au phare de cristal de Rivamar;Ses Pokémons ont un malus de PV de 5% et un bonus de vitesse de 5% +Pinkie Pie;Pinkie Pie est une souriante dresseuse pokémon. Elle fait sourire tous les pokémons en un instant. Elle vit avec sa famille dans une ferme de production de caillous à Mérouville;Ses Pokémons ont un bonus de DEFPhys de 4% +Fluttershy;Fluttershy est une timide dresseuse pokémon mais néanmoins très puissante. Elle est la seule dresseuse capable de parler aux pokémons. Elle les élève dans sa pension à Bonville;Ses Pokémons ont un bonus de DEFSpé de 4% +Izzy Moonbow;Izzy Moonbow est une dresseuse pokémon qui adore unicycler les restes des objets laissés par les dresseurs pour les transformer en outils de capture. Elle vit dand la forêt de Brideblanc;Ses Pokémons ont un bonus de PV de 5% et un malus de vitesse de 5% +Zipp Storm;Zipp Storm est une enquêtrice pokémon qui enquête régulièrement sur les mystères des régions pokémon. Bien que de sang royal, elle vit loin de sa famille pour vivre sa passion au phare de cristal de Rivamar;Ses Pokémons ont un malus de PV de 5% et un bonus de vitesse de 5% Sunny Starscout;Sunny Starscout est une dresseuse pokémon qui est pesuadée que peu importe leur nature, tous les pokémon peuvent vivre ensemble. Elle vit dans la Baie de Portponi;Ses Pokémons ont un bonus d'ATKSPe de 3% Derpy Hooves; Derpy Hooves est une dresseuse pokemon qui adore les pokémons bien qu'elle soit très maladroite dans ses mouvements. Son regard effrai en général les pokémons sauvages;Ses Pokémons ont un malus de PV de 5% \ No newline at end of file diff --git a/csv/Title.txt b/csv/Title.txt new file mode 100644 index 0000000..ca9b160 --- /dev/null +++ b/csv/Title.txt @@ -0,0 +1,6 @@ + ____ __ ____ __ __ __ + / __ \____ / /_____ ____ ___ ____ ____ / __ )____ _/ /_/ /_/ /__ + / /_/ / __ \/ //_/ _ \/ __ `__ \/ __ \/ __ \ / __ / __ `/ __/ __/ / _ \ + / ____/ /_/ / ,< / __/ / / / / / /_/ / / / / / /_/ / /_/ / /_/ /_/ / __/ + /_/ \____/_/|_|\___/_/ /_/ /_/\____/_/ /_/ /_____/\__,_/\__/\__/_/\___/ +/_/ diff --git a/projet/Character.cs b/projet/Character.cs new file mode 100644 index 0000000..e280267 --- /dev/null +++ b/projet/Character.cs @@ -0,0 +1,39 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Programmation_objet_TLESIO21.projet { + public class Character { + private string Name; + private string Description; + private int level; + private List PC; + +#pragma warning disable CS8618 // Un champ non-nullable doit contenir une valeur non-null lors de la fermeture du constructeur. Envisagez de déclarer le champ comme nullable. + public Character(string Name, string Description, List PC) { + this.Name = Name; + this.Description = Description; + this.PC = PC; + this.level = PC.Count; + } + + public override string ToString() { + String sb = this.Name + " est level " + this.level + "." + " " + this.Description + ". Ses pokemon sont :\n"; + foreach (Pokemon p in this.PC) { + sb += p.getName() + ". "; + } + + return sb + "\n"; + } + + public String getName() { + return this.Name; + } + + public List getPC() { + return this.PC; + } + } +} diff --git a/projet/GameManager.cs b/projet/GameManager.cs index 79d0412..0364861 100644 --- a/projet/GameManager.cs +++ b/projet/GameManager.cs @@ -1,26 +1,355 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.IO; - -namespace Programmation_objet_TLESIO21.projet { - public class GameManager { - - private string Path; - private List pkm = new List(); - private List players = new List(); - +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.IO; + +namespace Programmation_objet_TLESIO21.projet { + public class GameManager { + + private string Path; + private List Pkm = new List(); + private List Characters = new List(); + private Player p1; + private Player p2; + private int p1CharacterChoosen; + private int p2CharacterChoosen; + public GameManager() { + this.p1CharacterChoosen = 0; + this.p2CharacterChoosen = 0; this.Path = "../../../csv/"; - } - + } + + private static bool StringIsValidInt(String s) { + foreach (char c in s) { + if (c < '0' || c > '9') + return false; + } + + return true; + } + + private static bool StringIsValidIntFight(String s) { + foreach (char c in s) { + if (c < '0' || c > '7') + return false; + } + + return true; + } + + private static bool TabStringIsValidInt(String[] tab) { + foreach(String s in tab) { + foreach (char c in s) { + if (c < '0' || c > '9') { + return false; + } + } + } + return true; + } + + private static bool StringIsValidIntCharacters(String s) { + foreach(char c in s) { + if (c < '1' || c > '9') { + return false; + } + } + + return true; + } + + private static String DisplayTeam(Player p) { + String sb = ""; + int i = 0; + foreach(Pokemon pkm in p.getTeam()) { + if(pkm.isAlive()) { + sb += "["+(i+1)+"]" + pkm.getName() + ". "; + } else { + sb += "[OUT]" + pkm.getName() + ". "; + } + ++i; + } + return sb; + } + + public void InitializeGame() { + + StreamReader strm = new StreamReader(this.Path + "Title.txt"); + String strmL; + + //Read the first line of text + strmL = strm.ReadLine(); + //Continue to read until you reach end of file + while (strmL != null) { + if (strmL[0] == '/') { + strmL = strm.ReadLine(); + } + //write the line to console window + Console.WriteLine(strmL); + //Read the next line + strmL = strm.ReadLine(); + } + //close the file + strm.Close(); + + Console.WriteLine(" "); + + String entreeStandard; + bool p1 = false; + bool p2 = false; + + while(!p1) { + Console.WriteLine("Merci d'entrer le nom du joueur 1 :"); + entreeStandard = Console.ReadLine(); + if(entreeStandard == "") { + Console.WriteLine("Veuillez resaisir. Nom incorrect."); + } else { + this.p1 = new Player(entreeStandard); + p1 = true; + } + } + + while (!p2) { + Console.WriteLine("Merci d'entrer le nom du joueur 2 :"); + entreeStandard = Console.ReadLine(); + if (entreeStandard == "") { + Console.WriteLine("Veuillez resaisir. Nom incorrect."); + } else { + this.p2 = new Player(entreeStandard); + p2 = true; + } + } + + this.InitializePokemons(); + this.ChooseTeams(); + this.Combat(); + + } + + private void ChooseTeams() { + String entreeStandard = ""; + Console.WriteLine("Vous avez devant vous plusieurs dresseuses pokémon. Vous allez devoir choisir 6 pokémon parmis ceux de la dresseuse que vous allez choisir :\n"); + int i = 0; + foreach(Character c in Characters) { + Console.WriteLine("[" + (i+1) + "] " + c.ToString()); + ++i; + } + Console.WriteLine("Choissez la dresseuse que vous pensez être la plus apte à vous prêter des pokémon pour combattre.\n" + + "Pour cela, rentrez le numéro affiché devant le nom de la dresseuse."); + + bool correctChoice = false; + + + while (!correctChoice) { + entreeStandard = Console.ReadLine(); + if(entreeStandard != "" && StringIsValidIntCharacters(entreeStandard)) { + correctChoice = true; + p1CharacterChoosen = int.Parse(entreeStandard.Substring(0,1))-1; + } else { + Console.WriteLine("Veuillez resaisir. Entrée incorrecte."); + } + + } + + p2CharacterChoosen = getRandom(9); + if (p2CharacterChoosen == 9) { + p2CharacterChoosen = 8; + } + + Console.WriteLine("Vous avez choisi de faire confiance à " + Characters[p1CharacterChoosen].getName() + "."); + Console.WriteLine("Votre adversaire a choisis de faire confiance à " + Characters[p2CharacterChoosen].getName() + "."); + + Console.WriteLine("Maintenant, vous allez devoir choisir 6 pokémons parmis ceux de " + Characters[p1CharacterChoosen].getName() + "\n" + + "Il vous suffit de rentrer le numéro précédant le nom du pokémon.\n"); + + + i = 0; + foreach(Pokemon pkm in Characters[p1CharacterChoosen].getPC()) { + Console.WriteLine("[" + (i+1) + "] " + pkm.getStats()); + ++i; + } + Console.WriteLine("Entrez les 6 numéros des pokémons que vous souhaitez utiliser. Exemple : 1-12-5-6-10-2"); + bool isTeamValid = false; + + while(!isTeamValid) { + entreeStandard = Console.ReadLine(); + String[] tab = entreeStandard.Split("-"); + if (tab.Length == 6 && TabStringIsValidInt(tab)) { + foreach (String s in tab) { + p1.choosePokemon(Characters[p1CharacterChoosen].getPC()[int.Parse(s)-1]); + } + isTeamValid = true; + } else { + Console.WriteLine("Veuillez resaisir. Entrée incorrecte (Format attendu : 1-12-5-6-10-2)."); + } + } + + Console.Write("Votre équipe est constituée de : "); + foreach (Pokemon pkm in p1.getTeam()) { + Console.Write(pkm.getName() + ". "); + } + Console.WriteLine(""); + + for(int j = 0; j < 6; ++j) { + p2.choosePokemon(Characters[p2CharacterChoosen].getPC()[getRandom(Characters[p2CharacterChoosen].getPC().Count)]); + } + + Console.Write("L'équipe de votre adversaire est constituée de : "); + foreach (Pokemon pkm in p2.getTeam()) { + Console.Write(pkm.getName() + ". "); + } + Console.WriteLine("\n\n Préparez vous, le combat va commencer. Vous allez envoyer " + p1.getTeam()[0].getName() + + "et votre adversaire va envoyer " + p2.getTeam()[0].getName() + "."); + + p1.setCurrentPokemonIndex(0); + p2.setCurrentPokemonIndex(0); + } + + private void Combat() { + bool isFighting = true; + bool currentTurnisValid = false; + String entreeStandard; + int p2Choice = getRandom(3); + + while (isFighting) { + Console.WriteLine("\n\n\n"); + while(!currentTurnisValid) { + displayCurrentPlayerTurn(p1); + Console.WriteLine("Pokemon adverse : " + p2.getCurrentPokemon() + " - Type : " + p2.getCurrentPokemon().getType()); + entreeStandard = Console.ReadLine(); + switch (entreeStandard) { + case "1": + Console.WriteLine(p1.getNom() + " décide que " + p1.getCurrentPokemon().getName() + " doit attaquer en physique."); + p1.getCurrentPokemon().PhysAttack(p2.getCurrentPokemon()); + currentTurnisValid = true; + break; + case "2": + Console.WriteLine(p1.getNom() + " décide que " + p1.getCurrentPokemon().getName() + " doit attaquer en spécial."); + p1.getCurrentPokemon().SpeAttack(p2.getCurrentPokemon()); + currentTurnisValid = true; + break; + case "3": + Console.WriteLine(p1.getNom() + " décide que " + p1.getCurrentPokemon().getName() + " revenir."); + displayTeamChange(p1); + entreeStandard = Console.ReadLine(); + entreeStandard = entreeStandard.Substring(0, 1); + if(StringIsValidIntFight(entreeStandard)) { + p1.setCurrentPokemonIndex(int.Parse(entreeStandard)-1); + } + Console.WriteLine("À toi " + p2.getCurrentPokemon()); + currentTurnisValid = true; + break; + default: + Console.WriteLine("Erreur de saisie. Veuillez recommencer."); + break; + } + } + + currentTurnisValid = false; + + if (!p2.getCurrentPokemon().isAlive()) { + bool correctSwitchChoice = false; + if (p2.canStillFight()) { + isFighting = false; + Console.WriteLine("La partie est terminée. " + p1.getNom() + " a gagné !"); + correctSwitchChoice = true; + } else { + while (!correctSwitchChoice) { + Console.WriteLine(p2.getNom() + ", votre pokémon " + p2.getCurrentPokemon().getName() + " n'est plus capable de se battre. Vous devez changer de Pokémon !"); + displayTeamChange(p2); + p2Choice = getRandom(6); + if (p2.getTeam()[p2Choice].isAlive()) { + Console.Write("Reviens " + p2.getCurrentPokemon()); + p2.setCurrentPokemonIndex(p2Choice); + correctSwitchChoice = true; + Console.WriteLine("À toi " + p2.getCurrentPokemon()); + } + } + } + } + + while (!currentTurnisValid) { + p2Choice = getRandom(3); + switch (p2Choice) { + case 0: + Console.WriteLine(p2.getNom() + " décide que " + p2.getCurrentPokemon().getName() + " doit attaquer en physique."); + p2.getCurrentPokemon().PhysAttack(p1.getCurrentPokemon()); + currentTurnisValid = true; + break; + case 1: + Console.WriteLine(p2.getNom() + " décide que " + p2.getCurrentPokemon().getName() + " doit attaquer en spécial."); + p2.getCurrentPokemon().SpeAttack(p1.getCurrentPokemon()); + currentTurnisValid = true; + break; + case 2: + Console.WriteLine(p2.getNom() + " décide que " + p2.getCurrentPokemon().getName() + " revenir."); + displayTeamChange(p2); + p2.setCurrentPokemonIndex(getRandom(6)); + currentTurnisValid = true; + Console.WriteLine("À toi " + p2.getCurrentPokemon()); + break; + default: + Console.WriteLine("Erreur de saisie. Veuillez recommencer."); + break; + } + } + + currentTurnisValid = false; + + if (!p1.getCurrentPokemon().isAlive()) { + bool correctSwitchChoice = false; + if (p1.canStillFight()) { + isFighting = false; + Console.WriteLine("La partie est terminée. " + p2.getNom() + " a gagné !"); + correctSwitchChoice = true; + } else { + while (!correctSwitchChoice) { + Console.WriteLine(p1.getNom() + ", votre pokémon " + p1.getCurrentPokemon().getName() + " n'est plus capable de se battre. Vous devez changer de Pokémon !"); + displayTeamChange(p1); + entreeStandard = Console.ReadLine(); + entreeStandard = entreeStandard.Substring(0, 1); + if (StringIsValidIntFight(entreeStandard) && p1.getTeam()[int.Parse(entreeStandard)-1].isAlive()) { + Console.Write("Reviens " + p1.getCurrentPokemon()); + p1.setCurrentPokemonIndex(int.Parse(entreeStandard)-1); + correctSwitchChoice = true; + Console.WriteLine("À toi " + p1.getCurrentPokemon()); + + } else { + Console.WriteLine("Vous ne pouvez pas switch avec ce pokémon. Merci d'entrer une valeur correcte."); + } + } + } + } + } + } + + private static void displayCurrentPlayerTurn(Player p) { + Console.WriteLine("C'est au tour de " + p.getNom() + " de combattre avec " + p.getCurrentPokemon().ToString() + " Type : " + p.getCurrentPokemon().getType() + "."); + Console.WriteLine("Que souhaitez vous faire : "); + Console.WriteLine("[1] Effectuer une attaque physique (ATK Physique "+ p.getCurrentPokemon().getATKPhys() +")"); + Console.WriteLine("[2] Effectuer une attaque spéciale (ATK Spéciale "+ p.getCurrentPokemon().getATKSpe() +")"); + Console.WriteLine("[3] Changer de pokémon"); + } + + private void displayTeamChange(Player p) { + Console.WriteLine("Avec quel Pokémon switch ?"); + Console.WriteLine(DisplayTeam(p)); + + } + + private int RandomMove() { + return getRandom(3); + } + + private static int getRandom(int max) { Random r = new Random(); return r.Next(max); - } - + } + private Nature GenerateNature() { switch (getRandom(25)) { case 0: @@ -76,8 +405,8 @@ namespace Programmation_objet_TLESIO21.projet { default: return Nature.NULL; } - } - + } + private Pokemon? CreatePokemon(String s) { String[] tab = s.Split(";"); switch (tab[1]) { @@ -120,13 +449,13 @@ namespace Programmation_objet_TLESIO21.projet { default: return null; } - } - - private Player createPlayer(String s) { + } + + private Character createCharacter(String s) { String[] tab = s.Split(";"); List pokemons = new List(); for(int i = 0; i < getRandom(30)+7; ++i) { - pokemons.Add(pkm.ElementAt(getRandom(1072))); + pokemons.Add(Pkm.ElementAt(getRandom(1072))); } foreach (Pokemon pkm in pokemons) { @@ -136,10 +465,10 @@ namespace Programmation_objet_TLESIO21.projet { this.ApplyPlayerEffect(tab[0], pkm); } - return new Player(tab[0], tab[1], pokemons); - } - - public void initializeGame() { + return new Character(tab[0], tab[1] + ". " + tab[2], pokemons); + } + + private void InitializePokemons() { String line; try { //Pass the file path and file name to the StreamReader constructor @@ -154,7 +483,7 @@ namespace Programmation_objet_TLESIO21.projet { line = srPkm.ReadLine(); } //write the line to console window - pkm.Add(CreatePokemon(line)); + Pkm.Add(CreatePokemon(line)); //Read the next line line = srPkm.ReadLine(); } @@ -169,7 +498,7 @@ namespace Programmation_objet_TLESIO21.projet { line = srPerso.ReadLine(); } //write the line to console window - players.Add(createPlayer(line)); + Characters.Add(createCharacter(line)); //Read the next line line = srPerso.ReadLine(); } @@ -180,148 +509,148 @@ namespace Programmation_objet_TLESIO21.projet { } catch (Exception e) { Console.WriteLine("Exception: " + e.Message); } - } - - public void AlterPokemonStat(String stat, double value, Pokemon p) { - switch(stat) { - case "PV": - p.setPV((int)Math.Floor(p.getPV() * value)); - break; - case "ATKPhys": - p.setATKPhys(((int)Math.Floor(p.getATKPhys() * value))); - break; - case "ATKSpe": - p.setATKSpe(((int)Math.Floor(p.getATKSpe() * value))); - break; - case "DEFPhys": - p.setDefPhys(((int)Math.Floor(p.getDEFPhys() * value))); - break; - case "DEFSpe": - p.setDefSpe(((int)Math.Floor(p.getDEFSpe() * value))); - break; - case "Speed": - p.setSpeed(((int)Math.Floor(p.getSpeed() * value))); - break; - default: - break; - - } - } - - public void ApplyNatureEffect(Enum nature, Pokemon p) { - switch(nature) { //malus - case Nature.BOLD: - case Nature.CALM: - case Nature.MODEST: - case Nature.TIMID: - AlterPokemonStat("ATKPhys", 0.9, p); - break; - case Nature.MILD: - case Nature.GENTLE: - case Nature.HASTY: - case Nature.LONELY: - AlterPokemonStat("DEFPhys", 0.9, p); - break; - case Nature.JOLLY: - case Nature.IMPISH: - case Nature.CAREFUL: - case Nature.ADAMANT: - AlterPokemonStat("ATKSpe", 0.9, p); - break; - case Nature.RASH: - case Nature.LAX: - case Nature.NAUGHTY: - case Nature.NAIVE: - AlterPokemonStat("DEFSpe", 0.9, p); - break; - case Nature.BRAVE: - case Nature.QUIET: - case Nature.SASSY: - case Nature.RELAXED: - AlterPokemonStat("Speed", 0.9, p); - break; - default: - break; - } - - switch(nature) { //bonus - case Nature.BRAVE: - case Nature.NAUGHTY: - case Nature.ADAMANT: - case Nature.LONELY: - AlterPokemonStat("ATKPhys", 1.1, p); - break; - case Nature.BOLD: - case Nature.LAX: - case Nature.IMPISH: - case Nature.RELAXED: - AlterPokemonStat("DEFPhys", 1.1, p); - break; - case Nature.QUIET: - case Nature.MILD: - case Nature.RASH: - case Nature.MODEST: - AlterPokemonStat("ATKSpe", 1.1, p); - break; - case Nature.CALM: - case Nature.GENTLE: - case Nature.SASSY: - case Nature.CAREFUL: - AlterPokemonStat("DEFSpe", 1.1, p); - break; - case Nature.JOLLY: - case Nature.NAIVE: - case Nature.HASTY: - case Nature.TIMID: - AlterPokemonStat("Speed", 1.1, p); - break; - default: - break; - } - } - - public void ApplyPlayerEffect(String playerName, Pokemon p) { - switch(playerName) { - case "Applejack": - AlterPokemonStat("PV", 1.05, p); - break; - case "Rainbow Dash": - AlterPokemonStat("ATKPhys", 1.03, p); - break; - case "Twilight Sparkle": - AlterPokemonStat("Speed", 1.07, p); - break; - case "Pinkie Pie": - AlterPokemonStat("DEFPhys", 1.04, p); - break; - case "Fluttershy": - AlterPokemonStat("DEFPhys", 0.96, p); - break; - case "Izzy Moonbow": - AlterPokemonStat("PV", 1.05, p); - AlterPokemonStat("Speed", 0.95, p); - break; - case "Zipp Storm": - AlterPokemonStat("PV", 0.95, p); - AlterPokemonStat("Speed", 1.05, p); - break; - case "Sunny Starscout": - AlterPokemonStat("ATKSpe", 1.03, p); - break; - case "Derpy Hooves": - AlterPokemonStat("PV", 0.95, p); - break; - default: - break; - } - } - - public List GetPokemons() { - return this.pkm; - } - - public List GetPlayers() { - return this.players; - } - } -} + } + + private void AlterPokemonStat(String stat, double value, Pokemon p) { + switch(stat) { + case "PV": + p.setPV((int)Math.Floor(p.getPV() * value)); + break; + case "ATKPhys": + p.setATKPhys(((int)Math.Floor(p.getATKPhys() * value))); + break; + case "ATKSpe": + p.setATKSpe(((int)Math.Floor(p.getATKSpe() * value))); + break; + case "DEFPhys": + p.setDefPhys(((int)Math.Floor(p.getDEFPhys() * value))); + break; + case "DEFSpe": + p.setDefSpe(((int)Math.Floor(p.getDEFSpe() * value))); + break; + case "Speed": + p.setSpeed(((int)Math.Floor(p.getSpeed() * value))); + break; + default: + break; + + } + } + + private void ApplyNatureEffect(Enum nature, Pokemon p) { + switch(nature) { //malus + case Nature.BOLD: + case Nature.CALM: + case Nature.MODEST: + case Nature.TIMID: + AlterPokemonStat("ATKPhys", 0.9, p); + break; + case Nature.MILD: + case Nature.GENTLE: + case Nature.HASTY: + case Nature.LONELY: + AlterPokemonStat("DEFPhys", 0.9, p); + break; + case Nature.JOLLY: + case Nature.IMPISH: + case Nature.CAREFUL: + case Nature.ADAMANT: + AlterPokemonStat("ATKSpe", 0.9, p); + break; + case Nature.RASH: + case Nature.LAX: + case Nature.NAUGHTY: + case Nature.NAIVE: + AlterPokemonStat("DEFSpe", 0.9, p); + break; + case Nature.BRAVE: + case Nature.QUIET: + case Nature.SASSY: + case Nature.RELAXED: + AlterPokemonStat("Speed", 0.9, p); + break; + default: + break; + } + + switch(nature) { //bonus + case Nature.BRAVE: + case Nature.NAUGHTY: + case Nature.ADAMANT: + case Nature.LONELY: + AlterPokemonStat("ATKPhys", 1.1, p); + break; + case Nature.BOLD: + case Nature.LAX: + case Nature.IMPISH: + case Nature.RELAXED: + AlterPokemonStat("DEFPhys", 1.1, p); + break; + case Nature.QUIET: + case Nature.MILD: + case Nature.RASH: + case Nature.MODEST: + AlterPokemonStat("ATKSpe", 1.1, p); + break; + case Nature.CALM: + case Nature.GENTLE: + case Nature.SASSY: + case Nature.CAREFUL: + AlterPokemonStat("DEFSpe", 1.1, p); + break; + case Nature.JOLLY: + case Nature.NAIVE: + case Nature.HASTY: + case Nature.TIMID: + AlterPokemonStat("Speed", 1.1, p); + break; + default: + break; + } + } + + private void ApplyPlayerEffect(String playerName, Pokemon p) { + switch(playerName) { + case "Applejack": + AlterPokemonStat("PV", 1.05, p); + break; + case "Rainbow Dash": + AlterPokemonStat("ATKPhys", 1.03, p); + break; + case "Twilight Sparkle": + AlterPokemonStat("Speed", 1.07, p); + break; + case "Pinkie Pie": + AlterPokemonStat("DEFPhys", 1.04, p); + break; + case "Fluttershy": + AlterPokemonStat("DEFPhys", 0.96, p); + break; + case "Izzy Moonbow": + AlterPokemonStat("PV", 1.05, p); + AlterPokemonStat("Speed", 0.95, p); + break; + case "Zipp Storm": + AlterPokemonStat("PV", 0.95, p); + AlterPokemonStat("Speed", 1.05, p); + break; + case "Sunny Starscout": + AlterPokemonStat("ATKSpe", 1.03, p); + break; + case "Derpy Hooves": + AlterPokemonStat("PV", 0.95, p); + break; + default: + break; + } + } + + private List GetPokemons() { + return this.Pkm; + } + + private List GetCharacters() { + return this.Characters; + } + } +} diff --git a/projet/Player.cs b/projet/Player.cs index 1c7da5d..3cb45de 100644 --- a/projet/Player.cs +++ b/projet/Player.cs @@ -1,29 +1,60 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace Programmation_objet_TLESIO21.projet { - public class Player { - private string Name; - private string Description; - private int level; - private List PC; - private List Team; - - #pragma warning disable CS8618 // Un champ non-nullable doit contenir une valeur non-null lors de la fermeture du constructeur. Envisagez de déclarer le champ comme nullable. - public Player(string Name, string Description, List PC) { - this.Name = Name; - this.Description = Description; - this.PC = PC; - this.level = PC.Count; - this.Team = new List(6); - } - +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Programmation_objet_TLESIO21.projet { + public class Player { + private String Nom; + private List Team; + private int currentPokemonIndex; + + public Player(string nom) { + this.Nom = nom; + this.Team = new List(); + } + + public void choosePokemon(Pokemon pkm) { + this.Team.Add(pkm); + } + + public String getNom() { + return this.Nom; + } + + public List getTeam() { + return this.Team; + } + + public void setCurrentPokemonIndex(int i) { + this.currentPokemonIndex = i; + } + + public Pokemon getCurrentPokemon() { + return this.getTeam()[currentPokemonIndex]; + } + + public bool canStillFight() { + int pkmCount = this.Team.Count; + + + foreach(Pokemon pkm in Team) { + if(!pkm.isAlive()) { + pkmCount--; + } + } + + return pkmCount == 0; + } + public override string ToString() { - return this.Name + " est level " + this.level + ". Ses pokemon sont : " + this.PC.ToString(); - } - - } -} + String sb = ""; + sb += this.Nom + " a pour pokémons : "; + foreach (Pokemon p in this.Team) { + sb += p.getName() + ". "; + } + return sb; + } + } +} diff --git a/projet/Pokemon.cs b/projet/Pokemon.cs index f1b9420..39c2ffb 100644 --- a/projet/Pokemon.cs +++ b/projet/Pokemon.cs @@ -1,128 +1,139 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace Programmation_objet_TLESIO21.projet { - public abstract class Pokemon { - private readonly string Name; - private Type Type; - private Nature Nature; - private int PV; - private int PC; - private int ATKPhys; - private int ATKSpe; - private int DEFPhys; - private int DEFSpe; - private int Speed; - - public Pokemon(string Name, int PV, int ATKPhys, int ATKSpe, int DEFPhys, int DEFSpe, int Speed) { - this.Name = Name; - this.PV = PV; - this.ATKPhys = ATKPhys; - this.ATKSpe = ATKSpe; - this.DEFPhys = DEFPhys; - this.DEFSpe = DEFSpe; - this.Speed = Speed; - } - - public virtual void PhysAttack(Pokemon cible) { - } - - public virtual void SpeAttack(Pokemon cible) { - } - - public void getDamage(int d) { - this.PV -= d; - } - - public Boolean hasEnoughtPC() { - return (this.getPC() > 0); - } - - public Boolean isAlive() { - return (this.getPV() > 0); - } - - public override string ToString() { - return this.getName() + " - PV : " + getPV() + ", PC = " + getPC(); - } - +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Programmation_objet_TLESIO21.projet { + public abstract class Pokemon { + private readonly string Name; + private Type Type; + private Nature Nature; + private int PV; + private int PC; + private int ATKPhys; + private int ATKSpe; + private int DEFPhys; + private int DEFSpe; + private int Speed; + + public Pokemon(string Name, int PV, int ATKPhys, int ATKSpe, int DEFPhys, int DEFSpe, int Speed) { + this.Name = Name; + this.PV = PV; + this.ATKPhys = ATKPhys; + this.ATKSpe = ATKSpe; + this.DEFPhys = DEFPhys; + this.DEFSpe = DEFSpe; + this.Speed = Speed; + } + + public virtual void PhysAttack(Pokemon cible) { + } + + public virtual void SpeAttack(Pokemon cible) { + } + + public void getDamage(int d) { + this.PV -= d; + Console.WriteLine(this.getName() + " a subbi " + d + " dégats"); + } + + public Boolean hasEnoughtPC() { + return (this.getPC() > 0); + } + + public Boolean isAlive() { + return (this.getPV() > 0); + } + + public String getStats() { + return this.getName() + " - PV : " + getPV() + + " - PC = " + getPC() + + " - ATK Physique = " + getATKPhys() + + " - ATK Spéciale = " + getATKSpe() + + " - DEF Physique = " + getDEFPhys() + + " - DEF Spéciale = " + getDEFSpe() + + " - Vitesse = " + getSpeed() ; + } + + public override string ToString() { + return this.Name + " - PV : " + this.PV + " - PC : " + this.PC; + } + public void SetNature(Nature n) { this.Nature = n; - } - - public void setPV(int pv) { - this.PV = pv; - } - - internal void setPC(int pc) { - this.PC = pc; - } - - internal void setType(Type t) { - this.Type = t; - } - - public void setATKPhys(int atk) { - this.ATKPhys = atk; - } - - public void setATKSpe(int atk) { - this.ATKSpe = atk; - } - - public void setDefPhys(int def) { - this.DEFPhys = def; - } - - public void setDefSpe(int def) { - this.DEFSpe = def; - } - - public void setSpeed(int speed) { - this.Speed = speed; - } - - public String getName() { - return this.Name; - } - - public Type getType() { - return this.Type; - } - - public Nature GetNature() { - return this.Nature; - } - - public int getPV() { - return this.PV; - } - - public int getPC() { - return this.PC; - } - - public int getATKPhys() { - return this.ATKPhys; - } - - public int getATKSpe() { - return this.ATKSpe; - } - - public int getDEFPhys() { - return this.DEFPhys; - } - - public int getDEFSpe() { - return this.DEFSpe; - } - - public int getSpeed() { - return this.Speed; - } - } -} + } + + public void setPV(int pv) { + this.PV = pv; + } + + internal void setPC(int pc) { + this.PC = pc; + } + + internal void setType(Type t) { + this.Type = t; + } + + public void setATKPhys(int atk) { + this.ATKPhys = atk; + } + + public void setATKSpe(int atk) { + this.ATKSpe = atk; + } + + public void setDefPhys(int def) { + this.DEFPhys = def; + } + + public void setDefSpe(int def) { + this.DEFSpe = def; + } + + public void setSpeed(int speed) { + this.Speed = speed; + } + + public String getName() { + return this.Name; + } + + public Type getType() { + return this.Type; + } + + public Nature GetNature() { + return this.Nature; + } + + public int getPV() { + return this.PV; + } + + public int getPC() { + return this.PC; + } + + public int getATKPhys() { + return this.ATKPhys; + } + + public int getATKSpe() { + return this.ATKSpe; + } + + public int getDEFPhys() { + return this.DEFPhys; + } + + public int getDEFSpe() { + return this.DEFSpe; + } + + public int getSpeed() { + return this.Speed; + } + } +} diff --git a/projet/Types/PokemonBug.cs b/projet/Types/PokemonBug.cs index 8e1406f..9e8cf1b 100644 --- a/projet/Types/PokemonBug.cs +++ b/projet/Types/PokemonBug.cs @@ -24,13 +24,17 @@ namespace Programmation_objet_TLESIO21.projet { cible.getType().Equals(Type.GHOST) || cible.getType().Equals(Type.FLYING)) { damage /= 2; + Console.WriteLine("Ce n'est pas très efficace"); } if(cible.getType().Equals(Type.GRASS) || cible.getType().Equals(Type.PSYCHIC) || cible.getType().Equals(Type.DARK)) { damage *= 2; + Console.WriteLine("C'est super efficace"); } cible.getDamage(damage); + } else { + Console.WriteLine("L'attaque n'a eu aucun effet"); } } @@ -46,13 +50,17 @@ namespace Programmation_objet_TLESIO21.projet { cible.getType().Equals(Type.GHOST) || cible.getType().Equals(Type.FLYING)) { damage /= 2; + Console.WriteLine("Ce n'est pas très efficace"); } if (cible.getType().Equals(Type.GRASS) || cible.getType().Equals(Type.PSYCHIC) || cible.getType().Equals(Type.DARK)) { damage *= 2; + Console.WriteLine("C'est super efficace"); } cible.getDamage(damage); + } else { + Console.WriteLine("L'attaque n'a eu aucun effet"); } } } diff --git a/projet/Types/PokemonDark.cs b/projet/Types/PokemonDark.cs index 4fbc9cf..8b44d01 100644 --- a/projet/Types/PokemonDark.cs +++ b/projet/Types/PokemonDark.cs @@ -20,12 +20,16 @@ namespace Programmation_objet_TLESIO21.projet { cible.getType().Equals(Type.FAIRY) || cible.getType().Equals(Type.DARK)) { damage /= 2; + Console.WriteLine("Ce n'est pas très efficace"); } - if(cible.getType().Equals(Type.PSYCHIC) || + if (cible.getType().Equals(Type.PSYCHIC) || cible.getType().Equals(Type.GHOST)) { damage *= 2; + Console.WriteLine("C'est super efficace"); } cible.getDamage(damage); + } else { + Console.WriteLine("L'attaque n'a eu aucun effet"); } } @@ -37,12 +41,16 @@ namespace Programmation_objet_TLESIO21.projet { cible.getType().Equals(Type.FAIRY) || cible.getType().Equals(Type.DARK)) { damage /= 2; + Console.WriteLine("Ce n'est pas très efficace"); } if (cible.getType().Equals(Type.PSYCHIC) || cible.getType().Equals(Type.GHOST)) { damage *= 2; + Console.WriteLine("C'est super efficace"); } cible.getDamage(damage); + } else { + Console.WriteLine("L'attaque n'a eu aucun effet"); } } } diff --git a/projet/Types/PokemonDragon.cs b/projet/Types/PokemonDragon.cs index 3e9bcb2..94d2e5e 100644 --- a/projet/Types/PokemonDragon.cs +++ b/projet/Types/PokemonDragon.cs @@ -17,15 +17,20 @@ namespace Programmation_objet_TLESIO21.projet { int damage = cible.getDEFPhys() - this.getATKPhys(); if(cible.getType().Equals(Type.FAIRY)) { damage = 0; + Console.WriteLine("Ca n'affecte pas le " + cible.getName() + "ennemi"); } if(damage > 0) { if(cible.getType().Equals(Type.STEEL)) { damage /= 2; + Console.WriteLine("Ce n'est pas très efficace"); } - if(cible.getType().Equals(Type.DRAGON)) { + if (cible.getType().Equals(Type.DRAGON)) { damage *= 2; + Console.WriteLine("C'est super efficace"); } cible.getDamage(damage); + } else { + Console.WriteLine("L'attaque n'a eu aucun effet"); } } @@ -34,15 +39,20 @@ namespace Programmation_objet_TLESIO21.projet { int damage = cible.getDEFSpe() - this.getATKSpe(); if (cible.getType().Equals(Type.FAIRY)) { damage = 0; + Console.WriteLine("Ca n'affecte pas le " + cible.getName() + "ennemi"); } if (damage > 0) { if (cible.getType().Equals(Type.STEEL)) { damage /= 2; + Console.WriteLine("Ce n'est pas très efficace"); } if (cible.getType().Equals(Type.DRAGON)) { damage *= 2; + Console.WriteLine("C'est super efficace"); } cible.getDamage(damage); + } else { + Console.WriteLine("L'attaque n'a eu aucun effet"); } } } diff --git a/projet/Types/PokemonElectric.cs b/projet/Types/PokemonElectric.cs index a97b9eb..321d65e 100644 --- a/projet/Types/PokemonElectric.cs +++ b/projet/Types/PokemonElectric.cs @@ -17,18 +17,23 @@ namespace Programmation_objet_TLESIO21.projet { int damage = cible.getDEFPhys() - this.getATKPhys(); if(cible.getType().Equals(Type.GROUND)) { damage = 0; + Console.WriteLine("Ca n'affecte pas le " + cible.getName() + "ennemi"); } - if(damage > 0) { + if (damage > 0) { if(cible.getType().Equals(Type.DRAGON) || cible.getType().Equals(Type.GRASS) || cible.getType().Equals(Type.ELECTRIC)) { damage /= 2; + Console.WriteLine("Ce n'est pas très efficace"); } - if(cible.getType().Equals(Type.STEEL) || + if (cible.getType().Equals(Type.STEEL) || cible.getType().Equals(Type.WATER)) { damage *= 2; + Console.WriteLine("C'est super efficace"); } cible.getDamage(damage); + } else { + Console.WriteLine("L'attaque n'a eu aucun effet"); } } @@ -37,16 +42,19 @@ namespace Programmation_objet_TLESIO21.projet { int damage = cible.getDEFSpe() - this.getATKSpe(); if(cible.getType().Equals(Type.GROUND)) { damage = 0; + Console.WriteLine("Ca n'affecte pas le " + cible.getName() + "ennemi"); } - if(damage > 0) { + if (damage > 0) { if(cible.getType().Equals(Type.DRAGON) || cible.getType().Equals(Type.GRASS) || cible.getType().Equals(Type.ELECTRIC)) { damage /= 2; + Console.WriteLine("Ce n'est pas très efficace"); } - if(cible.getType().Equals(Type.FLYING) || + if (cible.getType().Equals(Type.FLYING) || cible.getType().Equals(Type.WATER)) { damage *= 2; + Console.WriteLine("C'est super efficace"); } cible.getDamage(damage); } diff --git a/projet/Types/PokemonFairy.cs b/projet/Types/PokemonFairy.cs index c99159d..e53ce6a 100644 --- a/projet/Types/PokemonFairy.cs +++ b/projet/Types/PokemonFairy.cs @@ -20,13 +20,17 @@ namespace Programmation_objet_TLESIO21.projet { cible.getType().Equals(Type.STEEL) || cible.getType().Equals(Type.POISON)) { damage /= 2; + Console.WriteLine("Ce n'est pas très efficace"); } - if(cible.getType().Equals(Type.FIGHTING) || + if (cible.getType().Equals(Type.FIGHTING) || cible.getType().Equals(Type.DRAGON) || cible.getType().Equals(Type.DARK)) { damage *= 2; + Console.WriteLine("C'est super efficace"); } cible.getDamage(damage); + } else { + Console.WriteLine("L'attaque n'a eu aucun effet"); } } @@ -38,13 +42,17 @@ namespace Programmation_objet_TLESIO21.projet { cible.getType().Equals(Type.STEEL) || cible.getType().Equals(Type.POISON)) { damage /= 2; + Console.WriteLine("Ce n'est pas très efficace"); } if (cible.getType().Equals(Type.FIGHTING) || cible.getType().Equals(Type.DRAGON) || cible.getType().Equals(Type.DARK)) { damage *= 2; + Console.WriteLine("C'est super efficace"); } cible.getDamage(damage); + } else { + Console.WriteLine("L'attaque n'a eu aucun effet"); } } } diff --git a/projet/Types/PokemonFighting.cs b/projet/Types/PokemonFighting.cs index bdf4308..dd4affb 100644 --- a/projet/Types/PokemonFighting.cs +++ b/projet/Types/PokemonFighting.cs @@ -17,22 +17,27 @@ namespace Programmation_objet_TLESIO21.projet { int damage = cible.getDEFPhys() - this.getATKPhys(); if(cible.getType().Equals(Type.GHOST)) { damage = 0; + Console.WriteLine("Ca n'affecte pas le " + cible.getName() + "ennemi"); } - if(damage > 0) { + if (damage > 0) { if(cible.getType().Equals(Type.PSYCHIC) || cible.getType().Equals(Type.FLYING) || cible.getType().Equals(Type.BUG) || cible.getType().Equals(Type.FAIRY)) { damage /= 2; + Console.WriteLine("Ce n'est pas très efficace"); } - if(cible.getType().Equals(Type.STEEL) || + if (cible.getType().Equals(Type.STEEL) || cible.getType().Equals(Type.NORMAL) || cible.getType().Equals(Type.DARK) || cible.getType().Equals(Type.ICE) || cible.getType().Equals(Type.ROCK)) { damage *= 2; + Console.WriteLine("C'est super efficace"); } cible.getDamage(damage); + } else { + Console.WriteLine("L'attaque n'a eu aucun effet"); } } @@ -41,6 +46,7 @@ namespace Programmation_objet_TLESIO21.projet { int damage = cible.getDEFSpe() - this.getATKSpe(); if (cible.getType().Equals(Type.GHOST)) { damage = 0; + Console.WriteLine("Ca n'affecte pas le " + cible.getName() + "ennemi"); } if (damage > 0) { if (cible.getType().Equals(Type.PSYCHIC) || @@ -48,6 +54,7 @@ namespace Programmation_objet_TLESIO21.projet { cible.getType().Equals(Type.BUG) || cible.getType().Equals(Type.FAIRY)) { damage /= 2; + Console.WriteLine("Ce n'est pas très efficace"); } if (cible.getType().Equals(Type.STEEL) || cible.getType().Equals(Type.NORMAL) || @@ -55,8 +62,11 @@ namespace Programmation_objet_TLESIO21.projet { cible.getType().Equals(Type.ICE) || cible.getType().Equals(Type.ROCK)) { damage *= 2; + Console.WriteLine("C'est super efficace"); } cible.getDamage(damage); + } else { + Console.WriteLine("L'attaque n'a eu aucun effet"); } } } diff --git a/projet/Types/PokemonFire.cs b/projet/Types/PokemonFire.cs index 75fd126..23d53e2 100644 --- a/projet/Types/PokemonFire.cs +++ b/projet/Types/PokemonFire.cs @@ -20,14 +20,18 @@ namespace Programmation_objet_TLESIO21.projet { cible.getType().Equals(Type.FIRE) || cible.getType().Equals(Type.ROCK)) { damage /= 2; + Console.WriteLine("Ce n'est pas très efficace"); } - if(cible.getType().Equals(Type.GRASS) || + if (cible.getType().Equals(Type.GRASS) || cible.getType().Equals(Type.BUG) || cible.getType().Equals(Type.ICE) || cible.getType().Equals(Type.STEEL)) { damage *= 2; + Console.WriteLine("C'est super efficace"); } cible.getDamage(damage); + } else { + Console.WriteLine("L'attaque n'a eu aucun effet"); } } @@ -40,14 +44,18 @@ namespace Programmation_objet_TLESIO21.projet { cible.getType().Equals(Type.FIRE) || cible.getType().Equals(Type.ROCK)) { damage /= 2; + Console.WriteLine("Ce n'est pas très efficace"); } - if(cible.getType().Equals(Type.GRASS) || + if (cible.getType().Equals(Type.GRASS) || cible.getType().Equals(Type.BUG) || cible.getType().Equals(Type.ICE) || cible.getType().Equals(Type.STEEL)) { damage *= 2; + Console.WriteLine("C'est super efficace"); } cible.getDamage(damage); + } else { + Console.WriteLine("L'attaque n'a eu aucun effet"); } } } diff --git a/projet/Types/PokemonFlying.cs b/projet/Types/PokemonFlying.cs index df2f8f6..3289f81 100644 --- a/projet/Types/PokemonFlying.cs +++ b/projet/Types/PokemonFlying.cs @@ -20,13 +20,17 @@ namespace Programmation_objet_TLESIO21.projet { cible.getType().Equals(Type.STEEL) || cible.getType().Equals(Type.ELECTRIC)) { damage /= 2; + Console.WriteLine("Ce n'est pas très efficace"); } - if(cible.getType().Equals(Type.FIGHTING) || + if (cible.getType().Equals(Type.FIGHTING) || cible.getType().Equals(Type.BUG) || cible.getType().Equals(Type.GRASS)) { damage *= 2; + Console.WriteLine("C'est super efficace"); } cible.getDamage(damage); + } else { + Console.WriteLine("L'attaque n'a eu aucun effet"); } } @@ -38,13 +42,17 @@ namespace Programmation_objet_TLESIO21.projet { cible.getType().Equals(Type.STEEL) || cible.getType().Equals(Type.ELECTRIC)) { damage /= 2; + Console.WriteLine("Ce n'est pas très efficace"); } if (cible.getType().Equals(Type.FIGHTING) || cible.getType().Equals(Type.BUG) || cible.getType().Equals(Type.GRASS)) { damage *= 2; + Console.WriteLine("C'est super efficace"); } cible.getDamage(damage); + } else { + Console.WriteLine("L'attaque n'a eu aucun effet"); } } } diff --git a/projet/Types/PokemonGhost.cs b/projet/Types/PokemonGhost.cs index d0dd5f9..0a69de8 100644 --- a/projet/Types/PokemonGhost.cs +++ b/projet/Types/PokemonGhost.cs @@ -17,16 +17,21 @@ namespace Programmation_objet_TLESIO21.projet { int damage = cible.getDEFPhys() - this.getATKPhys(); if(cible.getType().Equals(Type.NORMAL)) { damage = 0; + Console.WriteLine("Ca n'affecte pas le " + cible.getName() + "ennemi"); } - if(damage > 0) { + if (damage > 0) { if(cible.getType().Equals(Type.DARK)) { damage /= 2; + Console.WriteLine("Ce n'est pas très efficace"); } - if(cible.getType().Equals(Type.PSYCHIC) || + if (cible.getType().Equals(Type.PSYCHIC) || cible.getType().Equals(Type.GHOST)) { damage *= 2; + Console.WriteLine("C'est super efficace"); } cible.getDamage(damage); + } else { + Console.WriteLine("L'attaque n'a eu aucun effet"); } } @@ -35,16 +40,21 @@ namespace Programmation_objet_TLESIO21.projet { int damage = cible.getDEFSpe() - this.getATKSpe(); if (cible.getType().Equals(Type.NORMAL)) { damage = 0; + Console.WriteLine("Ca n'affecte pas le " + cible.getName() + "ennemi"); } if (damage > 0) { if (cible.getType().Equals(Type.DARK)) { damage /= 2; + Console.WriteLine("Ce n'est pas très efficace"); } if (cible.getType().Equals(Type.PSYCHIC) || cible.getType().Equals(Type.GHOST)) { damage *= 2; + Console.WriteLine("C'est super efficace"); } cible.getDamage(damage); + } else { + Console.WriteLine("L'attaque n'a eu aucun effet"); } } } diff --git a/projet/Types/PokemonGrass.cs b/projet/Types/PokemonGrass.cs index 7af7d29..b429010 100644 --- a/projet/Types/PokemonGrass.cs +++ b/projet/Types/PokemonGrass.cs @@ -23,13 +23,17 @@ namespace Programmation_objet_TLESIO21.projet { cible.getType().Equals(Type.POISON) || cible.getType().Equals(Type.FLYING)) { damage /= 2; + Console.WriteLine("Ce n'est pas très efficace"); } - if(cible.getType().Equals(Type.WATER) || + if (cible.getType().Equals(Type.WATER) || cible.getType().Equals(Type.ROCK) || cible.getType().Equals(Type.GROUND)) { damage *= 2; + Console.WriteLine("C'est super efficace"); } cible.getDamage(damage); + } else { + Console.WriteLine("L'attaque n'a eu aucun effet"); } } @@ -45,13 +49,17 @@ namespace Programmation_objet_TLESIO21.projet { cible.getType().Equals(Type.POISON) || cible.getType().Equals(Type.FLYING)) { damage /= 2; + Console.WriteLine("Ce n'est pas très efficace"); } - if(cible.getType().Equals(Type.WATER) || + if (cible.getType().Equals(Type.WATER) || cible.getType().Equals(Type.ROCK) || cible.getType().Equals(Type.GROUND)) { damage *= 2; + Console.WriteLine("C'est super efficace"); } cible.getDamage(damage); + } else { + Console.WriteLine("L'attaque n'a eu aucun effet"); } } } diff --git a/projet/Types/PokemonGround.cs b/projet/Types/PokemonGround.cs index f489773..11a5aee 100644 --- a/projet/Types/PokemonGround.cs +++ b/projet/Types/PokemonGround.cs @@ -17,20 +17,25 @@ namespace Programmation_objet_TLESIO21.projet { int damage = cible.getDEFPhys() - this.getATKPhys(); if(cible.getType().Equals(Type.FLYING)) { damage = 0; + Console.WriteLine("Ca n'affecte pas le " + cible.getName() + "ennemi"); } - if(damage > 0) { + if (damage > 0) { if(cible.getType().Equals(Type.BUG) || cible.getType().Equals(Type.GRASS)) { damage /= 2; + Console.WriteLine("Ce n'est pas très efficace"); } - if(cible.getType().Equals(Type.ROCK) || + if (cible.getType().Equals(Type.ROCK) || cible.getType().Equals(Type.STEEL) || cible.getType().Equals(Type.FIRE) || cible.getType().Equals(Type.POISON) || cible.getType().Equals(Type.ELECTRIC)) { damage *= 2; + Console.WriteLine("C'est super efficace"); } cible.getDamage(damage); + } else { + Console.WriteLine("L'attaque n'a eu aucun effet"); } } @@ -38,6 +43,7 @@ namespace Programmation_objet_TLESIO21.projet { this.setPC(this.getPC() - 4); int damage = cible.getDEFSpe() - this.getATKSpe(); if(cible.getType().Equals(Type.FLYING)) { + Console.WriteLine("Ca n'affecte pas le " + cible.getName() + "ennemi"); damage = 0; } if(damage > 0) { @@ -45,12 +51,16 @@ namespace Programmation_objet_TLESIO21.projet { cible.getType().Equals(Type.GRASS) || cible.getType().Equals(Type.ELECTRIC)) { damage /= 2; + Console.WriteLine("Ce n'est pas très efficace"); } - if(cible.getType().Equals(Type.FLYING) || + if (cible.getType().Equals(Type.FLYING) || cible.getType().Equals(Type.WATER)) { damage *= 2; + Console.WriteLine("C'est super efficace"); } cible.getDamage(damage); + } else { + Console.WriteLine("L'attaque n'a eu aucun effet"); } } } diff --git a/projet/Types/PokemonIce.cs b/projet/Types/PokemonIce.cs index 09edd92..474abe2 100644 --- a/projet/Types/PokemonIce.cs +++ b/projet/Types/PokemonIce.cs @@ -21,14 +21,18 @@ namespace Programmation_objet_TLESIO21.projet { cible.getType().Equals(Type.FIRE) || cible.getType().Equals(Type.ICE)) { damage /= 2; + Console.WriteLine("Ce n'est pas très efficace"); } - if(cible.getType().Equals(Type.DRAGON) || + if (cible.getType().Equals(Type.DRAGON) || cible.getType().Equals(Type.GRASS) || cible.getType().Equals(Type.GROUND) || cible.getType().Equals(Type.FLYING)) { damage *= 2; + Console.WriteLine("C'est super efficace"); } cible.getDamage(damage); + } else { + Console.WriteLine("L'attaque n'a eu aucun effet"); } } @@ -41,14 +45,18 @@ namespace Programmation_objet_TLESIO21.projet { cible.getType().Equals(Type.FIRE) || cible.getType().Equals(Type.ICE)) { damage /= 2; + Console.WriteLine("Ce n'est pas très efficace"); } if (cible.getType().Equals(Type.DRAGON) || cible.getType().Equals(Type.GRASS) || cible.getType().Equals(Type.GROUND) || cible.getType().Equals(Type.FLYING)) { damage *= 2; + Console.WriteLine("C'est super efficace"); } cible.getDamage(damage); + } else { + Console.WriteLine("L'attaque n'a eu aucun effet"); } } } diff --git a/projet/Types/PokemonNormal.cs b/projet/Types/PokemonNormal.cs index f1860e8..a2fd744 100644 --- a/projet/Types/PokemonNormal.cs +++ b/projet/Types/PokemonNormal.cs @@ -17,12 +17,16 @@ namespace Programmation_objet_TLESIO21.projet { int damage = cible.getDEFPhys() - this.getATKPhys(); if(cible.getType().Equals(Type.GHOST)) { damage = 0; + Console.WriteLine("Ca n'affecte pas le " + cible.getName() + "ennemi"); } - if(damage > 0) { + if (damage > 0) { if(cible.getType().Equals(Type.STEEL) || cible.getType().Equals(Type.ROCK)) { damage /= 2; + Console.WriteLine("Ce n'est pas très efficace"); } cible.getDamage(damage); + } else { + Console.WriteLine("L'attaque n'a eu aucun effet"); } } @@ -35,8 +39,11 @@ namespace Programmation_objet_TLESIO21.projet { if(damage > 0) { if(cible.getType().Equals(Type.STEEL) || cible.getType().Equals(Type.ROCK)) { damage /= 2; + Console.WriteLine("Ce n'est pas très efficace"); } cible.getDamage(damage); + } else { + Console.WriteLine("L'attaque n'a eu aucun effet"); } } } diff --git a/projet/Types/PokemonPoison.cs b/projet/Types/PokemonPoison.cs index fb92863..5da584e 100644 --- a/projet/Types/PokemonPoison.cs +++ b/projet/Types/PokemonPoison.cs @@ -17,19 +17,24 @@ namespace Programmation_objet_TLESIO21.projet { int damage = cible.getDEFPhys() - this.getATKPhys(); if(cible.getType().Equals(Type.STEEL)) { damage = 0; + Console.WriteLine("Ca n'affecte pas le " + cible.getName() + "ennemi"); } - if(damage > 0) { + if (damage > 0) { if(cible.getType().Equals(Type.POISON) || cible.getType().Equals(Type.ROCK) || cible.getType().Equals(Type.GROUND) || cible.getType().Equals(Type.GHOST)) { damage /= 2; + Console.WriteLine("Ce n'est pas très efficace"); } - if(cible.getType().Equals(Type.FAIRY) || + if (cible.getType().Equals(Type.FAIRY) || cible.getType().Equals(Type.GRASS)) { damage *= 2; + Console.WriteLine("C'est super efficace"); } cible.getDamage(damage); + } else { + Console.WriteLine("L'attaque n'a eu aucun effet"); } } @@ -38,6 +43,7 @@ namespace Programmation_objet_TLESIO21.projet { int damage = cible.getDEFSpe() - this.getATKSpe(); if (cible.getType().Equals(Type.STEEL)) { damage = 0; + Console.WriteLine("Ca n'affecte pas le " + cible.getName() + "ennemi"); } if (damage > 0) { if (cible.getType().Equals(Type.POISON) || @@ -45,12 +51,16 @@ namespace Programmation_objet_TLESIO21.projet { cible.getType().Equals(Type.GROUND) || cible.getType().Equals(Type.GHOST)) { damage /= 2; + Console.WriteLine("Ce n'est pas très efficace"); } if (cible.getType().Equals(Type.FAIRY) || cible.getType().Equals(Type.GRASS)) { damage *= 2; + Console.WriteLine("C'est super efficace"); } cible.getDamage(damage); + } else { + Console.WriteLine("L'attaque n'a eu aucun effet"); } } } diff --git a/projet/Types/PokemonPsychic.cs b/projet/Types/PokemonPsychic.cs index fc3ce42..b1c139d 100644 --- a/projet/Types/PokemonPsychic.cs +++ b/projet/Types/PokemonPsychic.cs @@ -17,17 +17,22 @@ namespace Programmation_objet_TLESIO21.projet { int damage = cible.getDEFPhys() - this.getATKPhys(); if(cible.getType().Equals(Type.DARK)) { damage = 0; + Console.WriteLine("Ca n'affecte pas le " + cible.getName() + "ennemi"); } - if(damage > 0) { + if (damage > 0) { if(cible.getType().Equals(Type.STEEL) || cible.getType().Equals(Type.PSYCHIC)) { damage /= 2; + Console.WriteLine("Ce n'est pas très efficace"); } - if(cible.getType().Equals(Type.FIGHTING) || + if (cible.getType().Equals(Type.FIGHTING) || cible.getType().Equals(Type.POISON)) { damage *= 2; + Console.WriteLine("C'est super efficace"); } cible.getDamage(damage); + } else { + Console.WriteLine("L'attaque n'a eu aucun effet"); } } @@ -35,18 +40,23 @@ namespace Programmation_objet_TLESIO21.projet { this.setPC(this.getPC() - 3); int damage = cible.getDEFSpe() - this.getATKSpe(); if (cible.getType().Equals(Type.DARK)) { + Console.WriteLine("Ca n'affecte pas le " + cible.getName() + "ennemi"); damage = 0; } if (damage > 0) { if (cible.getType().Equals(Type.STEEL) || cible.getType().Equals(Type.PSYCHIC)) { damage /= 2; + Console.WriteLine("Ce n'est pas très efficace"); } if (cible.getType().Equals(Type.FIGHTING) || cible.getType().Equals(Type.POISON)) { damage *= 2; + Console.WriteLine("C'est super efficace"); } cible.getDamage(damage); + } else { + Console.WriteLine("L'attaque n'a eu aucun effet"); } } } diff --git a/projet/Types/PokemonRock.cs b/projet/Types/PokemonRock.cs index 924b23a..a08ce80 100644 --- a/projet/Types/PokemonRock.cs +++ b/projet/Types/PokemonRock.cs @@ -20,13 +20,17 @@ namespace Programmation_objet_TLESIO21.projet { cible.getType().Equals(Type.FIGHTING) || cible.getType().Equals(Type.GROUND)) { damage /= 2; + Console.WriteLine("Ce n'est pas très efficace"); } - if(cible.getType().Equals(Type.FIRE) || + if (cible.getType().Equals(Type.FIRE) || cible.getType().Equals(Type.ICE) || cible.getType().Equals(Type.BUG)) { damage *= 2; + Console.WriteLine("C'est super efficace"); } cible.getDamage(damage); + } else { + Console.WriteLine("L'attaque n'a eu aucun effet"); } } @@ -38,13 +42,17 @@ namespace Programmation_objet_TLESIO21.projet { cible.getType().Equals(Type.FIGHTING) || cible.getType().Equals(Type.GROUND)) { damage /= 2; + Console.WriteLine("Ce n'est pas très efficace"); } - if(cible.getType().Equals(Type.FIRE) || + if (cible.getType().Equals(Type.FIRE) || cible.getType().Equals(Type.ICE) || cible.getType().Equals(Type.BUG)) { damage *= 2; + Console.WriteLine("C'est super efficace"); } cible.getDamage(damage); + } else { + Console.WriteLine("L'attaque n'a eu aucun effet"); } } } diff --git a/projet/Types/PokemonSteel.cs b/projet/Types/PokemonSteel.cs index 77ae47a..7f95a95 100644 --- a/projet/Types/PokemonSteel.cs +++ b/projet/Types/PokemonSteel.cs @@ -21,13 +21,17 @@ namespace Programmation_objet_TLESIO21.projet { cible.getType().Equals(Type.FIRE) || cible.getType().Equals(Type.ELECTRIC)) { damage /= 2; + Console.WriteLine("Ce n'est pas très efficace"); } - if(cible.getType().Equals(Type.FAIRY) || + if (cible.getType().Equals(Type.FAIRY) || cible.getType().Equals(Type.ICE) || cible.getType().Equals(Type.ROCK)) { damage *= 2; + Console.WriteLine("C'est super efficace"); } cible.getDamage(damage); + } else { + Console.WriteLine("L'attaque n'a eu aucun effet"); } } @@ -40,13 +44,17 @@ namespace Programmation_objet_TLESIO21.projet { cible.getType().Equals(Type.FIRE) || cible.getType().Equals(Type.ELECTRIC)) { damage /= 2; + Console.WriteLine("Ce n'est pas très efficace"); } if (cible.getType().Equals(Type.FAIRY) || cible.getType().Equals(Type.ICE) || cible.getType().Equals(Type.ROCK)) { damage *= 2; + Console.WriteLine("C'est super efficace"); } cible.getDamage(damage); + } else { + Console.WriteLine("L'attaque n'a eu aucun effet"); } } } diff --git a/projet/Types/PokemonWater.cs b/projet/Types/PokemonWater.cs index 21bed03..c6d47d1 100644 --- a/projet/Types/PokemonWater.cs +++ b/projet/Types/PokemonWater.cs @@ -19,13 +19,17 @@ namespace Programmation_objet_TLESIO21.projet { cible.getType().Equals(Type.WATER) || cible.getType().Equals(Type.GRASS)) { damage /= 2; + Console.WriteLine("Ce n'est pas très efficace"); } - if(cible.getType().Equals(Type.FIRE) || + if (cible.getType().Equals(Type.FIRE) || cible.getType().Equals(Type.ROCK) || cible.getType().Equals(Type.GROUND)) { damage *= 2; + Console.WriteLine("C'est super efficace"); } cible.getDamage(damage); + } else { + Console.WriteLine("L'attaque n'a eu aucun effet"); } } @@ -37,13 +41,17 @@ namespace Programmation_objet_TLESIO21.projet { cible.getType().Equals(Type.WATER) || cible.getType().Equals(Type.GRASS)) { damage /= 2; + Console.WriteLine("Ce n'est pas très efficace"); } - if(cible.getType().Equals(Type.FIRE) || + if (cible.getType().Equals(Type.FIRE) || cible.getType().Equals(Type.ROCK) || cible.getType().Equals(Type.GROUND)) { damage *= 2; + Console.WriteLine("C'est super efficace"); } cible.getDamage(damage); + } else { + Console.WriteLine("L'attaque n'a eu aucun effet"); } } }