Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "stdafx.h"
- #include <iostream>
- #include <vector>
- #include <Windows.h>
- using namespace std;
- int arr[9][9];
- int xod = 2;
- void view()
- {
- Sleep(700);
- cout « " " « xod « " XOD \n";
- for (int i = 8; i > 0; i--)
- {
- cout « " ";
- for (int j = 1; j < 9; j++)
- {
- cout « arr[j][i] « " ";
- }
- cout « "\n";
- cout « "\n";
- }
- cout « "\n";
- cout « "\n";
- cout « "\n";
- cout « "\n";
- cout « "\n";
- cout « "\n";
- cout « "\n";
- }
- struct Fig
- {
- int x;
- int y;
- int value;
- void push()
- {
- arr[x][y] = value;
- view();
- }
- void n(int k)
- {
- arr[x][y] = 0;
- for (int i = 0; i < k; i++)
- if (y < 8)
- y++;
- arr[x][y] = value;
- view();
- }
- void ne(int k)
- {
- arr[x][y] = 0;
- for (int i = 0; i < k; i++)
- if (y < 8 && x < 8)
- {
- y++;
- x++;
- }
- arr[x][y] = value;
- view();
- }
- void e(int k)
- {
- arr[x][y] = 0;
- for (int i = 0; i < k; i++)
- if (x < 8)
- {
- x++;
- }
- arr[x][y] = value;
- view();
- }
- void es(int k)
- {
- arr[x][y] = 0;
- for (int i = 0; i < k; i++)
- if (y > 1 && x < 8)
- {
- y--;
- x++;
- }
- arr[x][y] = value;
- view();
- }
- void s(int k)
- {
- arr[x][y] = 0;
- for (int i = 0; i < k; i++)
- if (y > 1)
- {
- y--;
- }
- arr[x][y] = value;
- view();
- }
- void ws(int k)
- {
- arr[x][y] = 0;
- for (int i = 0; i < k; i++)
- if (y > 1 && x > 1)
- {
- y--;
- x--;
- }
- arr[x][y] = value;
- view();
- }
- void w(int k)
- {
- arr[x][y] = 0;
- for (int i = 0; i < k; i++)
- if (x > 1)
- {
- x--;
- }
- arr[x][y] = value;
- view();
- }
- void wn(int k)
- {
- arr[x][y] = 0;
- for (int i = 0; i < k; i++)
- if (y < 8 && x > 1)
- {
- y++;
- x--;
- }
- arr[x][y] = value;
- view();
- }
- };
- void mat(Fig& Kb, Fig& Qw)
- {
- Kb.es(1);
- Qw.s(1);
- xod++;
- Kb.w(1);
- Qw.n(2);
- xod++;
- Kb.ne(1);
- Qw.es(1);
- xod++;
- Kb.ws(1);
- Qw.e(2);
- xod++;
- Kb.wn(1);
- Qw.wn(1);
- xod++;
- Kb.wn(1);
- Qw.wn(1);
- xod++;
- Kb.s(1);
- Qw.s(1);
- xod++;
- Kb.s(1);
- Qw.ws(2);
- xod++;
- Kb.e(1);
- Qw.e(4);
- xod++;
- Kb.w(1);
- Qw.w(1);
- xod++;
- Kb.w(1);
- Qw.ws(1);
- cout « "MAT! in " « xod « " step";
- }
- int main()
- {
- for (int i = 1; i < 9; i++)
- for (int j = 1; j < 9; j++)
- arr[i][j] = 0;
- Fig Kw{ 3,3,3 };
- Kw.push();
- Fig Kb{ 8,8,2 };
- Kb.push();
- Fig Qw;
- if (Kb.x != 8 && Kb.y != 8)
- Qw = { Kb.x - 2,Kb.y + 1,1 };
- else
- Qw = { 5,8,1 };
- Qw.push(); // Становление короля и ферзя
- if (Kb.x == 8)
- {
- Kb.s(1);
- Qw.e(1);
- xod++;
- } // Становление фигур на нужные позиции
- while (Kb.x != 8) // Так как ферзь за 2 хода сможет добраться до
- { // любой клетки мы используем эти 2 хода
- Kb.e(1);
- Qw.e(1);
- xod++;
- } bool b = true; // Гоним короля до левого края доски
- while (b)
- {
- Kb.ws(1);
- Qw.ws(1);
- xod++;
- if (Kb.x == 7 && Kb.y == 2)
- {
- mat(Kb, Qw);
- b = false;
- }
- else
- {
- Kb.e(1);
- Qw.e(1);
- xod++;
- }
- } // гоним короля до правого нижнего угла и затем прибавляем 11 ходов когда // Король становится на точку 7 2.
- system("pause");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement