Esempio n. 1
0
        static void Main(string[] args)
        {
            bool rejouer      = false;
            bool prendlafuite = false;
            bool gagne        = false;

            do
            {
                // Instanciation du personnage joueur
                Console.ForegroundColor = ConsoleColor.DarkMagenta;
                Console.WriteLine("\n\n\n\n\n\n\n\n\n");
                Console.WriteLine("                        ALCHIMED : EXPERIMENTONS LE FUTUR");
                Console.WriteLine("                        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
                Console.ReadKey();
                Console.ResetColor();
                Console.Clear();
                Console.ForegroundColor = ConsoleColor.Cyan;
                Console.Write("Bienvenue dans le jeu ALCHIMED ! Pour la suite vous allez incarner un personnage");
                Console.WriteLine("\nVeuillez entrer son prénom");
                Console.ResetColor();
                string prenom = Console.ReadLine();
                titan = new Joueur(prenom);
                Console.ForegroundColor = ConsoleColor.Cyan;
                Console.WriteLine("\nVeuillez choisir sa caractéristique principale");
                titan.AttribuerCaracteristique();
                Console.WriteLine("\nAmusez vous bien !");
                Console.ResetColor();
                Console.ReadKey();


                //Instanciation de l'environnement de jeu

                // Construction des personnages non joueurs
                Bagarreur edgar = new Bagarreur("Edgar", 20);

                // Construction des objets
                ObjetSpecial ob1  = new ObjetSpecial("un lit", "Que ce lit est douillet...", Effets.regenerateur);
                ObjetSpecial ob2  = new ObjetSpecial("un poste radio", "Bonne idée, écoutons un peu de musique pour se détendre...", Effets.stress);
                ObjetSpecial ob3  = new ObjetSpecial("une table avec de la nourriture", "Il y a des smoothies et des gateaux, vous vous régalez !", Effets.vieP);
                ObjetSpecial ob4  = new ObjetSpecial("des haltères", "Vous pouvez utiliser les haltères pour un petit entraînement du haut du corps.", Effets.force1);
                ObjetSpecial ob5  = new ObjetSpecial("une presse", "Vous pouvez entraîner le bas de votre corps grâce à la presse !", Effets.force2);
                ObjetSpecial ob6  = new ObjetSpecial("un tapis de course", "Votre cardio va vite s'améliorer avec cet entraînement !", Effets.force3);
                Objet        ob7  = new Objet("une armoire", "Cette armoire est remplie de toutes sortes de choses...");
                Objet        ob8  = new Objet("une table basse", "Il y a un tas de journaux et de livres posés ici...");
                Objet        ob9  = new Objet("une blouse sur le porte manteau", "C'est une très belle blouse ! Je ne sais pas à qui elle est...");
                Objet        ob10 = new Objet("un tableau", "Ce tableau est magnifique ! On pourrait rester ici des heures à le contempler...");
                Objet        ob11 = new Objet("une fenêtre", "On a l'impression d'être en pleine nature ici ! Il y a des arbres et des fleurs à perte de vue...");
                Objet        ob12 = new Objet("une lampe de bureau", "Cette lampe me rappelle celle de ma grand mère...");
                Objet        ob13 = new Objet("un canapé", "Ce canapé marron a l'air douillet, et il vous tend les bras...");
                Objet        ob17 = new Objet("un livre", "Je me demande ce qu'il y a dans ce livre...");
                Objet        ob14 = new Contenant("des paillasses", "Ces paillasses me seront utiles pour mélanger les substances et fabriquer la potion.", new List <Objet>()
                {
                    ob2, ob17
                });
                Objet ob15 = new Contenant("une armoire", "C'est génial, cette armoire est remplie de substances chimiques en tous genre.", new List <Objet>()
                {
                    ob2, ob17
                });
                Objet ob16 = new Contenant("un carton", "Ce carton a l'air poussiéreux...", new List <Objet>()
                {
                    ob17
                });


                // Construction des salles
                Piece salleRepos = new Piece("la salle de repos", new List <Objet>()
                {
                    ob1, ob2, ob3
                });
                Piece salleEntrainement = new Piece("la salle d'entraînement", new List <Objet>()
                {
                    ob4, ob5, ob6
                });
                Piece salleEtude = new Piece("la salle d'étude", new List <Objet>()
                {
                    ob7, ob8, ob9, ob10, ob11, ob12, ob13
                });
                salleEtude.AttribuerSavoir();
                Piece laboratoire = new Piece("le laboratoire", new List <Objet>()
                {
                    ob14, ob15, ob16, ob17
                });

                //Construction du Bâtiment Alchimed, enceinte du jeu
                Alchimed = new List <Piece> {
                    salleRepos, salleEtude, salleEntrainement, laboratoire
                };

                Console.WriteLine("\nEnfin ! La lettre d’Alchimed est arrivée...\n 'Félicitations, vous avez été présélectionné pour " +
                                  "intégrer notre prestigieux\n  programme ! Nous vous invitons désormais à nous rejoindre afin de vous\n  préparer au mieux " +
                                  "à la sélection finale. Comme vous le savez, cela consiste\n  à la fabrication d’un médicament dans un contexte imposé et un temps imparti.'");

                Console.WriteLine("Deux jours après, je me rendais à l’adresse indiquée dans la lettre et me\ntrouvais devant un bâtiment imposant," +
                                  " d’un blanc éclatant.\nJe me présentais alors à l'accueil d’Alchimed...\n\n 'Bonjour, bienvenue chez Alchimed ! Vous êtes" +
                                  " {0} n’est ce pas ? Je vais\n vous présenter les locaux qui vous ont été attribués et les différents éléments à votre" +
                                  " disposition.Vous pourrez rester ici aussi longtemps que nécessaire !\n Suivez - moi...\n\n La première pièce à votre gauche" +
                                  " est la salle de repos, où vous pourrez vous\n détendre et vous reposer. Ensuite, la seconde pièce à votre gauche est la\n salle d'étude," +
                                  " c'est ici que vous allez pouvoir enrichir votre culture. Sur\n votre droite se trouve la salle d'entraînement, où divers équipements" +
                                  " vous\n permettront d'améliorer votre force. Enfin, au boût du couloir se trouve le\n grand Laboratoire. Lorsque vous serez " +
                                  "suffisamment entraîné et vous sentirez\n prêt, présentez vous devant l'entrée. C'est là où se déroulera l'épreuve finale." +
                                  " Je vous laisse maintenant !'", titan._nom);

                //Première action du joueur : choisir une pièce à explorer
                Piece destination = null;
                int   choix;
                while (!gagne)
                {
                    //présentation des pièces et analyse du choix du joueur
                    destination = ChoisirPiece(Alchimed, titan);

                    // boucle de choix objet-action dans la pièce courante, la touche b permettant de changer de pièce
                    while ((Console.ReadKey().KeyChar != 'b') && (!prendlafuite))
                    {
                        //Affichage des objets de la pièce
                        destination.Lister();
                        //gestion des éventuelles erreurs de saisie
                        choix = VerifSaisie(destination._objets.Count);

                        //interactions avec les objets des pièces autre que le laboratoire
                        if (destination != laboratoire)
                        {
                            titan.DeplacerVersObjet(destination, choix);
                        }

                        //interactions avec les objets du laboratoire
                        else
                        {
                            //Renommage pour plus de clarté
                            Objet elementChoisi = destination._objets.ElementAt(choix);
                            bool  estMeuble     = destination._objets.ElementAt(choix) is Contenant;

                            //si on a pas choisi un meuble
                            if (!estMeuble)
                            {
                                elementChoisi.AfficheDescription();
                            }

                            //si c'est un meuble
                            else
                            {
                                //on peut faire un upcast puisqu'on a vérifié que l'objet est un Meuble
                                Contenant choisi = (Contenant)destination._objets.ElementAt(choix);
                                //le meuble choisi contient plusieurs objets avec lesquel on peut interagir
                                Console.WriteLine("\n" + choisi);
                                choisi.AfficheDescription();
                                //une liste numérotées des objets contenus dans le meuble s'affiche
                                choisi.Lister();
                                int indexChoisi = VerifSaisie(choisi._contenus.Count);

                                //Renommage pour plus de clarté
                                Objet contenuChoisi = choisi._contenus.ElementAt(indexChoisi - 1);

                                //interactions selon l'objet
                                switch (contenuChoisi.Nom)
                                {
                                case "un livre":
                                    contenuChoisi.AfficheDescription();
                                    break;

                                case "un becher":
                                    Console.WriteLine("\nCe bécher est vide et prêt à l'emploi. On peut y mélanger 3 substances.\n");
                                    if (choisi.Melanger(titan))
                                    {
                                        prendlafuite = edgar.Defier(titan);
                                        if (prendlafuite == true)
                                        {
                                            destination = salleRepos;
                                            titan.SeReposer(ob1);
                                        }
                                    }
                                    break;
                                }
                            }
                        }
                        Console.WriteLine("\nAppuyez sur b pour changer de pièce ou sur n'importe quelle autre touche pour continuer");
                        //le joueur a appuyé sur 'b', il souhaite donc changer de pièce
                    }

                    // fin du jeu : proposer de rejouer + enregistrement score
                }
            }while (rejouer);
        }//fin du Main