Horse.cpp 761 B

12345678910111213141516171819202122232425262728293031
  1. #include "Horse.h"
  2. #include "Position.h"
  3. #include <utility>
  4. #include <stdexcept>
  5. #include <cmath>
  6. Horse::Horse(Position pos) {
  7. position = pos;
  8. }
  9. std::pair<int, Position*> Horse::get_moves()
  10. {
  11. Position* moves = new Position[8];
  12. int moveNum = 0;
  13. for(int i = -2; i < 3; i++) {
  14. for(int j = -2; j < 3; j++) {
  15. if(std::abs(i) == std::abs(j) or i == 0 or j == 0) continue;
  16. Position p;
  17. try {
  18. p = Position((char)(position.posSym+i), (char)(position.posNum+j));
  19. }
  20. catch (const std::invalid_argument) {
  21. p = Position();
  22. }
  23. moves[moveNum] = p;
  24. moveNum++;
  25. }
  26. }
  27. return std::pair<int, Position*>(8, moves);
  28. };