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
Esempio n. 2
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, 0, 100);
                Console.ForegroundColor = ConsoleColor.Cyan;
                Console.WriteLine("\nVeuillez choisir sa caractéristique principale");
                titan.AttribuerCaracteristique();
                Console.WriteLine("\nAmusez vous bien !");
                Console.ResetColor();
                Console.ForegroundColor = ConsoleColor.Magenta;
                //commande d'aide
                Console.WriteLine("\n       AIDE COMMANDES \nA tout moment, appuyer sur :" + "\n a : pour afficher l'aide \n"
                                  + " b : pour changer de pièce \n q : pour quitter\n"
                                  + " i : pour afficher l'inventaire \n");
                Console.ResetColor();
                Console.ReadKey();

                //Instanciation de l'environnement de jeu

                // Construction des personnages non joueurs
                Bagarreur edgar = new Bagarreur("Edgar", 23);
                Bagarreur misty = new Bagarreur("Misty", 17);
                Guide     milou = new Guide("Milou", 1000, new List <string>()
                {
                    "Vous devez mélanger trois substances pour obtenir ce médicament... hmm je vois... du phytoménadione...",
                    "Vous devez mélanger trois substances pour obtenir ce médicament... hmm je vois... du sulfaméthizol...",
                    "Vous devez mélanger trois substances pour obtenir ce médicament... hmm je vois... du rasburicase..."
                });

                // 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...");
                Contenant    ob17 = new Contenant("un livre", "Je me demande ce qu'il y a dans ce livre...", 9, new Substances[9] {
                    Substances.dimercaprol, Substances.glipizide,
                    Substances.nalidixique, Substances.nitrofurantoïne, Substances.noramidopyrine, Substances.phytoménadione, Substances.rasburicase,
                    Substances.sulfacétamide, Substances.sulfaméthizol
                });
                Objet     ob14 = new Objet("des paillasses", "Ces paillasses me seront utiles pour mélanger les substances et fabriquer\nle médicament.");
                Contenant ob15 = new Contenant("une armoire", "C'est génial, cette armoire est remplie de substances chimiques en tous genres...", 9,
                                               new Substances [9] {
                    Substances.dimercaprol, Substances.glipizide, Substances.nalidixique, Substances.nitrofurantoïne, Substances.noramidopyrine,
                    Substances.phytoménadione, Substances.rasburicase, Substances.sulfacétamide, Substances.sulfaméthizol
                });
                Contenant ob16 = new Contenant("un carton", "Ce carton a l'air poussiéreux...", new List <Contenant>()
                {
                    ob17
                });
                Objet ob18 = new Objet("Charles le squelette", "J'ai pour seule compagnie... Un squelette... Le prends pas mal hein");
                Objet ob19 = new Objet("un évier", "Cet évier est si sale...");
                Objet ob20 = new Objet("une commode", "Pouah ! Cette commode est rempli de blouses, de masques et de gants usagés...");
                Objet ob21 = new Objet("des bocaux", "Le contenu de ces bocaux est... étrange...");

                Potion p1 = new Potion("le galafène", "a un effet connu", Effets.p_galactumerie, new List <Substances>()
                {
                    Substances.nalidixique,
                    Substances.dimercaprol, Substances.phytoménadione
                });
                Potion p2 = new Potion("le fitopane", "a un effet connu", Effets.p_fitoparose, new List <Substances>()
                {
                    Substances.sulfaméthizol,
                    Substances.glipizide, Substances.nitrofurantoïne
                });
                Potion p3 = new Potion("le tamilion", "a un effet connu", Effets.p_stress, new List <Substances>()
                {
                    Substances.noramidopyrine,
                    Substances.rasburicase, Substances.sulfacétamide
                });
                potions = new List <Potion> {
                    p1, p2, p3
                };

                // 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, ob18, ob19, ob20, ob21
                });

                //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)
                {
                    prendlafuite = false;
                    //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))
                    {
                        if (destination == laboratoire)
                        {
                            Console.WriteLine("\nUn guide vient à votre rencontre ...:" + milou.Indice);
                        }

                        //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
                        {
                            titan._ptStress += 1;

                            Console.WriteLine("Un guide vient à votre rencontre ...:" + milou.Indice);

                            //Renommage pour plus de clarté
                            Objet elementChoisi = destination._objets.ElementAt(choix - 1);
                            bool  estMeuble     = destination._objets.ElementAt(choix - 1) is Contenant;

                            //si on a pas choisi un meuble
                            if (!estMeuble)
                            {
                                elementChoisi.AfficheDescription();
                                titan._ptStress += 1;
                                if (elementChoisi.Nom == "des paillasses")
                                {
                                    if (titan.NbSubstances > 0)
                                    {
                                        if (titan.NbSubstances == 1)
                                        {
                                            prendlafuite = edgar.Defier(titan);
                                        }
                                        else
                                        {
                                            prendlafuite = misty.Defier(titan);
                                        }
                                        if (prendlafuite == true)
                                        {
                                            destination = salleRepos;
                                            titan.SeReposer(ob1);
                                            break;
                                        }
                                        else if (titan.NbSubstances < 3)
                                        {
                                            Console.WriteLine("Il vous manque {0} substance pour faire une potion.\n", 3 - titan.NbSubstances);
                                            break;
                                        }
                                        else
                                        {
                                            gagne = Melanger(titan);
                                            Console.WriteLine("\nVous avez sauvé le monde de la pandémie, bravo !");
                                            Quitter();
                                        }
                                    }
                                    else
                                    {
                                        Console.WriteLine("Il vous faut 3 substances pour faire une potion !");
                                    }
                                }
                            }

                            //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 - 1);
                                //le meuble choisi contient plusieurs objets avec lesquel on peut interagir
                                Console.WriteLine("\n\n" + choisi);
                                // choisi.AfficheDescription();


                                //une liste numérotées des objets contenus dans le meuble s'affiche

                                // si c'est l'armoire qui a été choisie
                                if (choisi.Nom == "une armoire")
                                {
                                    choisi.AfficheContenuS();
                                    choisi.ListerS();
                                    titan._ptStress += 1;
                                    int indexChoisi = VerifSaisie(choisi._elements.Length + 1);
                                    //Renommage pour plus de clarté
                                    Substances contenuChoisi = choisi._elements.ElementAt(indexChoisi - 1);
                                    titan._inventaireSubstances.Add(contenuChoisi);
                                }
                                else // si c'est le carton
                                {
                                    Contenant r = choisi.AfficheContenuO();
                                    titan._ptStress += 1;
                                    int indexChoisi = VerifSaisie(9);
                                    //Renommage pour plus de clarté
                                    Substances contenuChoisi = r._elements.ElementAt(indexChoisi - 1);
                                    titan._ptStress += 1;
                                    LireSubstance(contenuChoisi);
                                }
                            }
                        }
                        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