🎉 BEST COMMIT : Ajout d'une interface utilisateur dans la console + ajout de très nombreuses fonctions d'affichage + ajout d'une nouvelle classe ConsoleHelper pour l'affichage de menus notamment + modification de TOUS les menus, factorisation du code un maximum + modification de la classe Monstre -> ajout d'un attribut correspondant à l'hostilité du montres -> donc modification du stub et des tests
continuous-integration/drone/push Build is passing Details

pull/32/head
ImNicolasTheDev 2 years ago
parent d57cebfc05
commit c3beb961e3

@ -0,0 +1,128 @@
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static System.Net.Mime.MediaTypeNames;
public class ConsoleHelper
{
public static void displayTitle(string title, bool clear)
{
if (clear)
{
Console.Clear();
}
Console.ForegroundColor = ConsoleColor.Green; //Ecris le titre suivant en vert
Console.WriteLine();
Console.WriteLine($"-==============- {title} -==============-");
Console.WriteLine();
Console.ResetColor(); //Reset la couleur du texte par défaut (à blanc)
}
public static string ReadPassword()
{
string psswrd = "";
ConsoleKeyInfo info = Console.ReadKey(true);
while (info.Key != ConsoleKey.Enter)
{
if (info.Key != ConsoleKey.Backspace)
{
Console.Write("*");
psswrd += info.KeyChar;
}
else if (info.Key == ConsoleKey.Backspace)
{
if (!string.IsNullOrEmpty(psswrd))
{
// Supprime un élément de la liste de char de psswrd
psswrd = psswrd.Substring(0, psswrd.Length - 1);
// Récupère la position du curseur
int pos = Console.CursorLeft;
// Déplace le curseur d'un à gauche
Console.SetCursorPosition(pos - 1, Console.CursorTop);
// Remplace par un espace dans la console
Console.Write(" ");
// Déplace le curseur d'une position à gauche encore
Console.SetCursorPosition(pos - 1, Console.CursorTop);
}
}
info = Console.ReadKey(true);
}
// Ajoute un alinéa parce que l'utlisateur a validé
Console.WriteLine();
return psswrd;
}
public static int MultipleChoice(string title, bool canCancel, params string[] options)
{
displayTitle(title, true);
// Uint = unsigned int -> pour pas que le décalage soit négatif et entraine une exception
const uint startX = 11; // Décalage à partir de la gauche
const uint startY = 4; // Décalage à partir du haut
const int optionsPerLine = 1;
const int spacingPerLine = 50;
int currentSelection = 0;
ConsoleKey key;
Console.CursorVisible = false;
do
{
for (int i = 0; i < options.Length; i++)
{
Console.SetCursorPosition((int)(startX + (i % optionsPerLine) * spacingPerLine), (int)(startY + i / optionsPerLine));
if (i == currentSelection)
Console.ForegroundColor = ConsoleColor.Blue;
Console.Write(options[i]);
Console.ResetColor();
}
key = Console.ReadKey(true).Key;
switch (key)
{
case ConsoleKey.LeftArrow:
{
if (currentSelection % optionsPerLine > 0)
currentSelection--;
break;
}
case ConsoleKey.RightArrow:
{
if (currentSelection % optionsPerLine < optionsPerLine - 1)
currentSelection++;
break;
}
case ConsoleKey.UpArrow:
{
if (currentSelection >= optionsPerLine)
currentSelection -= optionsPerLine;
break;
}
case ConsoleKey.DownArrow:
{
if (currentSelection + optionsPerLine < options.Length)
currentSelection += optionsPerLine;
break;
}
case ConsoleKey.Escape:
{
if (canCancel)
return -1;
break;
}
}
} while (key != ConsoleKey.Enter);
Console.CursorVisible = true;
return currentSelection;
}
}

