Advertisement
Caneq

lb1.4.8backup

Oct 29th, 2018
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.12 KB | None | 0 0
  1. // lb1.4.8.cpp: определяет точку входа для консольного приложения.
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include <iostream>
  6. #include <cmath>
  7. using namespace std;
  8.  
  9. void printСhessField(unsigned short xf = 0, unsigned short yf = 0, unsigned short xk = 0, unsigned short yk = 0) {
  10.     cout << "0 1 2 3 4 5 6 7 8"<< endl; // нумерация горизонтали
  11.     for (int y = 1; y <= 8; y++) {
  12.         cout << y << " "; // нумерация вертикали
  13.         for (int x = 1; x <= 8; x++) {
  14.             if (x == xf && y == yf) { //проверка на ферзя
  15.                 cout << "F ";
  16.             }
  17.             else {
  18.                 if (x == xk && y == yk) {//проверка на коня
  19.                     cout << "K ";
  20.                 }
  21.                 else cout << "+ ";
  22.             }          
  23.         }
  24.         cout << endl;
  25.     }
  26. }
  27. void checkDanger(unsigned short xf, unsigned short yf, unsigned short xk, unsigned short yk) {
  28.     unsigned short squareD = pow(xf - xk, 2) + pow(yf - yk, 2);
  29.     if (squareD == 5) { // по теореме пифагора вычисляем расстояние d между фигурами, если d^2=1^2+2^2, то конь угрожает ферзю
  30.         cout << "Конь угрожает ферзю" << endl;
  31.     }
  32.     else {
  33.         if (squareD == 2 || squareD == 10 ||squareD == 16 ||squareD == 20) {
  34.             cout << "Конь может сделать ход, чтобы начать угрожать ферзю" << endl;
  35.             //за два хода конь может переместиться на √2 √10 √16 √20
  36.         }
  37.     }
  38.     if (xf == xk || yf == yk || abs(xf - xf) == abs (yf - yk)) {
  39.         //фигуры находятся на одной прямой (xf == xk || yf == yk) или на одной диагонали abs(xf - xf) == abs (yf - yk)
  40.         cout << "Ферзь угрожает коню" << endl;
  41.     }
  42.     else {
  43.         //при наличии только 2 фигур на поле, ферзь в любом случае может сделать ход, чтобы начать угрожать коню
  44.         cout << "Ферзь может сделать ход, чтобы начать угрожать коню" << endl;
  45.     }
  46.  
  47.  
  48.     /*switch (squareD){
  49.     case 5: cout << "Конь угрожает ферзю" << endl; break;
  50.     case 2:
  51.     case 10:
  52.     case 16:
  53.     case 20: cout << "Конь может сделать ход, чтобы начать угрожать ферзю" << endl; break;
  54.     default : break;
  55.     }
  56.     switch (squareD){
  57.     case 8:
  58.     case 18:
  59.     case 32:
  60.     case 50:
  61.     case 72:
  62.     case 98: {
  63.         cout << "Ферзь угрожает коню" << endl;
  64.         break;
  65.     }
  66.     default:
  67.         cout << "Ферзь может сделать ход, чтобы начать угрожать коню" << endl;
  68.         break;
  69.     }*/
  70. }
  71. int main()
  72. {
  73.     setlocale(LC_ALL, "rus");
  74.     unsigned short k, l, m, n;
  75.     printСhessField();
  76.     cout << "Введите координаты ферзя и коня" << endl;
  77.     cin >> k >> l >> m >> n;
  78.     if ((k == m && l == m) || k < 1 || l < 1 || m < 1 || n < 1 || k > 8 || l > 8 || m > 8 || n > 8) {
  79.         cout << "Координаты некорректны" << endl;
  80.         exit(0);
  81.     }
  82.     system("cls");
  83.     printСhessField(k, l, m, n);
  84.     checkDanger(k, l, m, n);
  85.     return 0;
  86. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement