Advertisement
social1986

Untitled

Dec 8th, 2017
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.94 KB | None | 0 0
  1. using System;
  2.  
  3. public class Program
  4. {
  5. public static void Main()
  6. {
  7. var matrix = new string[8][];
  8.  
  9. for (int row = 0; row < 8; row++)
  10. {
  11. var currentRow = Console.ReadLine()
  12. .Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
  13. matrix[row] = currentRow;
  14. }
  15.  
  16. while (true)
  17. {
  18. var inputArgs = ReadComands()
  19. .Split('-');
  20.  
  21. if (inputArgs[0] == "END")
  22. {
  23. break;
  24. }
  25.  
  26. var piece = inputArgs[0];
  27. var rowColNow = inputArgs[1];
  28. var rowNow = (int)char.GetNumericValue(rowColNow[0]);
  29. var colNow = (int)char.GetNumericValue(rowColNow[1]);
  30. var rowColToBeMoved = inputArgs[2];
  31. var rowToBeMoved = (int)char.GetNumericValue(rowColToBeMoved[0]);
  32. var colToBeMoved = (int)char.GetNumericValue(rowColToBeMoved[1]);
  33.  
  34. if (IsNotOnBoard(matrix, piece, rowNow, colNow))
  35. {
  36. Console.WriteLine("There is no such a piece!");
  37. continue;
  38. }
  39. if (IsMoveValid(piece, rowNow, colNow, rowToBeMoved, colToBeMoved))
  40. {
  41. if (IsMoveOutOfBoard(rowToBeMoved, colToBeMoved))
  42. {
  43. Console.WriteLine("Move go out of board!");
  44. continue;
  45. }
  46. matrix[rowNow][colNow] = "x";
  47. matrix[rowToBeMoved][colToBeMoved] = piece;
  48. }
  49. else
  50. {
  51. Console.WriteLine("Invalid move!");
  52. }
  53. }
  54. }
  55.  
  56. public static string ReadComands()
  57. {
  58. var inputArgs = Console.ReadLine();
  59. if (inputArgs == "END")
  60. {
  61. return inputArgs;
  62. }
  63. var piece = inputArgs[0];
  64. var rowAndCow = inputArgs.Substring(1)
  65. .Split(new char[] { '-' }, StringSplitOptions.RemoveEmptyEntries);
  66. var row = rowAndCow[0];
  67. var col = rowAndCow[1];
  68. var result = piece + "-" + row + "-" + col;
  69. return result;
  70. }
  71.  
  72. public static bool IsNotOnBoard(string[][] matrix, string piece, int row, int col)
  73. {
  74. if (matrix[row][col] == piece)
  75. {
  76. return false;
  77. }
  78. return true;
  79. }
  80.  
  81. public static bool IsMoveValid(string piece, int rowNow, int colNow, int rowToBeMoved, int colToBeMoved)
  82. {
  83. switch (piece)
  84. {
  85. case "K":
  86. if (Math.Abs(rowNow - rowToBeMoved) > 1 || Math.Abs(colNow - colToBeMoved) > 1)
  87. {
  88. return false;
  89. }
  90. return true;
  91. case "R":
  92. if (rowNow != rowToBeMoved && colNow != colToBeMoved)
  93. {
  94. return false;
  95. }
  96. return true;
  97. case "P":
  98. if (colNow == colToBeMoved && rowNow - rowToBeMoved == 1)
  99. {
  100. return true;
  101. }
  102. return false;
  103. case "Q":
  104. if (rowNow == rowToBeMoved || colNow == colToBeMoved)
  105. {
  106. return true;
  107. }
  108. else if (Math.Abs(rowToBeMoved - rowNow) == Math.Abs(colToBeMoved - colNow))
  109. {
  110. return true;
  111. }
  112. return false;
  113. case "B":
  114. if (Math.Abs(rowToBeMoved - rowNow) == Math.Abs(colToBeMoved - colNow))
  115. {
  116. return true;
  117. }
  118. return false;
  119. }
  120. return true;
  121. }
  122.  
  123. public static bool IsMoveOutOfBoard(int rowToBeMoved, int colToBeMoved)
  124. {
  125. if (rowToBeMoved > 7 || colToBeMoved > 7)
  126. {
  127. return true;
  128. }
  129. return false;
  130. }
  131. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement