Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // lb1.4.8.cpp: определяет точку входа для консольного приложения.
- //
- #include "stdafx.h"
- #include <iostream>
- #include <cmath>
- using namespace std;
- void printСhessField(unsigned short xf = 0, unsigned short yf = 0, unsigned short xk = 0, unsigned short yk = 0) {
- cout << "0 1 2 3 4 5 6 7 8"<< endl; // нумерация горизонтали
- for (int y = 1; y <= 8; y++) {
- cout << y << " "; // нумерация вертикали
- for (int x = 1; x <= 8; x++) {
- if (x == xf && y == yf) { //проверка на ферзя
- cout << "F ";
- }
- else {
- if (x == xk && y == yk) {//проверка на коня
- cout << "K ";
- }
- else cout << "+ ";
- }
- }
- cout << endl;
- }
- }
- void checkDanger(unsigned short xf, unsigned short yf, unsigned short xk, unsigned short yk) {
- unsigned short squareD = pow(xf - xk, 2) + pow(yf - yk, 2);
- if (squareD == 5) { // по теореме пифагора вычисляем расстояние d между фигурами, если d^2=1^2+2^2, то конь угрожает ферзю
- cout << "Конь угрожает ферзю" << endl;
- }
- else {
- if (squareD == 2 || squareD == 10 ||squareD == 16 ||squareD == 20) {
- cout << "Конь может сделать ход, чтобы начать угрожать ферзю" << endl;
- //за два хода конь может переместиться на √2 √10 √16 √20
- }
- }
- if (xf == xk || yf == yk || abs(xf - xf) == abs (yf - yk)) {
- //фигуры находятся на одной прямой (xf == xk || yf == yk) или на одной диагонали abs(xf - xf) == abs (yf - yk)
- cout << "Ферзь угрожает коню" << endl;
- }
- else {
- //при наличии только 2 фигур на поле, ферзь в любом случае может сделать ход, чтобы начать угрожать коню
- cout << "Ферзь может сделать ход, чтобы начать угрожать коню" << endl;
- }
- /*switch (squareD){
- case 5: cout << "Конь угрожает ферзю" << endl; break;
- case 2:
- case 10:
- case 16:
- case 20: cout << "Конь может сделать ход, чтобы начать угрожать ферзю" << endl; break;
- default : break;
- }
- switch (squareD){
- case 8:
- case 18:
- case 32:
- case 50:
- case 72:
- case 98: {
- cout << "Ферзь угрожает коню" << endl;
- break;
- }
- default:
- cout << "Ферзь может сделать ход, чтобы начать угрожать коню" << endl;
- break;
- }*/
- }
- int main()
- {
- setlocale(LC_ALL, "rus");
- unsigned short k, l, m, n;
- printСhessField();
- cout << "Введите координаты ферзя и коня" << endl;
- cin >> k >> l >> m >> n;
- if ((k == m && l == m) || k < 1 || l < 1 || m < 1 || n < 1 || k > 8 || l > 8 || m > 8 || n > 8) {
- cout << "Координаты некорректны" << endl;
- exit(0);
- }
- system("cls");
- printСhessField(k, l, m, n);
- checkDanger(k, l, m, n);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement