Exemple #1
0
        public static void DeroulerPartie()
        {
            Console.WriteLine("\t\t\tPoke DOJO. \n\n\tUn jeu par Guillaume Grosse et Matéo Mahaut\n\t\tProjet Programmation Avancée\n\t\t\tENSC S6");
            Console.ReadKey();
            Console.Clear();
            Console.WriteLine("Vous vous apprétez à participer au plus grand tournoi de dresseurs qu'il soit !");

            // Permettre au joueur de choisir son nom
            Console.WriteLine("\t\tQuel est votre nom, jeune dresseur ?");
            Console.Write("\t\t");
            string nom   = Console.ReadLine();
            bool   choix = true;

            do
            {
                // Permettre au joueur de Choisir ses pokémons :
                int            depart    = 0;
                int            selection = 0;
                ConsoleKey     cki;
                List <Pokemon> sac   = new List <Pokemon>();
                Arene          arene = new Arene();

                do
                {
                    do
                    {
                        Console.Clear();
                        Console.WriteLine("Bonjour {0}, Avec quels Pokemons voulez vous jouer ?", nom);
                        int i = 0;
                        //Afficher la liste des pokémons
                        while (i <= 10)
                        {
                            if (i == selection)
                            {
                                //Coloration en fonction de si le Pokémon a déjà été selectionné
                                //On utilise la multiplication par 3 pour ne tomber que sur les pokémonsau premier stade d'évolution.
                                Console.ForegroundColor = !(sac.Contains(arene.PokeList1[3 * (depart + i)])) ? ConsoleColor.DarkGreen : ConsoleColor.DarkRed;
                                Console.Write(">>");
                                Console.WriteLine("\t" + arene.PokeList1[3 * (depart + i)].Nom + "\t" + arene.PokeList1[3 * (depart + i)].PV + " PV\t" + arene.PokeList1[3 * (depart + i)].PA + "PA\t" + "Elementaire " + arene.PokeList1[3 * (depart + i)]._types[arene.PokeList1[3 * (depart + i)].TypeElementaire]);
                                Console.ResetColor();
                            }
                            else
                            {
                                Console.WriteLine("\t" + arene.PokeList1[3 * (depart + i)]);
                            }
                            i++;
                        }

                        //Rappel des choix
                        Console.WriteLine();
                        Console.WriteLine("Voici les pokémons que vous avez sélectionnés :");
                        Console.ForegroundColor = ConsoleColor.DarkGreen;
                        foreach (Pokemon p in sac)
                        {
                            Console.WriteLine(p);
                        }
                        Console.ResetColor();
                        Console.WriteLine("\nAppuyer sur --> A <-- pour annuler la sélection");

                        cki = Console.ReadKey().Key;

                        //Prise en compte des entrées clavier
                        if (cki == ConsoleKey.UpArrow)
                        {
                            if (selection != 0)
                            {
                                selection = (selection - 1);
                            }
                            else if (depart != 0)
                            {
                                depart -= 1;
                            }
                        }

                        if (cki == ConsoleKey.DownArrow)
                        {
                            if (selection != 10)
                            {
                                selection = (selection + 1);
                            }
                            else if (depart != arene.PokeList1.Count / 3 - 11)
                            {
                                depart += 1;
                            }
                        }

                        //On verifie que le joueur a effectué une selection, une Annulation, et qu'il n'a pas essayé de sélectionner deux fois le même pokémon.
                    } while ((cki != ConsoleKey.Enter && cki != ConsoleKey.Spacebar && cki != ConsoleKey.A) || sac.Contains(arene.PokeList1[3 * (selection)]));

                    //Permettre une annulation
                    if (cki == ConsoleKey.A)
                    {
                        sac = new List <Pokemon>();
                    }
                    else
                    {
                        Pokemon poke = new Pokemon(arene.PokeList1[3 * (selection + depart)].Nom, arene.PokeList1[3 * (selection + depart)].PV, arene.PokeList1[3 * (selection + depart)].PA, arene.PokeList1[3 * (selection + depart)]._types[arene.PokeList1[3 * (selection + depart)].TypeElementaire][0]);
                        poke.NouvelleCapacite();
                        sac.Add(poke);
                    }
                } while (sac.Count < 3);
                //Créer le joueur personnalisé.
                Joueur j1 = new Joueur(nom, sac)
                {
                    EstHumain = true
                };
                // 1 : Faire apparaitre l'arbre des joueurs
                arene.Competiteurs[0] = j1;
                arene.Arbre[0][0]     = j1;

                Console.Clear();
                arene.AfficherArbreCompetition();
                Console.ReadKey();

                for (int roundNumber = 0; roundNumber < 4; roundNumber++)
                {
                    arene.Arbre.Add(new List <Joueur>());
                    for (int fightNumber = 0; fightNumber < arene.Arbre[roundNumber].Count; fightNumber += 2)
                    {
                        Joueur victorieux = JouerCombat(arene.Arbre[roundNumber][fightNumber], arene.Arbre[roundNumber][fightNumber + 1], arene);
                        Console.WriteLine("\n" + victorieux.Nom + " a gagné son combat :)");
                        arene.Arbre[roundNumber + 1].Add(victorieux);

                        Console.WriteLine("\n-- Presser une touche pour passer --");
                        Console.ReadKey();
                    }
                    //On remet tous les PV des gagnants à leur Maximum
                    foreach (Joueur j in arene.Arbre[roundNumber + 1])
                    {
                        foreach (Pokemon p in j.Sac)
                        {
                            p.MarqueurDegats = 0;
                            p.HistoriqueDegats.Clear();
                        }
                    }
                    //On affiche le nouvel Arbre des combats
                    arene.AfficherArbreCompetition();
                    Console.ReadKey();
                }
                Console.WriteLine("Le grand gagnant est... " + arene.Arbre[3][0]);

                do
                {
                    Console.Clear();
                    if (choix == true)
                    {
                        Console.WriteLine("  --> Rejouer <--   ou       Arrêter\n\n(utiliser les flèches du clavier pour sélectionner)");
                    }
                    else
                    {
                        Console.WriteLine("      Rejouer       ou   --> Arrêter <--\n\n(utiliser les flèches du clavier pour sélectionner)");
                    }
                    cki = Console.ReadKey().Key;


                    if (cki == ConsoleKey.LeftArrow || cki == ConsoleKey.RightArrow)
                    {
                        choix = !choix;
                    }
                } while (cki != ConsoleKey.Enter && cki != ConsoleKey.Spacebar);
                Console.Clear();
            } while (choix == true);
        }