#include "Rook.h" #include "Position.h" #include #include #include Rook::Rook(Position pos, char c) { if (c != 'B' and c != 'W') throw std::invalid_argument("Impossible color of figure!"); position = pos; color = c; } Figure* Rook::copy() { static Rook r(position, color); Figure* f = &r; return f; } vector Rook::get_moves() { vector moves; int moveNum = 0; for (int i = 1; i < 9; i++) { Position p; Position p2; try { if ('0'+i != position.posNum) p2 = Position(position.posSym, (char)('0'+i)); if ('0'+i+16 != position.posSym) p = Position((char)('0'+i+16), position.posNum); } catch (const std::invalid_argument) { continue; } if ('0'+i+16 != position.posSym) { moves.push_back(p); } if ('0'+i != position.posNum) { moves.push_back(p2); } } return moves; } const char* Rook::print() { const char* me; if (color == 'B') me = "♜"; else me = "♖"; return me; }