C# Консольная псевдографика, создание меню, переключение между страницами

Узнай цену своей работы

Формулировка задачи:

Добрый день, я немного ламер в C#, но у меня стоит задача: Мне надо в консольном приложении создать меню(это осилил) и чтобы при нажатии на выбранном пункте переходило на нужную страницу(из-за ламерства сделал костыль), но при нажатии Esc - возвращало в меню(не осилил). Смотрел примеры, которые приводили до меня - не совсем то, хотя один из них взял за основу, но переделать полностью под себя не знаю как.. Вот то что у меня сейчас в коде программы(он был скопирован из одного из примеров + чутка изменен):
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. namespace test
  6. {
  7. class Program
  8. {
  9. public static void Print(string[] points, int choose)
  10. {
  11. Console.Clear();
  12. for (int i = 0; i < points.Length; i++)
  13. {
  14. Console.WriteLine("{0} {1}", points[i], i == choose ? "" + (char)9668 : "");
  15. }
  16. }
  17. public static int Menu(string[] points)
  18. {
  19. Console.CursorVisible = false; // Чтобы не было мигающего курсора.
  20. int choose = 0;
  21. while (true) // Бесконечный цикл.
  22. {
  23. Print(points, choose);
  24. switch (Console.ReadKey(true).Key)
  25. {
  26. case ConsoleKey.UpArrow: choose--; break;
  27. case ConsoleKey.DownArrow: choose++; break;
  28. case ConsoleKey.D: Console.CursorVisible = true; return -1;
  29. case ConsoleKey.Enter: Console.CursorVisible = true; return choose;
  30. }
  31. choose = (choose + points.Length) % points.Length; // Зацикливаем выбор.
  32. }
  33. }
  34. public static void Main()
  35. {
  36. string[] points = { "1) Выполнить ", "2) Настройка", "3) О программе", "4) Выход"};
  37. int choose = Menu(points);
  38. // Console.WriteLine(choose == -1 ? "Ничего не выбрано" : string.Format("Был выбран пункт №{0}", choose + 1));
  39. if (choose == 0) // Мой костыль. Пока думаю через if проверять что выбрано...
  40. {
  41. Console.Clear();
  42. Console.WriteLine("OK");
  43. Console.ReadKey();
  44. }
  45. }
  46. }
  47. }

Решение задачи: «C# Консольная псевдографика, создание меню, переключение между страницами»

textual
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4.  
  5. namespace ConsoleApplication1
  6. {
  7.     class Program
  8.     {
  9.         public static void Print(string[] points, int choose)
  10.         {
  11.             Console.Clear();
  12.  
  13.             for (int i = 0; i < points.Length; i++)
  14.             {
  15.  
  16.                 Console.WriteLine("{0} {1}", points[i], i == choose ? "" + (char)9668 : "");
  17.  
  18.             }
  19.         }
  20.  
  21.         public static int MenuProcess(string[] points)
  22.         {
  23.             Console.CursorVisible = false;
  24.             int choose = 0;
  25.             while (true)
  26.             {
  27.                 Print(points, choose);
  28.                 switch (Console.ReadKey(true).Key)
  29.                 {
  30.                     case ConsoleKey.UpArrow: choose--; break;
  31.                     case ConsoleKey.DownArrow: choose++; break;
  32.                     case ConsoleKey.D: Console.CursorVisible = true; return -1;
  33.                     case ConsoleKey.Enter: Console.CursorVisible = true; return choose;
  34.                     case ConsoleKey.Escape: return 0;
  35.                 }
  36.                 choose = (choose + points.Length) % points.Length;
  37.             }
  38.         }
  39.  
  40.         public static int GoToMenu()
  41.         {
  42.             string[] points = { "1) Выполнить ", "2) Настройка", "3) О программе", "4) Выход" };
  43.             int result = MenuProcess(points);
  44.             return result;
  45.         }
  46.  
  47.         public static int GoToMainWindow()
  48.         {
  49.             Console.CursorVisible = false;
  50.             Console.WriteLine("Try Esc for exit or Enter for menu page");
  51.             while (true)
  52.             {
  53.                 switch (Console.ReadKey(true).Key)
  54.                 {
  55.                     case ConsoleKey.Enter: return 1; // В меню
  56.                     case ConsoleKey.Escape: return 0; // Выход
  57.                 }
  58.             }
  59.         }
  60.  
  61.         public static void Loop(int sres)
  62.         {
  63.             int res = sres;
  64.             bool loop = true;
  65.  
  66.             while (loop)
  67.             {
  68.                 Console.Clear();
  69.                 if (res == 1)
  70.                 {
  71.                     res = GoToMainWindow();
  72.                 }
  73.  
  74.                 if (res == 0)
  75.                 {
  76.                     Console.WriteLine("Bye");
  77.                     loop = false;
  78.                 }
  79.  
  80.                 if (res == 1)
  81.                 {
  82.                     int menuRes;
  83.                     Console.Clear();
  84.                     menuRes = GoToMenu();
  85.                     if (menuRes == 0)
  86.                         res = 1;
  87.                     if (menuRes == 3) // 3 это "4) Выход"
  88.                         res = 0;
  89.                 }
  90.             }
  91.         }
  92.  
  93.         static void Main(string[] args)
  94.         {
  95.             Loop(1);
  96.         }
  97.     }
  98. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы