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); titan._savoirs.Add(Savoirs.Chimie); titan._savoirs.Add(Savoirs.Culture); 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..."); 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 pour effet blabla", Effets.p_galactumerie, new List <Substances>() { Substances.sulfacétamide, Substances.nalidixique, Substances.glipizide }); // 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) { //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 - 1); bool estMeuble = destination._objets.ElementAt(choix - 1) 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 - 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(); 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(); int indexChoisi = VerifSaisie(3); //Renommage pour plus de clarté Substances contenuChoisi = r._elements.ElementAt(indexChoisi - 1); LireSubstance(contenuChoisi); } //interactions selon l'objet /* switch (contenuChoisi.Nom) * { * case 1: * "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
// Procédure qui permet de fabriquer une potion // En entrée : le joueur pj souhaitant interagir avec l'objet internal static bool Melanger(Joueur pj) { bool trouvePotion = false; Potion potionTrouve = null; List <Substances> melange = new List <Substances>(); if (pj.NbSubstances >= 3) { Console.WriteLine("Quelles substances souhaitez-vous ajouter pour réaliser une potion avec ce bécher ?\n"); pj.AfficheInventaire(); int subN = 0; while (subN < 3) { subN++; Console.WriteLine("\nChoisissez la substance numéro {0} à ajouter.", subN); int indexSub = VerifSaisie(pj.NbSubstances); Substances subChoisie = pj._inventaireSubstances.ElementAt(indexSub - 1); melange.Add(subChoisie); pj._inventaireSubstances.Remove(subChoisie); } Console.WriteLine("\nPréparation en cours"); int k = 0; while ((potions[k] != potionTrouve) && (k < potions.Count)) { //Nouveau nom pour plus de clarté Potion test = potions[k]; int i = 0; while (i < 4) { if (test._composition.Contains(melange[i])) { i++; } else { break; } } if (i == 3) { potionTrouve = test; trouvePotion = true; } else { k++; } } if (k > potions.Count) { trouvePotion = false; } else { Console.WriteLine("\n\n\nFelicitation ! Vous avez fabriqué du " + Program.potions[k].Nom); } } pj._inventaireSubstances.Sort(); return(trouvePotion); }