예제 #1
0
        // 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--;
        }
예제 #2
0
        // 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;
            }
        }
예제 #3
0
        //###############################################################################
        //#		                    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]);
        }
예제 #4
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;
        }
예제 #5
0
        // 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;
        }
예제 #6
0
        //###############################################################################
        //#		                 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;
            }
        }
예제 #7
0
        //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();
                }
            }
        }
예제 #8
0
        // 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;
            }
        }