public override void Update(GameTime gameTime)//mise à jour des tours tant que en vie (both trainer et son pokémon) { bool UserPkmPrioritaire; while (UserTrainer.EstEnVie() && OpponentTrainer.EstEnVie()) { //UserPkmPrioritaire = true; while (UserPokemon.EstEnVie && OpponentPokemon.EstEnVie) { //Système de tours entre pkmns ici AfficherMenuAttaques(); //On va commencer par savoir comment choisir une attaque, après on fera un menu pour fight/bag/pokemons/run if (UserPokemon.Speed < OpponentPokemon.Speed) //le tour du joueur sauf si prouvé du contraire { UserPkmPrioritaire = false; } else { UserPkmPrioritaire = true; } //Important de garder dans la boucle, si la vitesse est changée par une attaque effect, et que l'adversaire ou le user devient plus rapide, il a droit de frapper deux fois if (UserPkmPrioritaire) //Si le pokémon User est plus rapide { OpponentPokemon.Défendre(CalculPointsDamage(UserPokemon, OpponentPokemon, numéroAttaqueChoisie)); //fonctions temporaires, à modifier pour calculer les points de dommages avec la formule UserPokemon.Défendre(CalculPointsDamage(OpponentPokemon, UserPokemon, OpponentPokemon.AttaqueAléatoire())); UserPkmPrioritaire = false; //fin de son tour } else //Si le pokémon adverse est le plus rapide { UserPokemon.Défendre(CalculPointsDamage(OpponentPokemon, UserPokemon, OpponentPokemon.AttaqueAléatoire())); // c'est le tour du pokémon adverse OpponentPokemon.Défendre(CalculPointsDamage(UserPokemon, OpponentPokemon, numéroAttaqueChoisie)); UserPkmPrioritaire = true; } } if (!OpponentPokemon.EstEnVie)//sorti de la boucle de combat: l'un des deux est mort { //Message/animation/whatever, opponent has been defeated! UserPokemon.GainExp(OpponentPokemon.Level * 10); OpponentPokemon = LancerPokémon(0, OpponentTrainer); //Throw next pokemon } else { //trainer pokemon fainted! Tu dois choisir un autre pokémon dans ton inventaire //Ouvrir inventaire, sélectionner un index int prochainPokemon = SélectionnerUnPokémonEnInventaire(); UserPokemon = LancerPokémon(prochainPokemon, UserTrainer); } } //Trainer has been defeated! ou Opponent has been defeated! if (UserTrainer.EstEnVie()) {//le User a gagné //Changement de la toune? //Gagne du cash, ptit message genre "wow le ptit con m'a battu holyshit man" } else {//Le User a perdu //Donne du cash, ptit message genre "wow t'es ben faible ptit con" //User wrap au pokémon center (une méthode de téléportation dans le trainer pour le déplacer perhaps?) } //Le combat est fini EnCombat = false; //Ou on pourrait changer le gamestate? base.Update(gameTime); //Utile? }
/// <summary> /// Fonction pour attribuer les points d'expérience au Pokémon du joueur. /// </summary> private void DonnerExp() { float exp = OpponentPokemon.GiveExp(); UserPokemon.GainExp(exp); }