@ -10,25 +10,6 @@ using System.Reflection.PortableExecutable;
UserBase ub = new UserBase();
MonsterBase monsterBase = new MonsterBase();
//======================================= Fonctions d'affichage ============================================
void displayTitle(string text)
{
Console.WriteLine();
Console.WriteLine($"-==========- {text} -==========-");
Console.WriteLine();
}
void displayMenu(List<string> text)
{
int i = 1;
foreach (string item in text)
{
Console.WriteLine($"\t{i}. {item}");
i++;
}
}
/*
void testMonstre()
{
@ -55,142 +36,154 @@ void testMonstre()
Console.WriteLine(monstre2.IntroduceTest());
}*/
//======================================= Fonctions d'affichage ============================================//
///<summary>
///Cette fonction est appelée lors de la fermeture de l'application.
///</summary>
void exitAppConsole()
{
Console.Clear();
Console.WriteLine();
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("\tFermeture de l'application...");
Console.ResetColor();
Thread.Sleep(800);
Console.WriteLine("\tA bientôt !");
Console.WriteLine();
return;
}
// Cette fonction permet d'écrire une string en rouge, le plus souvent lorsque l'on veut notifier une erreur
void writeLineError(string text)
{
Console.WriteLine();
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine($"\t{text}");
Console.ResetColor();
}
//======================================= Menus ============================================//
void menuAccueil(){
// Si jamais il y a eu des modifications de la couleur du terminal,
// cela reset le texte en blanc.
Console.ResetColor();
int choix;
string? choix = "Something"; // Obligé de l'initialiser à quelquechose d'autre que null...
while(choix != null)
do
{
displayTitle("Menu principal");
displayMenu(new List<string> { "Connexion", "Inscription", "Continuer en tant qu'invité", "Quitter l'application" });
choix = Console.ReadLine();
if (string.IsNullOrWhiteSpace(choix)) // Si l'utilisateur a juste cliqué sur Entrée, ou s'il a tapé des espaces puis a validé
{
Console.Clear();
Console.WriteLine("Exit");
return;
}
else
choix = ConsoleHelper.MultipleChoice("Menu principal", true,
"Connexion", "Inscription", "Continuer en tant qu'invité", "Quitter l'application");
//Traitement du choix de l'utilisateur
switch (choix)
{
switch (choix)
{
case "1":
Console.Clear();
Console.WriteLine("Choix 1");
//menuConnexion();
break;
case "2":
Console.Clear();
Console.WriteLine("Choix 2");
//menuInscription();
break;
case "3":
Console.Clear();
Console.WriteLine("Choix 3");
//monsterPage();
break;
case "4":
Console.Clear();
Console.WriteLine("Fermeture de l'application en cours...");
case -1:
// Lorsque l'utilisateur appuie sur Echap, alors quitter l'application.
exitAppConsole();
break;
case 0:
Console.Clear();
//Console.WriteLine("Choix 1");
if (menuConnexion() == -1)
{
exitAppConsole();
return;
}
break;
default:
// Pour toutes les autres possiblités non comprise entre 1 et 4.
// Par exemple les chaînes de caractères, les nombres > 4 et < 1, ainsi que toutes les choses possibles...
Console.Clear();
Console.WriteLine($"La valeur {choix} n'est pas valide. Veuillez réessayer.");
break;
}
case 1:
Console.Clear();
//Console.WriteLine("Choix 2");
if (menuInscription() == -1)
{
exitAppConsole();
return;
}
break;
case 2:
Console.Clear();
//Console.WriteLine("Choix 3");
menuMontres();
break;
case 3:
exitAppConsole();
return;
default:
// Pour toutes les autres possiblités non comprise entre -1 et 3
// (normalement pas possible, mais on est jamais trop prudent)
Console.Clear();
writeLineError($"La valeur {choix} n'est pas valide. Fermeture de l'application.");
return;
}
}
} while ( choix != -1 );
return;
}
string ReadPassword()
{
string psswrd = "";
ConsoleKeyInfo info = Console.ReadKey(true);
while (info.Key != ConsoleKey.Enter)
{
if (info.Key != ConsoleKey.Backspace)
{
Console.Write("*");
psswrd += info.KeyChar;
}
else if (info.Key == ConsoleKey.Backspace)
{
if (!string.IsNullOrEmpty(psswrd))
{
// Supprime un élément de la liste de char de psswrd
psswrd = psswrd.Substring(0, psswrd.Length - 1);
// get the location of the cursor
int pos = Console.CursorLeft;
// move the cursor to the left by one character
Console.SetCursorPosition(pos - 1, Console.CursorTop);
// replace it with space
Console.Write(" ");
// move the cursor to the left by one character again
Console.SetCursorPosition(pos - 1, Console.CursorTop);
}
}
info = Console.ReadKey(true);
}
// Ajoute un alinéa parce que l'utlisateur a validé
Console.WriteLine();
return psswrd;
}
int menuConnexion()
{
string? id;
string? psswd;
int i = 1;
int nbRetries = 0;
nbRetries++;
string? id, psswd;
int nbTries = 1; // Initialise le nombre d'essais à 1
bool exists = false;
while (exists == false)
{
if (nbRetries >= 3)
if (nbTries > 3) // Si il y a eu plus de 3 essais effectués
{
ConsoleHelper.displayTitle("Connexion", true);
writeLineError("Trop d'erreurs. Réessayez plus tard.");
Console.WriteLine();
Thread.Sleep(1500);
return -1;
}
Console.Write($"Essai n°{i} Identifiant : ");
ConsoleHelper.displayTitle("Connexion", true);
Console.WriteLine();
// Saisie de l'identifiant
Console.Write($"\tEssai n°{nbTries} Identifiant : ");
id = Console.ReadLine();
i++;
if (id != null)
id = id.Trim();
nbTries++;
while (string.IsNullOrEmpty(id))
if (string.IsNullOrEmpty(id))
{
if (i > 3)
{
Console.Clear();
Console.WriteLine("Trop d'erreurs. Réessayez plus tard.");
return -2;
}
Console.Clear();
Console.Write($"Essai n°{i} Identifiant : ");
id = Console.ReadLine();
if (id != null)
id = id.Trim();
i++;
continue;
}
Console.Write("Mot de passe : ");
psswd = ReadPassword();
// Saisie du mot de passe (affichage avec des étoiles dans la console)
Console.Write("\tMot de passe : ");
psswd = ConsoleHelper.ReadPassword();
if (string.IsNullOrEmpty(psswd))
{
Console.Clear();
continue;
}
exists = ub.checkIfExists(id, psswd);
if ( !exists ) // Si le nom d'utilisateur ou le mot de passe ne correspondent pas, ou s'ils ne sont pas présent dans la base de données
if ( !exists ) // Si le nom d'utilisateur ou le mot de passe ne correspondent pas,
// ou s'ils ne sont pas présent dans la base de données.
{
writeLineError("Erreur, identifiant ou mot de passe incorrect.");
Thread.Sleep(1000); // Pause de 1 seconde pour afficher l'erreur
}
else
{
Console.WriteLine("Erreur, identifiant ou mot de passe incorrect.");
Console.WriteLine();
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine("\tConnexion réussie !");
Console.ResetColor ();
Thread.Sleep(2000); // Pause de 2 secondes
}
}
monsterPage();
menuMontres();
return 0;
}
@ -201,10 +194,19 @@ int menuInscription()
string prenom;
string mdp;
int n = 1; //Itérateur du nombre d'essais
while (n <= 3)
while (n <= 4)
{
Console.WriteLine($"Tentatives : {n}");
Console.Write("Prénom : ");
ConsoleHelper.displayTitle("Inscription", false);
if (n > 3)
{
writeLineError("Trop de tentatives. Réessayez plus tard.");
Console.WriteLine();
Thread.Sleep(1500);
return -1;
}
Console.WriteLine();
Console.WriteLine($"\tTentatives (jusqu'à 3) : {n}");
Console.Write("\tPrénom : ");
prenom = Console.ReadLine();
if (string.IsNullOrEmpty(prenom))
{
@ -212,7 +214,7 @@ int menuInscription()
n++;
continue;
}
Console.Write("Nom : ");
Console.Write("\tNom : ");
nom = Console.ReadLine();
if (string.IsNullOrEmpty(nom))
{
@ -220,7 +222,7 @@ int menuInscription()
n++;
continue;
}
Console.Write("Pseudo : ");
Console.Write("\tPseudo : ");
pseudo = Console.ReadLine();
if (string.IsNullOrEmpty(pseudo))
{
@ -228,8 +230,8 @@ int menuInscription()
n++;
continue;
}
Console.Write("Mot de passe : ");
mdp = ReadPassword();
Console.Write("\tMot de passe : ");
mdp = ConsoleHelper.ReadPassword();
if (string.IsNullOrEmpty(mdp))
{
Console.Clear();
@ -240,72 +242,161 @@ int menuInscription()
if(ub.checkIfPseudoExists(pseudo))
{
Console.Clear();
Console.WriteLine("Erreur, ce pseudo est déjà pris.");
ConsoleHelper.displayTitle("Inscription", true);
writeLineError("Erreur, ce pseudo est déjà pris.");
Console.WriteLine();
System.Threading.Thread.Sleep(1500);
n++;
}
else if (ub.addUser(pseudo, nom, prenom, mdp))
{
Console.WriteLine("Utilisateur ajouté avec succès !");
break;
}
}
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine();
Console.WriteLine("\tInscription réussie !");
Console.ResetColor ();
System.Threading.Thread.Sleep(2000); // Pause de 2 secondes
return 0;
}
if (n >= 3)
int menuMontres()
{
int choix;
do
{
Console.WriteLine("Trop de tentatives. Réessayez plus tard.");
return -1;
}
choix = ConsoleHelper.MultipleChoice("Index des monstres", true,
"Afficher la liste des montres", "Afficher les informations d'un monstre", "Recherche", "Filtrer", "Retour à l'accueil");
switch (choix)
{
case -1:
// Lorsque l'utilisateur appuie sur Echap, retourner à l'accueil.
Console.Clear();
break;
case 0:
Console.Clear();
displayAllMonsters();
break;
case 1:
Console.Clear();
//================= A FAIRE =================//
break;
case 2:
Console.Clear();
rechercheMonstre();
break;
case 3:
Console.Clear();
//================= A FAIRE =================//
break;
case 4:
return 0;
default:
// Pour toutes les autres possiblités non comprise entre -1 et 3
// (normalement pas possible, mais on est jamais trop prudent)
Console.Clear();
writeLineError($"La valeur {choix} n'est pas valide.");
return -1;
}
} while (choix != -1); // Tant que l'utilisateur n'appuie pas sur Echap
Console.WriteLine("Inscription réussie !");
return 0;
}
int monsterPage()
//======================================= Fonctions d'affichage ============================================//
void displayAllMonsters()
{
Console.WriteLine("Index des monstres :");
Console.WriteLine("\n\t1 - Rechercher\n\t2 - Accueil\n");
string? choix;
choix = Console.ReadLine();
if ( choix == "1")
ConsoleHelper.displayTitle("Index des monstres - Affichage des monstres", true);
displayAllMonstersLegend();
Console.WriteLine();
foreach (Monstre m in monsterBase.ListMonsters)
{
List<Monstre> m = new List<Monstre>();
Console.Clear ();
ConsoleKeyInfo carac = Console.ReadKey(true); ;
string listCarac = "";
while (carac.Key != ConsoleKey.Enter)
// Afficher le monstre d'une certaine couleur selon son hostilité
switch (m.Dangerosite)
{
if (carac.Key != ConsoleKey.Backspace)
{
listCarac += carac.KeyChar;
}
else if (carac.Key == ConsoleKey.Backspace)
{
if (!string.IsNullOrEmpty(listCarac))
{
listCarac = listCarac.Remove(listCarac.Length - 1, 1);
}
}
Console.Clear ();
Console.Write(listCarac);
Console.WriteLine();
Console.WriteLine();
m = monsterBase.search(listCarac.ToString(), monsterBase);
foreach (Monstre mnstr in m)
case "hostile":
Console.ForegroundColor = ConsoleColor.DarkRed;
Console.WriteLine($"\t{m.Name}");
Console.ResetColor();
continue;
case "boss":
Console.ForegroundColor = ConsoleColor.Magenta;
Console.WriteLine($"\t{m.Name}");
Console.ResetColor();
continue;
case "passif":
Console.ForegroundColor = ConsoleColor.DarkGreen;
Console.WriteLine($"\t{m.Name}");
Console.ResetColor();
continue;
}
}
}
void displayAllMonstersLegend()
{
Console.Write("Les monstres sont soit ");
Console.ForegroundColor = ConsoleColor.DarkGreen;
Console.Write("passifs");
Console.ResetColor();
Console.Write(", ");
Console.ForegroundColor = ConsoleColor.DarkRed;
Console.Write("hostiles");
Console.ResetColor();
Console.Write(" ou ");
Console.ForegroundColor = ConsoleColor.Magenta;
Console.WriteLine("très agressifs (boss) :");
Console.ResetColor();
}
// Fonction de recherche de monstre, mise à jour de la liste à chaque touche appuyée
void rechercheMonstre()
{
List<Monstre> m = new List<Monstre>();
Console.Clear();
ConsoleKeyInfo carac;
string listCarac = "";
ConsoleHelper.displayTitle("Index des monstres - Recherche", true);
Console.Write("\tRecherche : ");
carac = Console.ReadKey(true);
Console.WriteLine();
while (carac.Key != ConsoleKey.Enter && carac.Key != ConsoleKey.Escape)
{
ConsoleHelper.displayTitle("Index des monstres - Recherche", true);
Console.Write("\tRecherche : ");
if (carac.Key != ConsoleKey.Backspace)
{
listCarac += carac.KeyChar;
}
else if (carac.Key == ConsoleKey.Backspace)
{
if (!string.IsNullOrEmpty(listCarac))
{
Console.WriteLine($"{mnstr.Name} a été trouvé!");
listCarac = listCarac.Remove(listCarac.Length - 1, 1);
}
carac = Console.ReadKey(true);
}
return 1;
}
else
{
Console.WriteLine("Entrer un chiffre correct");
Console.Write(listCarac);
Console.WriteLine();
Console.WriteLine();
m = monsterBase.search(listCarac.ToString(), monsterBase);
foreach (Monstre mnstr in m)
{
Console.WriteLine($"\t- {mnstr.Name}");
}
carac = Console.ReadKey(true);
}
return 0;
writeLineError("Retour à la page précédente...");
Thread.Sleep(1000);
}
menuAccueil();

