Créer une classe Pokemon avec les attributs d'instance nom (str), pv (points de vie), attack et level (ayant 0 comme valeur par défaut) de type int. À l'instanciation d'un objet Pokemon (qu'on nommera un pokemon), l'attribut attack devra être compris entre 20 et 50 et l'attribut pv sera compris entre 50 et 200. Si on essaye de créer un pokemon avec un pv supérieur à 200, il sera bloqué à 200 ; s'il est inférieur à 50, il sera bloqué à 50, etc.
Créer une méthode spéciale qui affiche les caractéristiques d'un pokemon.
Créer une méthode attaque qui prend en argument un autre pokemon.
pv) en fonction des attaques de notre pokemon.random.random()) qu'on multipliera par le nombre de points d'attaque du pokemon.pv, il lui retire au plus 30 points de pv d'un coup. Il restera donc au moins 70 points de pv à l'adversaire.pv inférieur à 0.Créer une méthode level_up qui ajoute 1 au "level" du pokemon, 5 points de pv et 2 en attaque (en restant limité à ce qui est défini dans la question 1).
Créer une classe Dresseur qui a les attributs d'instance nom et liste_pokemon. À l'instanciation d'un objet Dresseur (qu'on nommera un dresseur), la liste de ses pokemons doit être vide. Elle sera ensuite limitée à 6 pokemons.
Créer une méthode spéciale qui affiche les caractéristiques d'un dresseur.
Créer une méthode capture permettant à un dresseur d'ajouter un pokemon à sa liste de pokemons (attention à la limiter à 6). Le pokemon à ajouter doit être passé en paramètre.
Créer la fonction nom_pokemon qui renvoie la liste formée des 706 noms de pokemons à partir du fichier csv pokemon.csv, qui est à télécharger dans le même dossier que votre fichier Python. On pourra utiliser le module Python csv (voir documentation en ligne si besoin).
Créer la fonction generer_pokemon qui renvoie un pokemon dont le nom est choisi au hasard dans la liste des pokemons obtenue avec la fonction précédente, les pv sont choisis au hasard (compris entre 50 et 200) et l'attaque est, elle aussi, choisie au hasard (comprise entre 20 et 50).
Créer la fonction combat qui prend en paramètres 2 pokemons et qui affiche le vainqueur du combat. Cette fonction devra faire combattre les 2 pokemons l'un contre l'autre. Le premier combattant est choisi au hasard. Le dernier pokemon en vie (pv non nul) sera le gagnant. Les 2 pokemons regagnent alors leurs pv, et le gagnant prend 1 point de "level". On pourra afficher quelques détails sur le combat et les combattants à chaque tour (comme qui est en train d'attaquer, ce qu'il reste comme pv aux 2 adversaires après chaque attaque, etc.).
Créer 2 dresseurs et leur faire capturer 6 pokemons chacun, générés au hasard par la fonction generer_pokemon.
Créer une fonction duel qui prend en paramètre deux dresseurs et qui affiche le vainqueur du duel. Cette fonction devra faire affronter les pokemons des dresseurs selon leur ordre dans la liste. Dès que la vie d'un pokemon passe à 0, le pokemon suivant dans la liste est envoyé combattre le vainqueur. Quand un dresseur a tous ses pokemons battus, il a perdu le duel. Comme pour la fonction précédente, on pourra afficher quelques détails sur le duel.
Au lieu de sortir les pokemons dans l'ordre de la liste du dresseur, on pourra demander au dresseur de choisir le pokemon qu'il veut utiliser pour chaque combat (tant qu'il lui reste des pokemons dans la liste). Vous pourrez alors finir le programme pour faire jouer un joueur contre un autre ou contre l'ordinateur.