#include "Bishop.h" #include "Position.h" #include #include Bishop::Bishop(Position pos) { position = pos; } std::pair Bishop::get_moves() { // У ладьи всегда 14 ходов, если нет преград Position* moves = new Position[14]; int moveNum = 0; for(int i = 1; i < 8; i++) { for(int j = -1; j < 2; j+=2) { for(int k = -1; k < 2; k+=2) { // Не добавляем невозможные ходы if (not (position.posSym + i*j <= 'H' and position.posNum + i*k <= '8' and position.posSym + i*j >= 'A' and position.posNum + i*k >= '1')) continue; // Position создаст ошибку, если создать невозможный ход Position p; try { p = Position((char)(position.posSym+i*j), (char)(position.posNum+i*k)); } catch (const std::invalid_argument) { p = Position(); } moves[moveNum] = p; moveNum++; } } } return std::pair(14, moves); };