@ -7,6 +7,10 @@ public class Monstre
{
public int Id { get; set; } = 1;
public string Name { get; set; }
public string Dangerosite { get; private init; }
//EN FAIT IL FAUDRAIT FAIRE UN ENUM DU TYPE DE DANGEROSITÉ, pour rajouter lors de
//l'affichage de la liste des monstres une couleur selon ça,
//genre rouge dangereux, violet hyper dangereux, et vert passif
public string Description { get; set; } = string.Empty;
@ -32,16 +36,17 @@ public class Monstre
}
private List<string> appearance = null!;
public Monstre(int id, string name, string desc, List<string> characList, List<string> appearList)
public Monstre(int id, string name, string danger, string desc, List<string> characList, List<string> appearList)
{
Id = id;
Name = name;
Dangerosite = danger;
Description = desc;
CharacteristicsList = characList;
AppearanceList = appearList;
if (string.IsNullOrWhiteSpace(Name) && string.IsNullOrWhiteSpace(Description))
if (string.IsNullOrWhiteSpace(Name) || string.IsNullOrWhiteSpace(Description) || string.IsNullOrWhiteSpace(danger))
{
throw new ArgumentException("Un monstre doit avoir un nom et une description!");
throw new ArgumentException("Un monstre doit avoir un nom, une description et une dangerosité!");
}
}
}

