public void AjoutElement(ref List<Elements.Element> lElements, int ligne, int col) { Console.CursorVisible = true; Console.SetCursorPosition(col+1, ligne); Console.Write("Nom Element : "); ElementSet nouvelElement = new ElementSet(Console.ReadLine()); Console.CursorVisible = false; List<string> affichageMenu = new List<string>(); for (int i = 0; i < nouvelElement.NombreObjet; i++) affichageMenu.Add(lElements[nouvelElement.indiceNumObjet(i)].ToString()); affichageMenu.Add(" Nouvel Objet "); affichageMenu.Add(" OK "); bool ok = false; int choixMenu = 0; while (!ok) { bool continu = false; #region affichage contour Console.SetCursorPosition(col, ligne); Console.Write("+--------------------------------+ "); Console.SetCursorPosition(col, ligne + 1); Console.Write("| {0, 16} |", nouvelElement.Nom); Console.SetCursorPosition(col, ligne + 2); Console.Write("| |"); for (int i = 0; i < (affichageMenu.Count + nouvelElement.NombreObjet); i++) { Console.SetCursorPosition(col, ligne + 3 + i); Console.Write("| |"); } Console.SetCursorPosition(col, ligne + 3 + affichageMenu.Count); Console.Write("| |"); Console.SetCursorPosition(col, ligne + 4 + affichageMenu.Count); Console.Write("+--------------------------------+"); for (int i = 0; i < 5; i++) { Console.SetCursorPosition(col, i + ligne + 5 + affichageMenu.Count); Console.Write(" "); } #endregion #region affichage contenu for (int i = 0; i < affichageMenu.Count; i++) { if (affichageMenu.Count - i < 2) Console.SetCursorPosition(col + 5, ligne + 3 + i); else Console.SetCursorPosition(col + 2, ligne + 3 + i); Console.ForegroundColor = (i == choixMenu ? ConsoleColor.Red : ConsoleColor.White); if (affichageMenu.Count - i < 2) Console.Write(affichageMenu[i]); else Console.Write("{0,-23} (+/-) ", affichageMenu[i]); Console.ForegroundColor = ConsoleColor.White; } #endregion ConsoleKeyInfo touchePress = Console.ReadKey(); #region Reaction touche Pressée switch (touchePress.Key) { case ConsoleKey.Add: if (choixMenu >= nouvelElement.NombreObjet) break; // si pas pour un element nouvelElement.incNombreObjet(choixMenu); break; case ConsoleKey.Subtract: if (choixMenu >= nouvelElement.NombreObjet) break; nouvelElement.decNombreObjet(choixMenu); break; case ConsoleKey.UpArrow: choixMenu--; if (choixMenu < 0) choixMenu++; break; case ConsoleKey.DownArrow: choixMenu++; if (choixMenu >= affichageMenu.Count) choixMenu--; break; case ConsoleKey.Enter: continu = true; break; case ConsoleKey.Escape: return; default: break; } #endregion if (continu) // si choix parmis le menu { choixMenu -= nouvelElement.NombreObjet; switch (choixMenu) { // ligne ajoutObjet = ligne + taille menu + nombre Objet + bordures + titre case 0: nouvelElement.ajoutObjet(ref lElements, ligne + affichageMenu.Count + nouvelElement.NombreObjet + 5, col); break; // (ligne, col) case 1: ok = true; break; } } } // fin while nouvel ELement Ajouté nouvelElement.verifieObjet(); m_ElementsDuSet.Add(nouvelElement); }
public void AjoutElement(ElementSet es) { m_ElementsDuSet.Add(es); }
static void Main(string[] args) { Console.Clear(); Console.ForegroundColor = ConsoleColor.White; Console.Title = "Monster Hunter Helper"; Console.SetWindowSize(125, 50); Console.CursorVisible = false; Sets.Set set = new Sets.Set(""); List<Elements.Element> lElements = new List<Elements.Element>(); List<Sets.Set> lSets = new List<Sets.Set>(); List<Monstres.Monstre> lMonstre = new List<Monstres.Monstre>(); List<int> nombreNecessaire = new List<int>(), nombreDisponible = new List<int>(); List<Triplet> affichage = new List<Triplet>(); #region Chargement Information using (StreamReader sr = new StreamReader("carnet.joueur")) { string[] elements = sr.ReadLine().Split('@'); #region ajout Elements foreach(string element in elements) lElements.Add(new Elements.Element(element.Split(',')[0], element.Split(',')[1])); #endregion string[] nombres = sr.ReadLine().Split(','); int nombreSet = Int32.Parse(nombres[0]), nombreMonstre = Int32.Parse(nombres[1]); #region Ajout Sets for(int i = 0; i < nombreSet; i++) { string[] infos = sr.ReadLine().Split(','); set = new Sets.Set(infos[0]); int nombreES = Int32.Parse(sr.ReadLine()); while(nombreES-- > 0) { string[] sES = sr.ReadLine().Split('@'); Sets.ElementSet es = new Sets.ElementSet(sES[0]); for (int j = 1; j < sES.Length; j++) { if (Int32.Parse(sES[j].Split(',')[1]) > 0) { es.ajoutObjet(Int32.Parse(sES[j].Split(',')[0])); int nombreObjet = Int32.Parse(sES[j].Split(',')[1]); while (nombreObjet-- > 0) es.incNombreObjet(j - 1); // j-1 car j démarre de 1 } } set.AjoutElement(es); } lSets.Add(set); } #endregion #region Ajout Monstres for(int i = 0; i < nombreMonstre; i++) { string[] infos = sr.ReadLine().Split('@'); Monstres.Monstre m = new Monstres.Monstre(infos[0]); for(int j = 1; j < infos.Length; j++) m.ajoutObjetDrop(Int32.Parse(infos[j])); lMonstre.Add(m); } #endregion } // fin using #endregion Console.Clear(); List<string> menuPrinc = new List<string>(), menuAjout = new List<string>(), menuInterraction = new List<string>(), menuListe = new List<string>(); menuPrinc.Add("Ajouter"); menuAjout.Add("Element"); menuAjout.Add(" Set "); menuAjout.Add("Monstre"); menuPrinc.Add("Interragir"); menuInterraction.Add(""); menuInterraction.Add(""); menuInterraction.Add(""); menuPrinc.Add("Liste"); menuListe.Add("Element"); menuListe.Add(" Set "); menuListe.Add("Monstre"); menuPrinc.Add("Quitter"); while(true) { try{ switch(Menu.Menu.menu("Menu principal", new string[][] { menuPrinc.ToArray() }, 1, new int[] { 0 }, new int[] { 20 }, new int[] { 20 })[0]) { case 0 : break; case 1 : break; case 2 : break; case 3 : Console.Clear(); Console.CursorVisible = true; return; default : break; } } catch(ExitException) { } } /* #region Création du set par le joueur else { Console.Write("Entrez le nom de votre set : "); Console.CursorVisible = true; Console.CursorVisible = false; set = new Sets.Set(Console.ReadLine()); bool ok = false; while (!ok) { List<string> listeElement = new List<string>(); for (int i = 0; i < set.NombreElement; i++) listeElement.Add(set.Element(i)); listeElement.Add("Ajouter un element"); listeElement.Add(" OK "); switch (Menu.Menu.menu("", // Titre new string[][] { listeElement.ToArray()}, 1, /* ligne[], colone[] *//* new int[] { 14 }, new int[] { 25 }, /* largeur[] *//* new int[] { 34 })[0]) { case 0: set.AjoutElement(14, 61); break; // (ligne, col) case 1: ok = true; break; } } } #endregion set.recupObjets(ref lElements, ref nombreNecessaire); foreach (int nombre in nombreNecessaire) nombreDisponible.Add(0); for (int i = 0; i < objets.Count; i++) affichage.Add(new Triplet(objets[i], nombreNecessaire[i], nombreDisponible[i])); #region Enregistrement du set using (StreamWriter sw = new StreamWriter(set.Nom + ".set", false)) { sw.WriteLine(set.ToString()); } #endregion #region interraction avec le set // Affichage de deux fenetres cote a cote, une qui affiche les éléments du set, l'autre qui affiche les objets de l'autre coté int hauteur = (objets.Count >= set.NombreElement ? objets.Count : set.NombreElement); int numFenetre = 0; // Deux morceaux de fenetres, 0 et 1 int positionFenetre0 = 27, positionFenetre1 = 60; int selection = 0; // indique la ligne selectionnée bool quit = false; while (!quit) { Console.Clear(); #region Affichage contour Console.SetCursorPosition(25, 0); Console.Write("+--------------------------------+--------------------------------------+"); Console.SetCursorPosition(25, 1); Console.Write("| {0, -20} |", set.Nom); Console.SetCursorPosition(25, 2); Console.Write("| | |", set.Nom); for (int i = 0; i < hauteur; i++) { Console.SetCursorPosition(25, i + 3); Console.Write("| | |"); } Console.SetCursorPosition(25, hauteur + 3); Console.Write("| | |"); Console.SetCursorPosition(25, hauteur + 4); Console.Write("+--------------------------------+--------------------------------------+"); #endregion #region affichage des Listes for (int i = 0; i < set.NombreElement; i++) { Console.SetCursorPosition(positionFenetre0, 3 + i); if (numFenetre == 0 && selection == i) Console.ForegroundColor = (set.Construit(i) ? ConsoleColor.DarkRed : ConsoleColor.Red); else Console.ForegroundColor = (set.Construit(i) ? ConsoleColor.Gray : ConsoleColor.White); Console.Write(set.Element(i)); Console.ForegroundColor = ConsoleColor.White; } for (int i = 0; i < objets.Count; i++) { Console.SetCursorPosition(positionFenetre1, 3 + i); Console.ForegroundColor = (numFenetre == 1 && selection == i ? ConsoleColor.Red : ConsoleColor.White); Console.Write(affichage[i].objet + " (" + affichage[i].nombreDisponible + "/" + affichage[i].nombreNecessaire + ")"); Console.ForegroundColor = ConsoleColor.White; } #endregion ConsoleKeyInfo touchePressee = Console.ReadKey(); switch (touchePressee.Key) { case ConsoleKey.DownArrow: selection++; if (selection >= (numFenetre == 0 ? set.NombreElement : objets.Count)) selection--; break; case ConsoleKey.UpArrow: selection--; if (selection < 0) selection++; break; case ConsoleKey.RightArrow: numFenetre++; numFenetre %= 2; break; case ConsoleKey.LeftArrow: numFenetre--; if (numFenetre < 0) numFenetre++; break; case ConsoleKey.Add: if (numFenetre == 1) nombreDisponible[selection]++; break; case ConsoleKey.Subtract: if (numFenetre == 1) { nombreDisponible[selection]--; if (nombreDisponible[selection] < 0) nombreDisponible[selection]++; } break; case ConsoleKey.Enter: if (numFenetre == 0) set.estConstruit(selection); break; case ConsoleKey.Escape: quit = true; break; } if (numFenetre == 0 && selection > set.NombreElement) selection = set.NombreElement - 1; objets = new List<string>(); nombreNecessaire = new List<int>(); affichage = new List<Triplet>(); set.recupObjets(ref objets, ref nombreNecessaire); for (int i = 0; i < objets.Count; i++) affichage.Add(new Triplet(objets[i], nombreNecessaire[i], nombreDisponible[i])); } #endregion #region Enregistrement du set using (StreamWriter sw = new StreamWriter(set.Nom + ".set", false)) { sw.WriteLine(set.ToString()); } #endregion //*/ }