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
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