123456789101112131415161718192021222324252627282930313233343536 |
- #include "Bishop.h"
- #include "Position.h"
- #include <utility>
- #include <stdexcept>
- Bishop::Bishop(Position pos) {
- position = pos;
- }
- std::pair<int, Position*> 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<int, Position*>(14, moves);
- };
|