@ -28,22 +28,22 @@ namespace Model
public List<Monstre> loadMonsters() ///SAME
{
List<Monstre> lm = new List<Monstre>();
lm.Add(new Monstre(1, "Poule", "Je suis un animal présent un peu partout, sauf dans le desert car il fait beaucoup trop chaud. Mais j'aime beaucoup la jungle !", new List<string> { "Quand une poule est tué il y a 3.12% de chance que la poule laisse tomber un oeuf " }, new List<string> { "Apparence1", "App2", "App3" }));
lm.Add(new Monstre(2, "Mouton", "Je suis présent un peu partout, sauf dnas le desert.", new List<string> { "Avec une cisaille il est possible de rasé la laine d'un mouton, il se retoruvera sans laine.", "Pour faire repousser la laine d'un mouton il faut qu'il ai de l'herbe sous ses pattes pour qu'il puisse manger. Une fois manger la laine repousse instantanément !" }, new List<string> { "Apparence1", "App2", "App3" }));
lm.Add(new Monstre(3, "Cochon", "Je suis un animal présent partout, sauf dans le desert ou il fait trop chaud pour moi.", new List<string>{ "La reproduction de cochon peut se faire avec des carottes et des patates crues."}, new List<string> { "Apparence1", "App2", "App3" }));
lm.Add(new Monstre(4, "Warden", "Je ne vous voit pas mais je sais où vous êtes", new List<string> { "Le warden est aveugle mais il entend tous les bruit autour de lui.", "Il apparait dans une caverne spécial appeler les abîmes quand on y marche en faisant trop de bruit.", "Il s'agit du seul monstre qui ai une animation d'apparation, il sort du sol.", "Il est capable de tirer des rayon laser à l'endroit d'où proviennes les bruit qu'il entend." }, new List<string> { "Une seul apparence pour lui" }));
lm.Add(new Monstre(5, "Ender dragon", "Si vous arrivez à me vaincre, vous aurez accompli tout ce qui était possible de faire dans ce monde.", new List<string> { "L'Ender dragon est le boss de fin de minecraft.", "Pour le vaincre il faut trouver le portail inter-dimensionnel qui se cache quelque part dans votre monde.", "Une fois vaincu, il laissera son oeuf ainsi qu'un portail qui vous permettra de rentrer chez vous." }, new List<string> { "Une seul apparence pour lui" }));
lm.Add(new Monstre(6, "Wither", "Une fois que je vous ai aperçue, je ne vous lâcherais plus jusqu'à ce que mort s'ensuive.", new List<string> { "Pour le faire apparaitre, il vous faudrat la tête de 3 wither squelette.", "Le wither lance des tête qui repousse instantanément.", "Ces têtes peuvent vous empoissoné jusqu'à la mort" }, new List<string> { "Apparence de chargement", "Apparence d'attaque", "Apparence mid life" }));
lm.Add(new Monstre(7, "Vache", "Je suis un peu partout dans le monde, mais plus particulièrement dans les plaines.", new List<string> { "Les vaches apparaissent par groupe de quatres minimum.", "Elle peuvent donner du lait grâce à un sceau, ce lait enlève tout les effets de potion que vous aurez" }, new List<string> { "Vache de base", "vache champignon" }));
lm.Add(new Monstre(8, "Loup", "Je deviens vite aggressif lorsque l'on m'attaque.", new List<string> { "Les loups peuvent être apprivoisé grâce à des os.", " Une fois apprivoisé" }, new List<string> { "Apparence nature", "Apparence méchant", "Apparence apprivoisé" }));
lm.Add(new Monstre(9, "Chat", "J'espère que tu as du poisson, sinon je ne m'approche pas de toi !", new List<string> { "Le chat à peur des humain mais apparaît seulement dans les villages.", "Si un chat apparaît près d'une sorcière, il sera forcément noir" }, new List<string> { "apparence au pif", "apparence noir" }));
lm.Add(new Monstre(10, "Zombie", "Je peux vous voir de très loin et venir discrètement.", new List<string> { "Il y a une faible chance qu'un zombie qui apparaît soit un zombie villageois, il est possible de le re transformer en villageois afin de faire des échanges à prix réduit avec lui", "Les bébé zombie sont les monstres les plus rapides." }, new List<string> { "Zobmie", "zombie villageois", " bébé zombie" }));
lm.Add(new Monstre(11, "Squelette", "Je suis un sniper d'élite, je ne loupe presque jamais ma cible", new List<string> { "Il laisse parfois tomber leurs arc, mais ils sont souvent usés.", " Parfois il chevauche une araignée pour se déplacer, il devient alors plus rapide." }, new List<string> { "basique", "spider jokey" }));
lm.Add(new Monstre(12, "Creeper", "J'approche doucement et j'explose.", new List<string> { "Le creeper possède une peau verte et blanche. Cette apparence était à l'époque de la bêta du jeu la même que les blocs de terre, afin de surprendre les joueurs.", "Il est possible de le faire exploser avec un briquet" }, new List<string> { "apparence de base" }));
lm.Add(new Monstre(13, "Phantom", "Dormez ou je viendrais", new List<string> { "Le phantom apparaît lorsque vous ne dormez pas pendant plus de trois jour d'affilés.", "Ils sont difficile à atteindre pusiqu'il vole plutôt vite" }, new List<string>{"Apparence 1"}));
lm.Add(new Monstre(14, "Enderman", "Ne me regardez pas ! ", new List<string> { "Si vous regardez un enderman dans les yeux, il se mettra à vous attaquer, autrement, il est inoffensif", " Gardez le contact visuel avec, lui le fera changer d'avis au bout de quelques secondes sur l'agressivité qu'il a envers vous.", "Il est capable de prendre des blocks et les reposer ailleurs." }, new List<string> { "apparence 1", "apparence avec un bloc" }));
lm.Add(new Monstre(15, "Slime", "Je connais le multiclonage !", new List<string> { "Les slimes peuvent apparaître avec des tailles différentes.", "S'il n'est pas trop petit, il se divisera en quatre."}, new List<string> { "Apparencegrand", "apparence petit"}));
lm.Add(new Monstre(16, "Araignée", " je sais pas quoi mettre mdrrrrr", new List<string> { "L'arraignée est capable de grimper au mur", " Si vous en rencontrait une en journée et en extérieur elle sera inoffensive, mais dans une caverne ou pendant la nuit elle vous attaquera." }, new List<string> { "une seule apparence" }));
lm.Add(new Monstre(1, "Poule", "passif", "Je suis un animal présent un peu partout, sauf dans le desert car il fait beaucoup trop chaud. Mais j'aime beaucoup la jungle !", new List<string> { "Quand une poule est tué il y a 3.12% de chance que la poule laisse tomber un oeuf " }, new List<string> { "Apparence1", "App2", "App3" }));
lm.Add(new Monstre(2, "Mouton", "passif", "Je suis présent un peu partout, sauf dnas le desert.", new List<string> { "Avec une cisaille il est possible de rasé la laine d'un mouton, il se retoruvera sans laine.", "Pour faire repousser la laine d'un mouton il faut qu'il ai de l'herbe sous ses pattes pour qu'il puisse manger. Une fois manger la laine repousse instantanément !" }, new List<string> { "Apparence1", "App2", "App3" }));
lm.Add(new Monstre(3, "Cochon", "passif", "Je suis un animal présent partout, sauf dans le desert ou il fait trop chaud pour moi.", new List<string>{ "La reproduction de cochon peut se faire avec des carottes et des patates crues."}, new List<string> { "Apparence1", "App2", "App3" }));
lm.Add(new Monstre(4, "Warden", "boss", "Je ne vous voit pas mais je sais où vous êtes", new List<string> { "Le warden est aveugle mais il entend tous les bruit autour de lui.", "Il apparait dans une caverne spécial appeler les abîmes quand on y marche en faisant trop de bruit.", "Il s'agit du seul monstre qui ai une animation d'apparation, il sort du sol.", "Il est capable de tirer des rayon laser à l'endroit d'où proviennes les bruit qu'il entend." }, new List<string> { "Une seul apparence pour lui" }));
lm.Add(new Monstre(5, "Ender dragon", "boss", "Si vous arrivez à me vaincre, vous aurez accompli tout ce qui était possible de faire dans ce monde.", new List<string> { "L'Ender dragon est le boss de fin de minecraft.", "Pour le vaincre il faut trouver le portail inter-dimensionnel qui se cache quelque part dans votre monde.", "Une fois vaincu, il laissera son oeuf ainsi qu'un portail qui vous permettra de rentrer chez vous." }, new List<string> { "Une seul apparence pour lui" }));
lm.Add(new Monstre(6, "Wither", "boss", "Une fois que je vous ai aperçue, je ne vous lâcherais plus jusqu'à ce que mort s'ensuive.", new List<string> { "Pour le faire apparaitre, il vous faudrat la tête de 3 wither squelette.", "Le wither lance des tête qui repousse instantanément.", "Ces têtes peuvent vous empoissoné jusqu'à la mort" }, new List<string> { "Apparence de chargement", "Apparence d'attaque", "Apparence mid life" }));
lm.Add(new Monstre(7, "Vache", "passif", "Je suis un peu partout dans le monde, mais plus particulièrement dans les plaines.", new List<string> { "Les vaches apparaissent par groupe de quatres minimum.", "Elle peuvent donner du lait grâce à un sceau, ce lait enlève tout les effets de potion que vous aurez" }, new List<string> { "Vache de base", "vache champignon" }));
lm.Add(new Monstre(8, "Loup", "passif", "Je deviens vite aggressif lorsque l'on m'attaque.", new List<string> { "Les loups peuvent être apprivoisé grâce à des os.", " Une fois apprivoisé" }, new List<string> { "Apparence nature", "Apparence méchant", "Apparence apprivoisé" }));
lm.Add(new Monstre(9, "Chat", "passif", "J'espère que tu as du poisson, sinon je ne m'approche pas de toi !", new List<string> { "Le chat à peur des humain mais apparaît seulement dans les villages.", "Si un chat apparaît près d'une sorcière, il sera forcément noir" }, new List<string> { "apparence au pif", "apparence noir" }));
lm.Add(new Monstre(10, "Zombie", "hostile", "Je peux vous voir de très loin et venir discrètement.", new List<string> { "Il y a une faible chance qu'un zombie qui apparaît soit un zombie villageois, il est possible de le re transformer en villageois afin de faire des échanges à prix réduit avec lui", "Les bébé zombie sont les monstres les plus rapides." }, new List<string> { "Zobmie", "zombie villageois", " bébé zombie" }));
lm.Add(new Monstre(11, "Squelette", "hostile", "Je suis un sniper d'élite, je ne loupe presque jamais ma cible", new List<string> { "Il laisse parfois tomber leurs arc, mais ils sont souvent usés.", " Parfois il chevauche une araignée pour se déplacer, il devient alors plus rapide." }, new List<string> { "basique", "spider jokey" }));
lm.Add(new Monstre(12, "Creeper", "hostile", "J'approche doucement et j'explose.", new List<string> { "Le creeper possède une peau verte et blanche. Cette apparence était à l'époque de la bêta du jeu la même que les blocs de terre, afin de surprendre les joueurs.", "Il est possible de le faire exploser avec un briquet" }, new List<string> { "apparence de base" }));
lm.Add(new Monstre(13, "Phantom", "hostile", "Dormez ou je viendrais", new List<string> { "Le phantom apparaît lorsque vous ne dormez pas pendant plus de trois jour d'affilés.", "Ils sont difficile à atteindre pusiqu'il vole plutôt vite" }, new List<string>{"Apparence 1"}));
lm.Add(new Monstre(14, "Enderman", "hostile", "Ne me regardez pas ! ", new List<string> { "Si vous regardez un enderman dans les yeux, il se mettra à vous attaquer, autrement, il est inoffensif", " Gardez le contact visuel avec, lui le fera changer d'avis au bout de quelques secondes sur l'agressivité qu'il a envers vous.", "Il est capable de prendre des blocks et les reposer ailleurs." }, new List<string> { "apparence 1", "apparence avec un bloc" }));
lm.Add(new Monstre(15, "Slime", "hostile", "Je connais le multiclonage !", new List<string> { "Les slimes peuvent apparaître avec des tailles différentes.", "S'il n'est pas trop petit, il se divisera en quatre."}, new List<string> { "Apparencegrand", "apparence petit"}));
lm.Add(new Monstre(16, "Araignée", "hostile", " je sais pas quoi mettre mdrrrrr", new List<string> { "L'arraignée est capable de grimper au mur", " Si vous en rencontrait une en journée et en extérieur elle sera inoffensive, mais dans une caverne ou pendant la nuit elle vous attaquera." }, new List<string> { "une seule apparence" }));
return lm;
}
}

