Создание и использование массивов. Создать консольное приложение - C#

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

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

Смоделировать следующую игру. На шахматной доске выделить поля, находящиеся под угрозой заданной шахматной фигуры. Фигуру (ферзя или коня) выбрать в режиме диалога. Ввести два натуральных числа: N и M (1<N<8, 1<M<8) – номера позиций по вертикали и по горизонтали, определяющие местоположения фигуры на шахматной доске. Шахматную доску представить символьной матрицей 8*8. Соответствующий ферзю (коню) элемент матрицы обозначить символом F(K). Поля, находящиеся под угрозой ферзя (коня) обозначить символом *, а остальные поля – символом 0. Далее то, что у меня вышло, но работает оно не так, как нужно. Помогите, пожалуйста исправить.
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. namespace ConsoleApplication1
  6. {
  7. class Program
  8. {
  9. static string[,] Ferz(int x, int y)
  10. {
  11. string[,] array = new string[8, 8];
  12. array[x, y] = "F";
  13. int i, j, lin1, lin2;
  14. for (i = 0; i < 8; i++)
  15. {
  16. for (j = 0; j < 8; j++)
  17. {
  18. lin1 = Math.Abs(y - i);
  19. lin2 = Math.Abs(x - j);
  20. if ((i == y) || (i == x) || (lin1 == lin2)) array[i, j] = "*";
  21. else array[i, j] = "0";
  22. if ((i == (x - 1)) && (j == (y - 1))) array[i, j] = "F";
  23. }
  24. }
  25. return array;
  26. }
  27. static string[,] Hourse(int x, int y)
  28. {
  29. string[,] array = new string[8, 8];
  30. //array[x, y] = "K";
  31. int i, j, lin1, lin2;
  32. for (i = 0; i < 8; i++)
  33. {
  34. //if ((i == x)&& (j == y)) array[i, j] = "K"; }
  35. // else{
  36. for (j = 0; j < 8; j++)
  37. {
  38. lin1 = Math.Abs(y - i);
  39. lin2 = Math.Abs(x - j);
  40. if (((lin1 == 1) && (lin2 == 2)) || ((lin1 == 2) && (lin2 == 1))) array[i, j] = "*";
  41. else array[i, j] = "0";
  42. if ((i == (x - 1)) && (j == (y - 1))) array[i, j] = "K";
  43. }
  44. }
  45. return array;
  46. }
  47. static string ChoseFigure()
  48. {
  49. Console.WriteLine("Выберите фигуру, Ферзь (Enter F) или Конь (Enter K)?");
  50. string figure;
  51. figure = Console.ReadLine();
  52. if (figure == "F") Console.WriteLine("Ваша фигура ферзь ");
  53. if (figure == "K") Console.WriteLine("Ваша фигура конь ");
  54. if (!((figure == "K") || (figure == "F")))
  55. do
  56. {
  57. Console.WriteLine("Enter F or K ");
  58. figure = Console.ReadLine();
  59. }
  60. while ((!(figure == "F") || (figure == "K")));
  61. return figure;
  62. }
  63. static int ChoseLocation1()
  64. {
  65. Console.WriteLine("выберите положение фигуры по вертикали от 1 до 8");
  66. string i;
  67. i = Console.ReadLine();
  68. int x = Convert.ToInt32(i);
  69. do
  70. {
  71. if ((x != 1) && (x != 2) && (x != 3) && (x != 4) && (x != 5) && (x != 6) && (x != 7) && (x != 8))
  72. {
  73. Console.WriteLine("Введите 1 или 2 или 3 или 4 или 5 или 6 или 7 или 8! ");
  74. i = Console.ReadLine();
  75. x = Convert.ToInt32(i);
  76. }
  77. }
  78. while ((x != 1) && (x != 2) && (x != 3) && (x != 4) && (x != 5) && (x != 6) && (x != 7) && (x != 8));
  79. return x;
  80. }
  81. static int ChoseLocation2()
  82. {
  83. Console.WriteLine("выберите положение фигуры по горизонтали от 1 до 8");
  84. string j = Console.ReadLine();
  85. int y = Convert.ToInt32(j);
  86. do
  87. {
  88. if ((y != 1) && (y != 2) && (y != 3) && (y != 4) && (y != 5) && (y != 6) && (y != 7) && (y != 8))
  89. {
  90. Console.WriteLine("Enter 1 или 2 или 3 или 4 или 5 или 6 или 7 или 8! ");
  91. j = Console.ReadLine();
  92. y = Convert.ToInt32(j);
  93. }
  94. }
  95. while ((y != 1) && (y != 2) && (y != 3) && (y != 4) && (y != 5) && (y != 6) && (y != 7) && (y != 8));
  96. return y;
  97. }
  98. static void Print(int x, int y, string[,] array)
  99. {
  100. for (int i = 0; i < 8; i++)
  101. {
  102. for (int j = 0; j < 8; j++)
  103. Console.Write(array[i, j]);
  104. Console.WriteLine();
  105. }
  106. Console.WriteLine();
  107. }
  108. static void Main(string[] args)
  109. {
  110. string figure = ChoseFigure();
  111. int x = ChoseLocation1();
  112. int y = ChoseLocation2();
  113. string[,] desk = new string[8, 8];
  114. if (figure == "F") { desk = Hourse(x, y); }
  115. if (figure == "K") { desk = Ferz(x, y); }
  116. Print(x, y, desk);
  117. Console.ReadKey();
  118. }
  119. }
  120. }

