-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbitboardPawns.cpp
33 lines (32 loc) · 1.66 KB
/
bitboardPawns.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include "bitboard.hpp"
/*
->Captures don't check legality
->Captures don't toggle previous position
->Captures don't toggle opponent's position's
->En passant is one move, so it doesn't need to be stored in a bitboard
->Maybe we should merge BitboardWhitePawns and BitboardBlackPawns using a condition inside BitboardPawns
*/
Bitboard BitboardWhitePawns::generateLeftCaptures(const Bitboard &opponentColor) {
return Bitboard( (bb << 7) & notHFile & opponentColor.getBitboard());
}
Bitboard BitboardWhitePawns::generateRightCaptures(const Bitboard &opponentColor) {
return Bitboard( (bb << 9) & notAFile & opponentColor.getBitboard());
}
Bitboard BitboardWhitePawns::generateFrontMoves(const Bitboard &unoccupied) {
return Bitboard( (bb << 8) & unoccupied.getBitboard());
}
Bitboard BitboardWhitePawns::generateDoubleFrontMoves(const Bitboard &unoccupied){
return (((((bb & secondRank) << 8) & unoccupied.getBitboard()) << 8) & unoccupied.getBitboard());
}
Bitboard BitboardBlackPawns::generateLeftCaptures(const Bitboard &opponentColor) {
return Bitboard( (bb >> 7) & notAFile &opponentColor.getBitboard());
}
Bitboard BitboardBlackPawns::generateRightCaptures(const Bitboard &opponentColor) {
return Bitboard( (bb >> 9) & notHFile & opponentColor.getBitboard());
}
Bitboard BitboardBlackPawns::generateFrontMoves(const Bitboard &unoccupied) {
return Bitboard( (bb >> 8) & unoccupied.getBitboard());
}
Bitboard BitboardBlackPawns::generateDoubleFrontMoves(const Bitboard &unoccupied){
return Bitboard(((((bb & eighthRank) >> 8) & unoccupied.getBitboard()) >> 8) & unoccupied.getBitboard());
}