123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- #include "King.h"
- #include "Position.h"
- #include <utility>
- #include <stdexcept>
- #include <iostream>
- King::King(Position pos, char c) {
- position = pos;
- color = c;
- }
- Figure* King::copy() {
- static King k(position, color);
- Figure* f = &k;
- return f;
- }
- vector<Position> King::get_moves()
- {
- vector<Position> moves;
- for(int i = -1; i < 2; i++) {
- for(int j = -1; j < 2; j++) {
- Position p;
- if (position.posSym+i == position.posSym and position.posNum+j == position.posNum)
- continue;
- // Position выдаст ошибку если указать невозможную позицию
- try {
- p = Position((char)(position.posSym+i), (char)(position.posNum+j));
- }
- catch (const std::invalid_argument) {
- continue;
- }
- moves.push_back(p);
- }
- }
- return moves;
- }
- const char* King::print()
- {
- const char* me;
- if (color == 'B')
- me = "♚";
- else
- me = "♔";
- return me;
- }
|