Решение задачи: «Создание и использование массивов. Создать консольное приложение»

textual
Листинг программы
  1.  
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Text;
  6.  
  7.  
  8. namespace chess
  9. {
  10.     class Program
  11.     {
  12.         struct Point {
  13.            public int x;
  14.            public int y;
  15.            public Point(int _x, int _y) {
  16.  
  17.                 x = _x;
  18.                 y = _y;
  19.            
  20.             }
  21.         }
  22.  
  23.  
  24.         static List<Point> FerzAttackedField(Point _ferzcoords) {
  25.  
  26.  
  27.             if (!((0 <= _ferzcoords.x && _ferzcoords.x <= 7) && (0 <= _ferzcoords.y && _ferzcoords.y <= 7))) return null;
  28.  
  29.             List<Point> points = new List<Point>();
  30.  
  31.            
  32.             for (int i = 1;i < 8;i++){
  33.  
  34.             points.Add(new Point(_ferzcoords.x + i, _ferzcoords.y + i)); //диагональ право вверх
  35.             points.Add(new Point(_ferzcoords.x - i, _ferzcoords.y - i)); //диагональ лево вниз
  36.  
  37.             points.Add(new Point(_ferzcoords.x + i, _ferzcoords.y - i)); //диагональ право вниз
  38.             points.Add(new Point(_ferzcoords.x - i, _ferzcoords.y + i)); //диагональ лево вверх
  39.  
  40.             points.Add(new Point(_ferzcoords.x + i, _ferzcoords.y)); //горизонталь право
  41.             points.Add(new Point(_ferzcoords.x - i, _ferzcoords.y)); //горизонталь лево
  42.  
  43.             points.Add(new Point(_ferzcoords.x, _ferzcoords.y + i)); //вертикаль вверх
  44.             points.Add(new Point(_ferzcoords.x, _ferzcoords.y - i)); //вертикаль вниз
  45.             }
  46.  
  47.             return points.Where(p => (0 <= p.x && p.x <= 7) && (0 <= p.y && p.y <= 7)).ToList(); //отметаем координаты вышедшие за пределы доски
  48.        
  49.        
  50.         }
  51.  
  52.  
  53.         static List<Point> KnightAttackedField(Point _knightcoords)
  54.         {
  55.  
  56.  
  57.             if (!((0 < _knightcoords.x && _knightcoords.x < 9) && (0 < _knightcoords.y && _knightcoords.y < 9))) return null;
  58.  
  59.             List<Point> points = new List<Point>();
  60.  
  61.  
  62.            
  63.  
  64.             points.Add(new Point(_knightcoords.x + 1, _knightcoords.y + 2)); //диагональ право вверх
  65.             points.Add(new Point(_knightcoords.x + 2, _knightcoords.y + 1)); //
  66.  
  67.             points.Add(new Point(_knightcoords.x - 1, _knightcoords.y - 2)); //диагональ лево вниз
  68.             points.Add(new Point(_knightcoords.x - 2, _knightcoords.y - 1)); //
  69.  
  70.             points.Add(new Point(_knightcoords.x + 1, _knightcoords.y - 2)); //диагональ право вниз
  71.             points.Add(new Point(_knightcoords.x + 2, _knightcoords.y - 1)); //
  72.  
  73.             points.Add(new Point(_knightcoords.x - 1, _knightcoords.y + 2)); //диагональ лево вверх
  74.             points.Add(new Point(_knightcoords.x - 2, _knightcoords.y + 1)); //
  75.            
  76.  
  77.             return points.Where(p => (0 <= p.x && p.x <= 7) && (0 <= p.y && p.y <= 7)).ToList(); //отметаем координаты вышедшие за пределы доски
  78.  
  79.  
  80.         }
  81.  
  82.  
  83.         static void Main(string[] args)
  84.         {
  85.  
  86.             foreach (Point p in FerzAttackedField(new Point(5, 5))) {
  87.             Console.WriteLine("{0} {1}",p.x,p.y);          
  88.             }
  89.  
  90.             Console.ReadKey();
  91.             Console.Clear();
  92.  
  93.             foreach (Point p in KnightAttackedField(new Point(5, 5)))
  94.             {
  95.                 Console.WriteLine("{0} {1}", p.x, p.y);
  96.             }
  97.             Console.ReadKey();
  98.  
  99.         }
  100.     }
  101. }

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


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

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

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

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

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

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