Advertisement
TwinFrame

Game_EditMap_ControlPlayer_workerVer

Jan 17th, 2020
204
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.92 KB | None | 0 0
  1. using System;
  2.  
  3. namespace Clight_19_Game_MapControlPlayer
  4. {
  5. class Program
  6. {
  7. static void Main(string[] args)
  8. {
  9. bool isOpenMainMenu = true;
  10. int numMainMenu = 3;
  11. int currentNum = 0;
  12.  
  13. int maxLine = 30;
  14. int maxRow = 10;
  15. int numLine = 5;
  16. int numRow = 3;
  17. char[,] map = new char[numRow, numLine];
  18.  
  19.  
  20.  
  21.  
  22. while (isOpenMainMenu == true)
  23. {
  24. Console.WriteLine("Меню игры:\n");
  25. Console.WriteLine("1 - Нарисовать карту");
  26. Console.WriteLine("2 - Играть");
  27. Console.WriteLine("3 - Выход");
  28. Console.Write("\nВыберете пункт меню: ");
  29. string currentMainMenu = Console.ReadLine();
  30. CheckUserInput(currentMainMenu, numMainMenu, ref currentNum);
  31. //Console.WriteLine("Текущий пункт меню: " + currentNum);
  32. //Console.ReadKey();
  33.  
  34. switch (currentNum)
  35. {
  36. case 1:
  37.  
  38. Console.Write($"Длина карты в символах (не больше {maxLine}): ");
  39. string currentLenghtLine = Console.ReadLine();
  40. CheckUserInput(currentLenghtLine, maxLine, ref numLine);
  41. Console.Write($"Высота карты в символах (не больше {maxRow}): ");
  42. string currentLenghtRow = Console.ReadLine();
  43. CheckUserInput(currentLenghtRow, maxRow, ref numRow);
  44. map = new char[numRow, numLine];
  45. Console.Clear();
  46.  
  47. map = DrawFrameMap(numLine, numRow, ref map);
  48. Console.SetCursorPosition(0, numRow + 2);
  49. Console.WriteLine("Перещайтесь по карте стрелками.\n\n" +
  50. "F1 - # - добаить элемент стены .\n" +
  51. "F2 - % - добавить ягоду.\n" +
  52. "F3 - 0 - установить начальные координаты игрока\n" +
  53. "F4 - - удалить объект\n" +
  54. "F5 - - Выход (дубль)\n" +
  55. "Enter - Выход");
  56.  
  57. bool isOpenCreateMenu = true;
  58. int dX = 0, dY = 0;
  59. int cursorX = 1, cursorY = 1;
  60. while (isOpenCreateMenu == true)
  61. {
  62. if (Console.KeyAvailable)
  63. {
  64. ConsoleKeyInfo key = Console.ReadKey(true);
  65. NavigationMenu(key, ref isOpenCreateMenu, ref cursorX, ref cursorY, ref map);
  66. Console.WriteLine(cursorX + ", " + cursorY);
  67. }
  68. Console.ReadKey();
  69. }
  70. break;
  71. case 2:
  72. isOpenMainMenu = false;
  73. Console.Clear();
  74. for (int i = 0; i < numRow; i++)
  75. {
  76. for (int j = 0; j < numLine; j++)
  77. {
  78. Console.Write(map[i, j]);
  79.  
  80. }
  81. Console.WriteLine();
  82. }
  83. Console.WriteLine("Ваша карта:");
  84. Console.ReadKey();
  85. break;
  86. case 3:
  87. Console.WriteLine("Пока!");
  88. Console.ReadKey();
  89. isOpenMainMenu = false;
  90. break;
  91. }
  92. Console.Clear();
  93. }
  94. }
  95. static void NavigationMenu(ConsoleKeyInfo key, ref bool isOpen, ref int cursorX, ref int cursorY, ref char[,] map)
  96. {
  97. int x = cursorX;
  98. int y = cursorY;
  99. int dX = 0, dY = 0;
  100. switch (key.Key)
  101. {
  102. case ConsoleKey.Enter:
  103. isOpen = false;
  104. break;
  105. case ConsoleKey.F1:
  106. Console.Write('#');
  107. map[y, x] = '#';
  108. break;
  109. case ConsoleKey.F2:
  110. Console.Write('%');
  111. map[y, x] = '%';
  112. break;
  113. case ConsoleKey.F3:
  114. Console.Write('0');
  115. map[y, x] = '0';
  116. break;
  117. case ConsoleKey.F4:
  118. Console.Write(' ');
  119. map[y, x] = ' ';
  120. break;
  121. case ConsoleKey.F5:
  122. isOpen = false;
  123. break;
  124. case ConsoleKey.UpArrow:
  125. dX = 0; dY = -1;
  126. break;
  127. case ConsoleKey.DownArrow:
  128. dX = 0; dY = 1;
  129. break;
  130. case ConsoleKey.LeftArrow:
  131. dX = -1; dY = 0;
  132. break;
  133. case ConsoleKey.RightArrow:
  134. dX = 1; dY = 0;
  135. break;
  136. if (x + dX >= 0 && y + dY >= 0)
  137. {
  138. x += dX;
  139. y += dY;
  140. }
  141. cursorX = x;
  142. cursorY = y;
  143. Console.SetCursorPosition(cursorX, cursorY);
  144. }
  145. }
  146. static void CheckUserInput(string currentMenu, int maxNumMenu, ref int currentNum)
  147. {
  148. bool goodTry = false;
  149. bool goodMenu = Int32.TryParse(currentMenu, out int Num);
  150. if (goodMenu == true && (Num > 0 && Num <= maxNumMenu))
  151. {
  152. currentNum = Num;
  153. }
  154. else
  155. {
  156. Console.WriteLine("Не корректный ввод. Попробуйте еще раз.");
  157. }
  158. }
  159.  
  160. static char[,] DrawFrameMap(int numLine, int numRow, ref char[,] map)
  161. {
  162. char[,] currentMap = map;
  163. for (int i = 0; i < numRow; i++)
  164. {
  165. for (int j = 0; j < numLine; j++)
  166. {
  167. if (i == 0 || i == numRow - 1)
  168. {
  169. Console.SetCursorPosition(j, i);
  170. Console.Write('#');
  171. currentMap[i, j] = '#';
  172. }
  173. else if (j == 0 || j == numLine - 1)
  174. {
  175. Console.SetCursorPosition(j, i);
  176. Console.Write('#');
  177. currentMap[i, j] = '#';
  178. }
  179. }
  180. Console.WriteLine();
  181. }
  182. return currentMap;
  183. }
  184. }
  185. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement