diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/moves.cpp | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/src/moves.cpp b/src/moves.cpp index 65a380a..05aaf13 100644 --- a/src/moves.cpp +++ b/src/moves.cpp @@ -44,6 +44,14 @@ void GenerateSlidingMoves(board *b, int from, int i2 = from; while (true) { i2 += direction; + int oldFile = (i2 - direction) % 8; + int newFile = i2 % 8; + + if (direction == 7 || direction == -7 || direction == 9 || + direction == -9) { + if (std::abs(newFile - oldFile) != 1) + break; + } if (i2 >= 64 || i2 < 0) { break; } @@ -54,7 +62,7 @@ void GenerateSlidingMoves(board *b, int from, (i2 / 8 != (i2 - direction) / 8)) { break; } - moves.push_back({IndexToPosition(i2), IndexToPosition(i2)}); + moves.push_back({IndexToPosition(from), IndexToPosition(i2)}); if (b->pieces[i2].color != b->turn && b->pieces[i2].type != NONE) { break; } |
