Пятнашки в консоли.Как менять значения массива? - C#

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

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

Нужна помощь. Пишу пятнашки в консоли. Поле 5х5. Сделал поле-Проверил, что бы числа не повторялись-Наименьшему числу присвоил символ(это будет пустое поле). Попробовал даже сделать метод для замены значений, но он не работает.Как-то не правильно передаю аргументы. Проблема - как менять местами значения при нажатии клавиш управления? Подскажите,пожалуйста.
Листинг программы
  1. using System;
  2. using System.Text;
  3. namespace Fifteens
  4. {
  5. class Field
  6. {
  7. public string[,] field = new string[5, 5];
  8. Random ran = new Random();
  9. public bool CheckingForRepeat(string elem)
  10. {
  11. for (int i = 0; i < 5; i++)
  12. {
  13. for (int j = 0; j < 5; j++)
  14. {
  15. if (field[i, j] == elem)
  16. return true;
  17. }
  18. }
  19. return false;
  20. }
  21. public string[,] GetField()
  22. {
  23. string forCheck;
  24. for (int i = 0; i < 5; i++)
  25. {
  26. for (int j = 0; j < 5; j++)
  27. {
  28. forCheck = Convert.ToString(ran.Next(0, 25));
  29. while (CheckingForRepeat(forCheck) == true)
  30. { forCheck = Convert.ToString(ran.Next(0, 25)); }
  31. field[i, j] = forCheck;
  32. }
  33. }
  34. Console.WriteLine();
  35. return field;
  36. }
  37. public void ShowField()
  38. {
  39. for (int i = 0; i < 5; i++)
  40. {
  41. for (int j = 0; j < 5; j++)
  42. {
  43. if (field[i, j] == "0")
  44. {
  45. field[i, j] = "\\_/";
  46. Console.ForegroundColor = ConsoleColor.Red;
  47. Console.ResetColor();
  48. }
  49. Console.Write("{0,4}", field[i, j]);
  50. }
  51. Console.WriteLine();
  52. }
  53. }
  54. public void SwapArrayElements(ref string[,] a, ref string[,] b)
  55. {
  56. string[,] temp = a;
  57. a = b;
  58. b = temp;
  59. }
  60. }
  61. class Program
  62. {
  63. static void Main(string[] args)
  64. {
  65. Field field = new Field();
  66. field.GetField();
  67. field.ShowField();
  68.  
  69. while (true)
  70. {
  71. ConsoleKeyInfo keyinfo = Console.ReadKey();
  72. switch (keyinfo.Key)
  73. {
  74. case ConsoleKey.UpArrow:
  75.  
  76. break;
  77. case ConsoleKey.DownArrow:
  78.  
  79. break;
  80. case ConsoleKey.LeftArrow:
  81.  
  82. break;
  83. case ConsoleKey.RightArrow:
  84.  
  85. break;
  86. }
  87. }
  88. }
  89. }

Решение задачи: «Пятнашки в консоли.Как менять значения массива?»

textual
Листинг программы
  1. using System;
  2. using System.Drawing;
  3. using System.Text;
  4.  
  5.  
  6. namespace Fifteens
  7. {
  8.     class Field
  9.     {
  10.         public string[,] field = new string[5, 5];
  11.         Random ran = new Random();
  12.         Point current; //координаты пустого поля
  13.         public bool CheckingForRepeat(string elem)
  14.         {
  15.             for (int i = 0; i < 5; i++)
  16.             {
  17.                 for (int j = 0; j < 5; j++)
  18.                 {
  19.                     if (field[i, j] == elem)
  20.                         return true;
  21.                 }
  22.             }
  23.             return false;
  24.         }
  25.         public string[,] GetField()
  26.         {
  27.             string forCheck;
  28.             for (int i = 0; i < 5; i++)
  29.             {
  30.                 for (int j = 0; j < 5; j++)
  31.                 {
  32.                     forCheck = Convert.ToString(ran.Next(0, 25));
  33.                     while (CheckingForRepeat(forCheck) == true)
  34.                     { forCheck = Convert.ToString(ran.Next(0, 25)); }
  35.                     field[i, j] = forCheck;
  36.                     if (field[i, j] == "0") current=new Point(i,j);
  37.                 }
  38.             }
  39.             Console.WriteLine();
  40.             return field;
  41.         }
  42.         public void ShowField()
  43.         {
  44.             Console.Clear();
  45.             for (int i = 0; i < 5; i++)
  46.             {
  47.                 for (int j = 0; j < 5; j++)
  48.                 {
  49.                     if ((i == current.X) && (j==current.Y))
  50.                     {
  51.                         field[i, j] = "\\_/";
  52.                         Console.ForegroundColor = ConsoleColor.Red;
  53.                         Console.ResetColor();
  54.                     }
  55.                     Console.Write("{0,4}", field[i, j]);
  56.                 }
  57.                 Console.WriteLine();
  58.             }
  59.         }
  60.         public void SwapArrayElements(ref string a, ref string b)
  61.         {
  62.             string temp = a;
  63.             a = b;
  64.             b = temp;
  65.         }
  66.         public void MoveRight()
  67.         {
  68.             if (current.Y < field.GetLength(1)-1)
  69.             {
  70.                 SwapArrayElements(ref field[current.X, current.Y], ref field[current.X, current.Y + 1]);
  71.                 current.Y++;
  72.             }
  73.         }
  74.         public void MoveLeft()
  75.         {
  76.             if (current.Y > 0)
  77.             {
  78.                 SwapArrayElements(ref field[current.X, current.Y], ref field[current.X, current.Y - 1]);
  79.                 current.Y--;
  80.             }
  81.         }
  82.         public void MoveUp()
  83.         {
  84.             if (current.X > 0)
  85.             {
  86.                 SwapArrayElements(ref field[current.X-1, current.Y], ref field[current.X, current.Y]);
  87.                 current.X--;
  88.             }
  89.         }
  90.         public void MoveDown()
  91.         {
  92.             if (current.X < field.GetLength(0)-1)
  93.             {
  94.                 SwapArrayElements(ref field[current.X + 1, current.Y], ref field[current.X, current.Y]);
  95.                 current.X++;
  96.             }
  97.         }
  98.     }
  99.  
  100.     class Program
  101.     {
  102.         static void Main(string[] args)
  103.         {
  104.             Field field = new Field();
  105.             field.GetField();
  106.             field.ShowField();
  107.  
  108.  
  109.             while (true)
  110.             {
  111.                 ConsoleKeyInfo keyinfo = Console.ReadKey();
  112.  
  113.                 switch (keyinfo.Key)
  114.                 {
  115.                     case ConsoleKey.UpArrow:
  116.  
  117.                         field.MoveUp();
  118.                         break;
  119.                     case ConsoleKey.DownArrow:
  120.                         field.MoveDown();
  121.  
  122.                         break;
  123.                     case ConsoleKey.LeftArrow:
  124.                         field.MoveLeft();
  125.  
  126.                         break;
  127.                     case ConsoleKey.RightArrow:
  128.                         field.MoveRight();
  129.                         break;
  130.                 }
  131.                 field.ShowField();
  132.             }
  133.         }
  134.     }
  135. }

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


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

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

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

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

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

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