diff --git a/src/functions.cpp b/src/functions.cpp index 630b8a7..d3049d1 100755 --- a/src/functions.cpp +++ b/src/functions.cpp @@ -45,7 +45,9 @@ std::vector get_all_moves(Position pn, std::array board PieceType pt = board[pn]; std::vector pns; int x = pos_to_pair(pn).first; - int y = pos_to_pair(pn).second; + int y = pos_to_pair(pn).second; + int dx; + int dy; switch(pt){ case PieceType::B_ROOK: case PieceType::W_ROOK: @@ -59,6 +61,52 @@ std::vector get_all_moves(Position pn, std::array board } } } + break; + case PieceType::B_BISHOP: + case PieceType::W_BISHOP: + for (int r = 7; r >= 0; r--){ + for (int f = 0; f < 8; f++){ + for (int i=0; i<8; i++){ + if ((f-i == x && r-i == y) || + (f+i == x && r+i == y) || + (f-i == x && r+i == y) || + (f+i == x && r-i == y)){ + pns.push_back(pair_to_pos(std::make_pair(f, r))); + break; + } + } + /* + if (((i>x) && (i<8)) && ((j>y) && (j<8))) + { + dx = i-x; + dy = j-y; + if (dx == dy){pns.push_back(pair_to_pos(std::make_pair(x+dx,y+dy)));} + } + if (((i>=0) && (iy) && (j<8))) + { + dx = i+1; + dy = j-y; + if (dx == dy){pns.push_back(pair_to_pos(std::make_pair(x-dx,y+dy)));} + } + if (((i>=0) && (i=0) && (jx) && (i<8)) && ((j>=0) && (j