/// <summary> /// Permet d'ajouter un aventurier au groupe /// </summary> /// <param name="Hero">Le héro à ajouter</param> /// <returns>L'état du succès de l'ajout</returns> public bool AjouterAventurier(Hero Hero) { if (_aventuriers.Count < 3) { _aventuriers.Add(Hero); return true; } else { return false; } }
/// <summary> /// Utilise l'objet sur un héro /// </summary> /// <param name="Hero">Le héro qui reçoit l'effet de l'objet</param> public void Utiliser(Hero Hero) { Program.Histoire(Nom + " est utilisé(e) sur " + Hero.Nom + "!", false); OnUtiliser(Hero); }
private void AfficherTourAventurier(Hero hero) { #region Patois des classes if (hero.Classe is Guerrier) { Program.Dialogue(hero.Nom, "Par la force de Magni et la rage de Týr, préparez-vous à périr!", false, false); } else if (hero.Classe is Archer) { Program.Dialogue(hero.Nom, "Celui-là vient de pousser son dernier souffle!", false, false); } else if (hero.Classe is Mage) { Program.Dialogue(hero.Nom, "Les éléments n'auront aucune pitié pour ces êtres immondes!", false, false); } else if (hero.Classe is Voleur) { Program.Dialogue(hero.Nom, "Shhht... Le silence par ma dague sera ta sentence.", false, false); } #endregion int choix = Program.Choix("Tour de " + hero.Nom + " | " + hero.Classe.Nom + " | " + hero.PointsDeVie + "/" + hero.PointsDeVieDeBase + " PV", new string[] { "Attaquer", "Utiliser un objet" }); switch (choix) { case 1: #region Attaquer if (Ennemis.Count(e => e.Etat != Etat.Mort) > 1) { //Choisir un ennemi List<string> choix_ennemis = new List<string>(); foreach (Ennemi e in Ennemis.Where(e => e.Etat != Etat.Mort)) { choix_ennemis.Add(e.Nom + " (" + e.PointsDeVie + "/" + e.Attributs.PointsDeVieBase + " PV)"); } choix_ennemis.Add("Annuler"); int choix_e = Program.Choix("Ennemis", choix_ennemis.ToArray()); if (choix_e == choix_ennemis.Count) AfficherTourAventurier(hero); else Attaquer(hero, Ennemis.Where(e => e.Etat != Etat.Mort).ToArray()[choix_e - 1]); } else { Ennemi ennemi = Ennemis.Find(e => e.Etat != Etat.Mort); Attaquer(hero, ennemi); } #endregion break; case 2: #region Utiliser un objet Consommable AUtiliser = Program.Groupe.ChoisirConsommable(); if (AUtiliser == null) AfficherTourAventurier(hero); else { Hero heroSelectionne = Program.Groupe.ChoisirHero(); if (heroSelectionne == null) AfficherTourAventurier(hero); else { AUtiliser.Utiliser(heroSelectionne); Program.Groupe.Inventaire.Remove(AUtiliser); } } #endregion break; } }
/// <summary> /// Permet de retirer un aventurier du groupe /// </summary> /// <param name="Hero">Le héro à retirer</param> /// <returns>L'état du succès du retrait</returns> public bool RetirerAventurier(Hero Hero) { if (_aventuriers.Count <= 3) { return _aventuriers.Remove(Hero); } else { return false; } }
/// <summary> /// Création des joueurs et mise en place du jeu /// </summary> public static void DebuterJeu(bool SauterIntro = false) { if (!SauterIntro) { Introduction(); } else { // Associer le premier aventurier au héro du joueur Self = Groupe.Aventuriers.ElementAt(0); } // Affichage du village do { Console.Clear(); Thread.Sleep(500); Histoire("Vous vous situez présentement au coeur du village.", false); int endroit = Choix("Village", new string[] { NomAuberge, NomMarche, NomTaverne, "Partir à l'aventure", "Retour au menu principal" }, new string[] { "Sauvegarde, Chargement et gestion du groupe", "Achat d'objets vendus par les marchands des alentours", "Libération et recrutement de nouveaux aventuriers", "Sélection d'aventures qui permettent à votre groupe de progresser", "Quitter la partie sans sauvegarder" }); switch (endroit) { case 1: // L'Auberge de l'Ours Ronfleur AfficherAuberge(); break; case 2: // Le Marché du Mithril de Fou AfficherMarche(); break; case 3: // La Taverne du Pied Dansant AfficherTaverne(); break; case 4: // Partir à l'aventure Aventure AventureADemarrer = ChoisirAventures(); if (AventureADemarrer == null) break; else AventureADemarrer.Demarrer(); break; case 5: Console.Clear(); Thread.Sleep(500); MenuPrincipal(); break; default: break; } } while (true); }
/// <summary> /// Affichage de l'introduction du jeu /// </summary> public static void Introduction() { Histoire("Vous entrez dans la taverne et vous dirigez vers le propriétaire"); interlocuteur = "Propriétaire de la taverne"; Dialogue(interlocuteur, "Bonjour et bienvenue, cher aventurier, à " + NomTaverne + "! Seriez-vous le dénommé ", false, false, false); NomDuHero = Read(3, 16, "Votre nom...", Couleurs.Action); Dialogue(interlocuteur, "? Formidable! Vous êtes attendu à cette table, là-bas!", true); Histoire(NomDuHero + " se dirige alors vers la table en question."); Histoire("Vous êtes à mi-chemin quand soudain, un inconnu assis à la table vous fait signe de la main"); interlocuteur = "Un inconnu"; Dialogue(interlocuteur, "Voilà enfin ", false, false, false); Write(NomDuHero, Couleurs.NomDeHéro); Dialogue(interlocuteur, "! Allez, viens! Je vais te présenter! ", true); Dialogue(interlocuteur, "Alors, voiçi ", true, false, false); Write(NomDuHero, Couleurs.NomDeHéro); Dialogue(interlocuteur, "! Il sera notre nouveau...", true, false); int noclasse = Choix("Choisissez votre classe", new string[] { "Guerrier", "Archer", "Mage", "Voleur" }); Classe Classe; switch (noclasse) { case 1: Classe = new Guerrier(); break; case 2: Classe = new Archer(); break; case 3: Classe = new Mage(); break; case 4: Classe = new Voleur(); break; default: Classe = new Guerrier(); break; } Self = new Hero(NomDuHero, Classe); Groupe.AjouterAventurier(Self); Histoire("Une femme inconnue vous accueille chaleureusement"); Dialogue(interlocuteur, "Je te présente tout d'abord la plus habile de toutes les archères, ", false, false, false); NomDuHero = Read(3, 16, "Nom de l'archer...", Couleurs.Action); Dialogue(interlocuteur, "!", true, false); Hero Archer = new Hero(NomDuHero, new Archer()); Groupe.AjouterAventurier(Archer); Dialogue(Archer.Nom, "Ha! mais cesse de me vanter comme ça!"); Histoire("L'inconnu se met à rire de bon coeur"); Dialogue(interlocuteur, "Et je suis d'ailleurs moi-même le plus grand des mages, ", false, false, false); NomDuHero = Read(3, 16, "Nom du mage...", Couleurs.Action); Dialogue(interlocuteur, ". Ravis de te rencontrer!", true); Hero Mage = new Hero(NomDuHero, new Mage()); Groupe.AjouterAventurier(Mage); Dialogue(Mage.Nom, "Alors, vous êtes tous prêt pour l'aventure?"); Dialogue(Archer.Nom, "Certainement, sortons d'ici. De toute façon, un groupe de trois aventuriers sera largement suffisant!"); Histoire("Votre groupe se dirige alors vers la sortie de la taverne"); Histoire("Si jamais vous avez besoin d'un nouvel aventurier, " + NomTaverne + " regorge d'aventuriers; N'hésitez pas à y revenir."); }
/// <summary> /// Permet au Hero d'augmenter ses attributs en fonction de sa classe de personnage /// </summary> /// <param name="Hero">Le héro qui monte de niveau</param> public static void AugmenterStats(Hero Hero) { Attributs attr = Hero.Classe.AttributsDeBase; Hero.Attributs.PointsDeVieBase += attr.PointsDeVieBase / 2; Hero.Attributs.Force += attr.Force / 2; Hero.Attributs.Defense += attr.Defense / 2; Hero.Attributs.Esquive += attr.Esquive / 2; Hero.Attributs.Precision += attr.Precision / 2; Hero.Attributs.Courage += attr.Courage / 2; }