@ -8,9 +8,10 @@ namespace Tests
[Fact]
public void TestFullConstructor()
{
Monstre a = new Monstre(0, "Name", "This is my description", new List<string> { "Carac 1", "Carac 2", "Carac 3" }, new List<string> { "App 1", "App 2", "App 3" });
Monstre a = new Monstre(0, "Name", "Hostility", "This is my description", new List<string> { "Carac 1", "Carac 2", "Carac 3" }, new List<string> { "App 1", "App 2", "App 3" });
Assert.NotNull(a);
Assert.Equal("Name", a.Name);
Assert.Equal("Hostility", a.Dangerosite);
Assert.Equal("This is my description", a.Description);
Assert.Equal(new List<string> { "Carac 1", "Carac 2", "Carac 3" }, a.CharacteristicsList);
Assert.Equal(new List<string> { "App 1", "App 2", "App 3" }, a.AppearanceList);
@ -19,7 +20,7 @@ namespace Tests
[Fact]
public void TestVoidConstructor()
{
Assert.Throws<ArgumentException>(() => new Monstre(0, "", "", new List<string> { "" }, new List<string> { "" }));
Assert.Throws<ArgumentException>(() => new Monstre(0, "", "", "", new List<string> { "" }, new List<string> { "" }));
}
}
}
Loading…
Cancel
Save