From a790677bb7cbcb8a88dd5ad9f050097b268ba678 Mon Sep 17 00:00:00 2001 From: Karma Riuk Date: Sun, 2 Feb 2025 20:28:41 +0100 Subject: [PATCH] implemented queen legal moves --- cpp/src/pieces/queen.cpp | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 cpp/src/pieces/queen.cpp diff --git a/cpp/src/pieces/queen.cpp b/cpp/src/pieces/queen.cpp new file mode 100644 index 0000000..3046ac3 --- /dev/null +++ b/cpp/src/pieces/queen.cpp @@ -0,0 +1,35 @@ +#include "../board.hpp" +#include "../coords.hpp" +#include "../move.hpp" +#include "piece.hpp" + +#include + +std::vector rook_moves(const Board& b, const Coords xy) { + std::vector ret; + auto e = look_direction(b, xy, 1, 0); + ret.insert(ret.end(), e.begin(), e.end()); + + auto s = look_direction(b, xy, 0, -1); + ret.insert(ret.end(), s.begin(), s.end()); + + auto w = look_direction(b, xy, -1, 0); + ret.insert(ret.end(), w.begin(), w.end()); + + auto n = look_direction(b, xy, 0, 1); + ret.insert(ret.end(), n.begin(), n.end()); + + auto ne = look_direction(b, xy, 1, 1); + ret.insert(ret.end(), ne.begin(), ne.end()); + + auto se = look_direction(b, xy, 1, -1); + ret.insert(ret.end(), se.begin(), se.end()); + + auto sw = look_direction(b, xy, -1, -1); + ret.insert(ret.end(), sw.begin(), sw.end()); + + auto nw = look_direction(b, xy, -1, 1); + ret.insert(ret.end(), nw.begin(), nw.end()); + + return ret; +}