diff options
1 files changed, 26 insertions, 0 deletions
| -rw-r--r-- | Sem. 15/Chess/Figures/Knight/Knight.cpp | 26 |
diff --git a/Sem. 15/Chess/Figures/Knight/Knight.cpp b/Sem. 15/Chess/Figures/Knight/Knight.cpp new file mode 100644 index 0000000..e6db119 --- /dev/null +++ b/Sem. 15/Chess/Figures/Knight/Knight.cpp @@ -0,0 +1,26 @@ +#include "Knight.h" +#include <cmath> + +Knight::Knight(bool isWhite) : Figure(isWhite) +{} +bool Knight::canBeMoved(size_t currentX, size_t currentY, size_t destX, size_t destY) const +{ + int xMovеment[] = { 1, 1, -1, -1, 2, -2, 2, -2 }; + int yMovеment[] = { 2, -2, 2, -2, 1, 1, -1, -1 }; + + for (int i = 0; i < 8; i++) + { + if (currentX + xMovеment[i] == destX && + currentY + yMovеment[i] == destY) + return true; + } + return false; +} + +void Knight::print() const +{ + if (getIsWhite()) + std::cout << 'K'; + else + std::cout << 'k'; +}
\ No newline at end of file |
