From 7804775b994734af4ac380440360104ab738cf65 Mon Sep 17 00:00:00 2001 From: Justin Pilon Date: Sun, 7 Apr 2019 22:55:19 -0600 Subject: [PATCH] broken pawns --- src/functions.cpp | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/src/functions.cpp b/src/functions.cpp index 77df767..1ae1106 100755 --- a/src/functions.cpp +++ b/src/functions.cpp @@ -48,8 +48,12 @@ std::vector get_all_moves(Position pn, std::array board int y = pos_to_pair(pn).second; std::vector knt_dx = {-1,1,-2,2,0,-2,2,-1,1}; std::vector knt_dy = {2,2,1,1,0,-1,-1,-2,-2}; - std::vector kg_dx = {-1,0,1,-1,0,1,-1,0,1}; - std::vector kg_dy = {1,1,1,0,0,0,-1,-1,-1}; + std::vector kg_dx = {-1,0,1,-1,0,1,-1,0,1}; + std::vector kg_dy = {1,1,1,0,0,0,-1,-1,-1}; + std::vector Bpa_dx = {0,-1,0,1,0,0}; + std::vector Bpa_dy = {-1,0,0,0,1,2}; + std::vector Wpa_dx = {0,0,-1,0,1,0}; + std::vector Wpa_dy = {2,1,0,0,0,-1}; switch(pt){ case PieceType::B_ROOK: case PieceType::W_ROOK: @@ -102,6 +106,26 @@ std::vector get_all_moves(Position pn, std::array board } } break; + case PieceType::B_PAWN: + for (int j = 7; j >= 0; j--){ + for (int i = 0; i < 8; i++){ + for (int k = 0; k < 6; k++){ + if (std::make_pair(x+Bpa_dx[k],y+Bpa_dy[k]) == std::make_pair(i,j)) + pns.push_back(pair_to_pos(std::make_pair(i,j))); + } + } + } + break; + case PieceType::W_PAWN: + for (int j = 7; j >= 0; j--){ + for (int i = 0; i < 8; i++){ + for (int k = 0; k < 6; k++){ + if (std::make_pair(x+Wpa_dx[k],y+Wpa_dy[k]) == std::make_pair(i,j)) + pns.push_back(pair_to_pos(std::make_pair(i,j))); + } + } + } + break; default: break; }