Advertisement
VickSuna

Untitled

Oct 28th, 2021
163
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.95 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3.  
  4. namespace PawnWars
  5. {
  6. class Program
  7. {
  8. static void Main(string[] args)
  9. {
  10. char[][] chessMatrix = new char[8][]; // матрица само за печатане :(
  11.  
  12. for (int row = 0; row < chessMatrix.Length; row++)
  13. {
  14. char[] rawData = new char[8] {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', };
  15.  
  16. chessMatrix[row] = rawData;
  17.  
  18. for (int col = 0; col < chessMatrix[row].Length; col++)
  19. {
  20. chessMatrix[row][col] = rawData[col];
  21. }
  22. }
  23.  
  24. char[][] matrix = new char[8][]; // правим си празна матрица 8Х8
  25.  
  26. // променливи за бялата пешка
  27. int whiteRow = -1;
  28. int whiteCol = -1;
  29.  
  30. // променливи за черната пешка
  31. int blackRow = -1;
  32. int blackCol = -1;
  33.  
  34. // приемаме данните за матрицата
  35. for (int row = 0; row < matrix.Length; row++)
  36. {
  37. char[] rawData = Console.ReadLine().ToCharArray();
  38.  
  39. matrix[row] = rawData;
  40.  
  41. for (int col = 0; col < matrix[row].Length; col++) // взимаме положението на пешките
  42. {
  43. if (matrix[row][col] == 'w') // бяла пешка
  44. {
  45. whiteRow = row;
  46. whiteCol = col;
  47. }
  48.  
  49. if (matrix[row][col] == 'b') // черна пешка
  50. {
  51. blackRow = row;
  52. blackCol = col;
  53. }
  54. }
  55. }
  56.  
  57. while (true) // докато не завърши играта
  58. {
  59. // МЕСТИМ БЯЛА ПЕШКА
  60. matrix[whiteRow][whiteCol] = '-'; // маркираме текущото местоположение с -
  61.  
  62. if (whiteRow - 1 == 0) //проверяваме дали не сме стигнали края
  63. {
  64. Console.WriteLine($"Game over! White pawn is promoted to a queen at {chessMatrix[whiteRow][whiteCol]}8."); // ако сме стигнали края сме спечелили
  65. return;
  66. }
  67.  
  68. // проверяваме дали не може да вземем черна пешка
  69. if (whiteCol == 0) // ако сме на вертикал "a" проверяваме само отдясно, за да не излезнем от матрицата
  70. {
  71. if (matrix[whiteRow - 1][whiteCol + 1] == 'b') // ако е черна пешка отгоре отдясно сме спечелили
  72. {
  73. Console.WriteLine($"Game over! White capture on {chessMatrix[blackRow][blackCol]}{matrix[blackCol].Length - blackRow}.");
  74. return;
  75. }
  76. }
  77. else if (whiteCol == 7) // ако сме на вертикал "h" проверяваме само отляво, за да не излезнем от матрицата
  78. {
  79. if (matrix[whiteRow - 1][whiteCol - 1] == 'b') // ако е черна пешка отгоре отляво сме спечелили
  80. {
  81. Console.WriteLine($"Game over! White capture on {chessMatrix[blackRow][blackCol]}{matrix[blackCol].Length - blackRow}.");
  82. return;
  83. }
  84. }
  85. else // не сме на "a" или "h" проверяваме от двете страни
  86. {
  87. if (matrix[whiteRow - 1][whiteCol - 1] == 'b' || matrix[whiteRow - 1][whiteCol + 1] == 'b') // ако е черна пешка отгоре ляво/дясно сме спечелили
  88. {
  89. Console.WriteLine($"Game over! White capture on {chessMatrix[blackRow][blackCol]}{matrix[blackCol].Length - blackRow}.");
  90. return;
  91. }
  92. }
  93.  
  94. whiteRow--; //придвижваме бялата пешка нагоре
  95.  
  96. matrix[whiteRow][whiteCol] = 'w'; // маркираме новото местоположение
  97.  
  98. // -------------------------------------------------------------------------------------------------------------------//
  99.  
  100. // МЕСТИМ ЧЕРНА ПЕШКА
  101. matrix[blackRow][blackCol] = '-'; // маркираме текущото местоположение с -
  102.  
  103. if (blackRow + 1 == 8) //проверяваме дали не сме стигнали края
  104. {
  105. Console.WriteLine($"Game over! Black pawn is promoted to a queen at {chessMatrix[blackRow][blackCol]}1."); // ако сме стигнали края сме спечелили
  106. return;
  107. }
  108.  
  109. // проверяваме дали не може да вземем бяла пешка
  110. if (blackCol == 0) // ако сме на вертикал "a" проверяваме само отдясно, за да не излезнем от матрицата
  111. {
  112. if (matrix[blackRow + 1][blackCol + 1] == 'w') // ако е бяла пешка по диагонал надолу сме спечелили
  113. {
  114. Console.WriteLine($"Game over! Black capture on {chessMatrix[whiteRow][whiteCol]}{matrix[whiteCol].Length - whiteRow}."); // печатаме точните полета
  115. return;
  116. }
  117. }
  118. else if (blackCol == 7) // ако сме на вертикал "h" проверяваме само отляво, за да не излезнем от матрицата
  119. {
  120. if (matrix[blackRow + 1][blackCol - 1] == 'w') // ако е бяла пешка по диагонал надолу сме спечелили
  121. {
  122. Console.WriteLine($"Game over! Black capture on {chessMatrix[whiteRow][whiteCol]}{matrix[whiteCol].Length - whiteRow}."); // печатаме точните полета
  123. return;
  124. }
  125. }
  126. else // не сме на "a" или "h" проверяваме от двете страни
  127. {
  128. if (matrix[blackRow + 1][blackCol + 1] == 'w' || matrix[blackRow + 1][blackCol - 1] == 'w') // ако е бяла пешка отдолу ляво/дясно сме спечелили
  129. {
  130. Console.WriteLine($"Game over! Black capture on {chessMatrix[whiteRow][whiteCol]}{matrix[whiteCol].Length - whiteRow}."); // печатаме точните полета
  131. return;
  132. }
  133. }
  134.  
  135.  
  136. blackRow++; //придвижваме черната пешка надолу
  137.  
  138. matrix[blackRow][blackCol] = 'b'; // маркираме новото местоположение
  139.  
  140. //Console.WriteLine();
  141. //Print(matrix);
  142. }
  143.  
  144. }
  145.  
  146. private static void Print(char[][] matrix)
  147. {
  148. for (int row = 0; row < matrix.Length; row++)
  149. {
  150. for (int col = 0; col < matrix[row].Length; col++)
  151. {
  152. Console.Write(matrix[row][col]);
  153. }
  154.  
  155. Console.WriteLine();
  156. }
  157. }
  158.  
  159. }
  160. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement