Compare commits

...

3 Commits

Author SHA1 Message Date
a4d5dbbc84 Cleanup 2022-12-23 00:30:46 +01:00
b819e27f55 Add compiler optimizations for release builds 2022-12-23 00:05:28 +01:00
9552678efe [Board] Implement pseudoLegalMoves 2022-12-23 00:05:18 +01:00
3 changed files with 10 additions and 7 deletions

View File

@@ -143,7 +143,11 @@ void Board::handlePawnDoubleAdvance(const Move &move, BitBoard bb, const Piece &
} }
void Board::pseudoLegalMoves(MoveVec &moves) const { void Board::pseudoLegalMoves(MoveVec &moves) const {
(void) moves; auto occupied = mOccupiedBB;
while(occupied) {
auto to = Square(occupied.pop());
pseudoLegalMovesFrom(to, moves);
}
} }
void Board::pseudoLegalMovesFrom(const Square &from, Board::MoveVec &moves) const { void Board::pseudoLegalMovesFrom(const Square &from, Board::MoveVec &moves) const {

View File

@@ -24,6 +24,10 @@ else ()
add_compile_options(-Wall -Wextra -pedantic -Werror) add_compile_options(-Wall -Wextra -pedantic -Werror)
endif () endif ()
if (CMAKE_BUILD_TYPE STREQUAL "Release")
add_compile_options(-O3 -march=native)
endif()
add_library(cplchess_lib OBJECT add_library(cplchess_lib OBJECT
Square.cpp Square.cpp
Move.cpp Move.cpp

View File

@@ -1,4 +1,3 @@
#include <iostream>
#include "MoveGenerator.hpp" #include "MoveGenerator.hpp"
#include "Board.hpp" #include "Board.hpp"
#include "BoardState.hpp" #include "BoardState.hpp"
@@ -77,13 +76,9 @@ void MoveGenerator::generateKingMoves(const BoardState &bs, const Square &from,
BitBoard target = CastlingRanks | bs.occupiedBB; BitBoard target = CastlingRanks | bs.occupiedBB;
auto attacked = generateAttackedSquares(bs, target, !bs.turn); auto attacked = generateAttackedSquares(bs, target, !bs.turn);
std::cout << "attacked\n" << attacked;
movesBB |= BitBoard::castlingMoves(fromBB & ~attacked, movesBB |= BitBoard::castlingMoves(fromBB & ~attacked,
(*bs.pieceBBs)[Board::toIndex(PieceType::Rook)], (*bs.pieceBBs)[Board::toIndex(PieceType::Rook)],
~bs.occupiedBB) ~bs.occupiedBB) & castlingRank;
& castlingRank;
std::cout << "moves\n" << movesBB;
if ((checkCR & CastlingRights::KingSide) == CastlingRights::None) { if ((checkCR & CastlingRights::KingSide) == CastlingRights::None) {
movesBB &= ~GFile; movesBB &= ~GFile;