Belofte version 2.1.8
A promising chess program using the UCI or Winboard interface
Todo List
Member bBasicBoard::bBasicBoard (bFen const &fen)
check legality of position: Max number of pieces of each type e.g. K=1, Q=(9 - # pawns), N=(10 - # pawns) colour of bishops, double in-check, in case of ep, adjacent pawn movenumber if not initial position, location of pawns, position of king and rooks in case of castle allowed (att. 960) for each promoted piece, an opponent piece must have been taken
Member bBasicBoard::calcHash ()
TOCHECK: increase to 64 bits, is there added value
Member bBasicMove::bBasicMove (basicmove_t const bmt)
add initial sorting score
Member bBasicMove::bBasicMove (case_t cf, case_t ct)
add initial sorting score
Member bBlackKing::GenerateMoves (bBoard const &b, case_t const &cf, bMoveList &ml) final
use absolute index
Member bBlackPiece::isAttacked (bBoard const &b, case_t const &cf) const override
TOCHECK how about ep
Member bBoard::bBoard (bBoard const &b)
make function obsolete to avoid confusion
Member bBoard::calcGameStage ()
take into account actual moves
Member bBoard::invertColours ()

castledone, capturedcase, capturedpiece, moveplayed, eval

epcase

Member bel_debug::execute (std::string const &args)

add abstraction level on different debug commands

move to verbose command

Class bEmptyPiece
Candidate for template implementation
Member bEpd::setPos (std::string const &s)
do only consider opcode starting with letter
Member bEpdOpCodes
change to enum
Member bGame::DoSearch ()
allow for cancel search with ? / stop command
Member bGame::getCurrentPosition ()
check why copy constructor is called, check if we should return
Member bGame::isExpecting (std::string const &s) const
improve by redirecting App().bout
Member bGame::operator std::string () const
Look at using stream and << operator instead of std::string
Member bMove::getMoveEvalStr () const
convert to move annotation to be used in PgnMove as well
Member bMoveList::addBlackPromotionIfValid (bBoard const &b, bMove const &m)
optimize in case of uncover check just by moving pawn
Member bMoveList::addWhitePromotionIfValid (bBoard const &b, bMove const &m)
optimize in case of uncover check just by moving pawn
Member bSearchAlgorithm::CheckIfAbortingSearch () const
limit calls to getDurationMilliSec
Member bSearchAlgorithm::SearchBestMove (bBoard &b)

Add debug manipulator

retrieve best move id without sorting it on top

Member bWhiteKing::GenerateMoves (bBoard const &b, case_t const &cf, bMoveList &ml) final
use absolute index
Member bWhitePawn::hasValidMovePreflightCheck (bBoard &b, case_t const &cf) final
full preflight implementation to speed-up
Member bWhitePiece::isAttacked (bBoard const &b, case_t const &cf) const override
TOCHECK how about ep
Member cmd_alg::cmd_alg ()
get values dynamically
Member cmd_evaltype::cmd_evaltype ()
get values dynamically
Member cmd_go::execute (std::string const &args) override
add searchmoves
Member cmd_level::execute (std::string const &args) override
keep initial game time so that after move 35, all increment time is
Member cmd_option::execute (std::string const &args) override

get array from initialisation

change to specific setoption function

Member cmd_setoption::execute (std::string const &args) override

get array from initialisation

change to specific setoption function

allow value parameter with space in it

Member cmd_uci::execute (std::string const &args) override

option name UCI_Chess960 type check default false

option name UCI_AnalyseMode

Member LevelType

restrict to n nodes - setNodes(nodes)

restrict to moves - setMoves(moves)

Member main (int argc, char *argv[])

allow aliases on commands

allow aliases on commands

parse all next argument(s) before those preceeded by –

Member MYOS
add more OSes
Member MYPLATFORM
add more platforms
Member platform_ctor ()
remove following line ASAP, this violates all C++ standards
Member SearchAlphaBeta::CalcBestMove (bBoard &b, depth_t const nDepth, bSearchScore alpha, bSearchScore beta)
optimise
Member SearchAlphaBeta::Quiescence (bBoard &b, depth_t const nDepth, bSearchScore alpha, bSearchScore beta, uint8_t nCheckCount)

this is a bug in non-debug mode

count move 0 as null-move (terminalScore)

Member SearchAlphaBetaFH::CalcBestMove (bBoard &b, depth_t const nDepth, bSearchScore alpha, bSearchScore beta) override
optimise
Member SearchBruteForce::CalcBestMove (bBoard &b) override
search from depth till zero
Member TIME_LOSTINENGINE
replace based on actual measurements
Member TimedExecution::ClockEnd ()
TOCHECK: for multi-threaded, make sure there is no race condition
Member UCIMode::sendInfoCurrMove (bBoard const &b, depth_t const nLogDepth, depth_t const nMaxDepth, std::string const &comment, bMove const &m, movenum_t const moveid, int64_t const nodes) const override
only print currline in case requested by UI
Member UCIMode::sendInfoSearching (bBoard const &b, int const nLogDepth, depth_t const nMaxDepth, std::string const &comment, bScore const sc, int64_t const t, int64_t const nodes) const override
only print currline in case requested by UI
Member UCIMode::sendMove (bBoard &b, bMove const &m) override
retrieve ponder out of board