Advertisement
Guest User

Untitled

a guest
Dec 10th, 2016
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.15 KB | None | 0 0
  1. #include "stdafx.h"
  2. #include <iostream>
  3. #include <vector>
  4. #include <Windows.h>
  5. using namespace std;
  6.  
  7. int arr[9][9];
  8. int xod = 2;
  9. void view()
  10. {
  11. Sleep(700);
  12. cout « " " « xod « " XOD \n";
  13. for (int i = 8; i > 0; i--)
  14. {
  15. cout « " ";
  16. for (int j = 1; j < 9; j++)
  17. {
  18. cout « arr[j][i] « " ";
  19. }
  20. cout « "\n";
  21. cout « "\n";
  22. }
  23. cout « "\n";
  24. cout « "\n";
  25. cout « "\n";
  26. cout « "\n";
  27. cout « "\n";
  28. cout « "\n";
  29. cout « "\n";
  30.  
  31. }
  32.  
  33. struct Fig
  34. {
  35. int x;
  36. int y;
  37. int value;
  38. void push()
  39. {
  40. arr[x][y] = value;
  41. view();
  42. }
  43.  
  44. void n(int k)
  45. {
  46. arr[x][y] = 0;
  47. for (int i = 0; i < k; i++)
  48. if (y < 8)
  49. y++;
  50. arr[x][y] = value;
  51. view();
  52. }
  53. void ne(int k)
  54. {
  55. arr[x][y] = 0;
  56. for (int i = 0; i < k; i++)
  57. if (y < 8 && x < 8)
  58. {
  59. y++;
  60. x++;
  61. }
  62. arr[x][y] = value;
  63. view();
  64. }
  65. void e(int k)
  66. {
  67. arr[x][y] = 0;
  68. for (int i = 0; i < k; i++)
  69. if (x < 8)
  70. {
  71. x++;
  72. }
  73. arr[x][y] = value;
  74. view();
  75. }
  76. void es(int k)
  77. {
  78. arr[x][y] = 0;
  79. for (int i = 0; i < k; i++)
  80. if (y > 1 && x < 8)
  81. {
  82. y--;
  83. x++;
  84. }
  85. arr[x][y] = value;
  86. view();
  87. }
  88. void s(int k)
  89. {
  90. arr[x][y] = 0;
  91. for (int i = 0; i < k; i++)
  92. if (y > 1)
  93. {
  94. y--;
  95. }
  96. arr[x][y] = value;
  97. view();
  98. }
  99. void ws(int k)
  100. {
  101. arr[x][y] = 0;
  102. for (int i = 0; i < k; i++)
  103. if (y > 1 && x > 1)
  104. {
  105. y--;
  106. x--;
  107. }
  108. arr[x][y] = value;
  109. view();
  110. }
  111. void w(int k)
  112. {
  113. arr[x][y] = 0;
  114. for (int i = 0; i < k; i++)
  115. if (x > 1)
  116. {
  117. x--;
  118. }
  119. arr[x][y] = value;
  120. view();
  121. }
  122. void wn(int k)
  123. {
  124. arr[x][y] = 0;
  125. for (int i = 0; i < k; i++)
  126. if (y < 8 && x > 1)
  127. {
  128. y++;
  129. x--;
  130. }
  131. arr[x][y] = value;
  132. view();
  133. }
  134. };
  135. void mat(Fig& Kb, Fig& Qw)
  136. {
  137. Kb.es(1);
  138. Qw.s(1);
  139. xod++;
  140. Kb.w(1);
  141. Qw.n(2);
  142. xod++;
  143. Kb.ne(1);
  144. Qw.es(1);
  145. xod++;
  146. Kb.ws(1);
  147. Qw.e(2);
  148. xod++;
  149. Kb.wn(1);
  150. Qw.wn(1);
  151. xod++;
  152. Kb.wn(1);
  153. Qw.wn(1);
  154. xod++;
  155. Kb.s(1);
  156. Qw.s(1);
  157. xod++;
  158. Kb.s(1);
  159. Qw.ws(2);
  160. xod++;
  161. Kb.e(1);
  162. Qw.e(4);
  163. xod++;
  164. Kb.w(1);
  165. Qw.w(1);
  166. xod++;
  167. Kb.w(1);
  168. Qw.ws(1);
  169. cout « "MAT! in " « xod « " step";
  170. }
  171. int main()
  172. {
  173.  
  174. for (int i = 1; i < 9; i++)
  175. for (int j = 1; j < 9; j++)
  176. arr[i][j] = 0;
  177. Fig Kw{ 3,3,3 };
  178. Kw.push();
  179. Fig Kb{ 8,8,2 };
  180. Kb.push();
  181. Fig Qw;
  182. if (Kb.x != 8 && Kb.y != 8)
  183. Qw = { Kb.x - 2,Kb.y + 1,1 };
  184. else
  185. Qw = { 5,8,1 };
  186. Qw.push(); // Становление короля и ферзя
  187.  
  188. if (Kb.x == 8)
  189. {
  190. Kb.s(1);
  191. Qw.e(1);
  192. xod++;
  193. } // Становление фигур на нужные позиции
  194.  
  195. while (Kb.x != 8) // Так как ферзь за 2 хода сможет добраться до
  196. { // любой клетки мы используем эти 2 хода
  197. Kb.e(1);
  198. Qw.e(1);
  199. xod++;
  200. } bool b = true; // Гоним короля до левого края доски
  201. while (b)
  202. {
  203. Kb.ws(1);
  204. Qw.ws(1);
  205. xod++;
  206. if (Kb.x == 7 && Kb.y == 2)
  207. {
  208. mat(Kb, Qw);
  209. b = false;
  210. }
  211. else
  212. {
  213. Kb.e(1);
  214. Qw.e(1);
  215. xod++;
  216. }
  217. } // гоним короля до правого нижнего угла и затем прибавляем 11 ходов когда // Король становится на точку 7 2.
  218. system("pause");
  219. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement