Rook.cpp 925 B

12345678910111213141516171819202122232425262728293031323334353637
  1. #include "Rook.h"
  2. #include "Position.h"
  3. #include <utility>
  4. #include <stdexcept>
  5. #include <iostream>
  6. Rook::Rook(Position pos) {
  7. position = pos;
  8. }
  9. std::pair<int, Position*> Rook::get_moves()
  10. {
  11. Position* moves = new Position[14];
  12. int moveNum = 0;
  13. for (int i = 1; i < 9; i++) {
  14. Position p;
  15. Position p2;
  16. try {
  17. if ('0'+i != position.posNum) p2 = Position(position.posSym, (char)('0'+i));
  18. if ('0'+i+16 != position.posSym) p = Position((char)('0'+i+16), position.posNum);
  19. }
  20. catch (const std::invalid_argument) {
  21. p = Position();
  22. p2 = Position();
  23. }
  24. if ('0'+i+16 != position.posSym) {
  25. moves[moveNum] = p;
  26. moveNum++;
  27. }
  28. if ('0'+i != position.posNum) {
  29. moves[moveNum] = p2;
  30. moveNum++;
  31. }
  32. }
  33. return std::pair<int, Position*>(14, moves);
  34. };