// Genere un pokemon aleatoire public void generer_adversaire(int level) { Monstre ennemi; Monstre[] liste = Monstre.Liste_par_Element(element); // Ici un concept de generation de niveau de rarete devrait être retravailler Random rand = new Random(); int x = rand.Next(0, 4); ennemi = liste[x]; //--------------------------------------------------------------------------- ennemi.niveauExp = level; // Selon la difficulté choisi par l'utilisateur ennemi.pointExp = ennemi.pointExp + 1; // Cette ligne permettera de différencier les pokémons dans la fonction estIdentique de la classe Monstre ennemi.calcul_caract(); adversaire = ennemi; // Affichage des caractéristiques du pokémon généré image_pokemon_adverse.Source = Monstre.portrait(ennemi.nomMonstre); barre_vie_adverse.Maximum = ennemi.total[0]; barre_vie_adverse.Value = ennemi.total[0]; barre_mana_adverse.Maximum = ennemi.total[1]; barre_mana_adverse.Value = ennemi.total[1]; textBox_Console.Text = textBox_Console.Text + "\n" + ennemi.nomMonstre + " apparait face à vous !"; nb_adversaire--; }
// Affiche le pokemon dans le panel de pokemon et l'envoie au Combat (utiliser dans bouton_choiX_Click(); ) private void afficher_pokemon(Monstre monstre) { // Stats label_nom.Content = monstre.nomMonstre; label_level.Content = "Level " + monstre.niveauExp; label_id.Content = "# " + monstre.id; label_element.Content = monstre.typeMonstre; label_xp.Content = "XP : " + monstre.pointExp; label_mana_Copy.Content = "Regen : +" + monstre.actuel[2]; label_attaque.Content = "Attaque : " + monstre.actuel[3]; label_défense.Content = "Défense : " + monstre.actuel[4]; image_pokemon_panel.Source = Monstre.portrait(monstre.nomMonstre); image_pokemon_player.Source = Monstre.portrait(monstre.nomMonstre); //Barre de vie/mana barre_vie_player.Maximum = monstre.total[0]; barre_vie_player.Value = monstre.actuel[0]; barre_mana_player.Maximum = monstre.total[1]; barre_mana_player.Value = monstre.actuel[1]; // Bouton Habilete 1 (et 2 si applicapable) button_habilete_1.Content = monstre.listeHabileteActive[0].nom; if (monstre.listeHabileteActive[1] != null) { button_habilete_2.Content = monstre.listeHabileteActive[1].nom; } else { button_habilete_2.Visibility = System.Windows.Visibility.Hidden; } }
//############################################################################### //# Fonctions associés # //############################################################################### // Cette fonction attribut les images au bouton de choix (choix1,choix2,etc.) ---- (Fonction identique à afficher_team() dans Map.xaml.cs) private void init_interface() { //Choix 1 string pokemon; if (parti.joueur.equipe[0] != null) { pokemon = parti.joueur.equipe[0].nomMonstre; image_choix1.Source = Monstre.portrait(pokemon); } else { image_choix1.Source = Monstre.portrait("inconnu"); } //Choix 2 if (parti.joueur.equipe[1] != null) { pokemon = parti.joueur.equipe[1].nomMonstre; image_choix2.Source = Monstre.portrait(pokemon); } else { image_choix2.Source = Monstre.portrait("inconnu"); } //Choix 3 if (parti.joueur.equipe[2] != null) { pokemon = parti.joueur.equipe[2].nomMonstre; image_choix3.Source = Monstre.portrait(pokemon); } else { image_choix3.Source = Monstre.portrait("inconnu"); } //Choix 4 if (parti.joueur.equipe[3] != null) { pokemon = parti.joueur.equipe[3].nomMonstre; image_choix4.Source = Monstre.portrait(pokemon); } else { image_choix4.Source = Monstre.portrait("inconnu"); } //Choix 5 if (parti.joueur.equipe[4] != null) { pokemon = parti.joueur.equipe[4].nomMonstre; image_choix5.Source = Monstre.portrait(pokemon); } else { image_choix5.Source = Monstre.portrait("inconnu"); } afficher_pokemon(parti.joueur.equipe[0]); }
// Charge l'item potion_max.xml et affiche les caractéristiques private void button_potion_max_Click(object sender, RoutedEventArgs e) { Item item = Item.Charger_Item("potion_max.xml"); image_central.Source = Monstre.portrait("potion-or"); label_nom.Content = item.nom; label_description.Content = item.description; label_prix.Content = item.valeur_monetaire; selectionne = item; }
// Affiche les stats du pokémons choisit dans la liste déroulante private void afficher_stat(Monstre monstre) { image_pokemon_afficher.Source = Monstre.portrait(monstre.nomMonstre); label_nom.Content = monstre.nomMonstre; label_level.Content = "Level " + monstre.niveauExp; label_id.Content = "# " + monstre.id; label_element.Content = monstre.typeMonstre; label_xp.Content = "XP : " + monstre.pointExp; label_vie.Content = "Vie : " + monstre.total[0]; label_mana.Content = "Mana : " + monstre.total[1]; label_mana_Copy.Content = "Regen : +" + monstre.total[2]; label_attaque.Content = "Attaque : " + monstre.total[3]; label_défense.Content = "Défense : " + monstre.total[4]; monstre_selectionne = monstre; }
//############################################################################### //# Button du Panel Inventaire # //############################################################################### // Utilisation d'une pokéball private void button_pokeball_Click(object sender, RoutedEventArgs e) { if (parti.joueur.inventaire.pokeball > 0) { image_pokemon_adverse.Source = image_pokeball.Source; textBox_Console.Text = "-------------------------------------------------\n" + parti.joueur.nomJoueur + " utilise une pokeball !"; Task.Delay(3000); if (adversaire.actuel[0] < 50) // Si le pokémon à capturer possède moins de 50 points de vie { Random rand = new Random(); int random = rand.Next(1, 6); if (random >= adversaire.niveauExp) // Voir documentation pour plus d'explication { textBox_Console.AppendText("\n" + adversaire.nomMonstre + " a été capturé !"); // Remis a zéro des stats du monstre adversaire.calcul_caract(); adversaire.renew_caract(); adversaire.pointExp--; //Ajout du pokémon dans la liste de capture parti.joueur.Ajouter_Pokemon_listeTotal(adversaire); generer_adversaire(difficulte); } else { textBox_Console.AppendText("\n" + adversaire.nomMonstre + " résiste à la pokeball !"); image_pokemon_adverse.Source = Monstre.portrait(adversaire.nomMonstre); reponse_adverse(); } } else // Donc, la vie du pokémon est plus haut que 40 points, alors celui résiste automatiquement à la pokéball { textBox_Console.AppendText("\n" + adversaire.nomMonstre + " résiste à la pokeball !"); image_pokemon_adverse.Source = Monstre.portrait(adversaire.nomMonstre); reponse_adverse(); } parti.joueur.inventaire.pokeball--; label_pokeball.Content = "x " + parti.joueur.inventaire.pokeball; } }
//Reponse de l'adversaire (Intelligence artificielle) private void reponse_adverse() { if (adversaire.actuel[0] <= 0) // Si la vie de l'adversaire est moins ou égal a 0 { if (nb_adversaire > 0) { textBox_Console.Text = adversaire.nomMonstre + " est mort !"; generer_adversaire(difficulte); } else { textBox_Console.Text = adversaire.nomMonstre + " est mort !\nVous avez vaincu l'equipe ennemi !"; panel_pokemon.Visibility = System.Windows.Visibility.Hidden; disable_button(); attribuer_recompense(); } // Fin du combat } // Si la vie de l'adversaire est égal ou plus petit que 10 else if (adversaire.actuel[0] <= 10) { textBox_Console.AppendText("\n" + adversaire.nomMonstre + "s'est enfui !"); image_pokemon_adverse.Source = Monstre.portrait("iconnu.xml"); generer_adversaire(difficulte); } // Si l'adversaire a pas assez de mana pour une habilete else if (adversaire.actuel[1] < adversaire.listeHabilete[0].cout && adversaire.actuel[1] < adversaire.listeHabilete[1].cout) { textBox_Console.AppendText("\n-------------------------------------------------\n" + adversaire.nomMonstre + " n'a pas assez de mana pour utiliser une habilete ! "); Regen_mana(); } // Si la vie de l'adversaire est plus petit ou égal a 30 et qu'il possède assez de mana pour un habilet de support else if (difficulte > 1) { if (adversaire.actuel[0] <= 30 || (adversaire.actuel[1] < adversaire.listeHabilete[0].cout && adversaire.actuel[1] > adversaire.listeHabilete[1].cout)) { TypeElement element = adversaire.typeMonstre; Habilete supporting = Habilete.habilete_protection_element(element); textBox_Console.AppendText("\n-------------------------------------------------\n" + adversaire.nomMonstre + " utilise " + supporting.nom + " !"); // Utilise l'habilete adversaire.actuel[1] = adversaire.actuel[1] - supporting.cout; if (supporting.effet == Effet.regeneration) { adversaire.actuel[0] = adversaire.actuel[0] + supporting.magnitude; if (adversaire.actuel[0] > adversaire.total[0]) { adversaire.actuel[0] = adversaire.total[0]; } textBox_Console.AppendText("\n" + adversaire.nomMonstre + " récupère " + supporting.magnitude + " points de vie !"); } else { adversaire.actuel[4] = adversaire.actuel[4] + supporting.magnitude; textBox_Console.AppendText("\n" + adversaire.nomMonstre + " augmente ces défenses de " + supporting.magnitude + " points !"); } Regen_mana(); } } else { attaquer(adversaire, selectionne, adversaire.listeHabilete[0]); if (selectionne.actuel[0] < 1) { textBox_Console.AppendText("\n" + selectionne.nomMonstre + " est mort !\nVeuillez sélectionner un autre pokemon ou quitter ! "); int x = parti.joueur.trouver_monstre_equipe(selectionne); switch (x) { case 0: button_choix1.IsEnabled = false; panel_pokemon.Visibility = System.Windows.Visibility.Hidden; break; case 1: button_choix2.IsEnabled = false; panel_pokemon.Visibility = System.Windows.Visibility.Hidden; break; case 2: button_choix3.IsEnabled = false; panel_pokemon.Visibility = System.Windows.Visibility.Hidden; break; case 3: button_choix4.IsEnabled = false; panel_pokemon.Visibility = System.Windows.Visibility.Hidden; break; case 4: button_choix5.IsEnabled = false; panel_pokemon.Visibility = System.Windows.Visibility.Hidden; break; } // Si tout les pokemons sont morts, disable le boutton inventaire ainsi que le panel relié if (button_choix1.IsEnabled == false && button_choix2.IsEnabled == false && button_choix3.IsEnabled == false && button_choix4.IsEnabled == false && button_choix5.IsEnabled == false) { button_inventaire.IsEnabled = false; panel_inventaire.Visibility = System.Windows.Visibility.Hidden; } } else { Regen_mana(); } } }
// Permet d'afficher chaque Pokémon de l'équipe ( Choix 1, Choix 2,etc) ainsi que la liste déroulante contenant tout les pokémons attrapés public void afficher_team() { //Choix 1 string pokemon; if (parti.joueur.equipe[0] != null) // Si choix 1 n'est pas vide, affichage de l'image { pokemon = parti.joueur.equipe[0].nomMonstre; image_pokemon_choix_1.Source = Monstre.portrait(pokemon); } else { image_pokemon_choix_1.Source = Monstre.portrait("inconnu"); // Sinon, affichage d'une image d'un pokémon inconnu } //Choix 2 if (parti.joueur.equipe[1] != null) { pokemon = parti.joueur.equipe[1].nomMonstre; image_pokemon_choix_2.Source = Monstre.portrait(pokemon); } else { image_pokemon_choix_2.Source = Monstre.portrait("inconnu"); } //Choix 3 if (parti.joueur.equipe[2] != null) { pokemon = parti.joueur.equipe[2].nomMonstre; image_pokemon_choix_3.Source = Monstre.portrait(pokemon); } else { image_pokemon_choix_3.Source = Monstre.portrait("inconnu"); } //Choix 4 if (parti.joueur.equipe[3] != null) { pokemon = parti.joueur.equipe[3].nomMonstre; image_pokemon_choix_4.Source = Monstre.portrait(pokemon); } else { image_pokemon_choix_4.Source = Monstre.portrait("inconnu"); } //Choix 5 if (parti.joueur.equipe[4] != null) { pokemon = parti.joueur.equipe[4].nomMonstre; image_pokemon_choix_5.Source = Monstre.portrait(pokemon); } else { image_pokemon_choix_5.Source = Monstre.portrait("inconnu"); } //Menu déroulant contenant la liste des pokemons capturés if (liste_affiche != true) { foreach (Monstre x in parti.joueur.monstreCapture) { if (x != null) { ComboBoxItem item = new ComboBoxItem(); item.Content = x.nomMonstre; comboBox_liste_pokemon.Items.Add(item); } } liste_affiche = true; } }