#include "Horse.h"
#include "Position.h"
#include <utility>
#include <stdexcept>
#include <cmath>


Horse::Horse(Position pos) {
    position = pos;
}

std::pair<int, Position*> Horse::get_moves()
{
    Position* moves = new Position[8];
    int moveNum = 0;
    for(int i = -2; i < 3; i++) {
        for(int j = -2; j < 3; j++) {
            if(std::abs(i) == std::abs(j) or i == 0 or j == 0) continue;
            Position p;
            try {
                p = Position((char)(position.posSym+i), (char)(position.posNum+j));
            }
            catch (const std::invalid_argument) {
                p = Position();
            }
            moves[moveNum] = p;
            moveNum++;
        }
    }
    return std::pair<int, Position*>(8, moves);
};