Belofte version 2.1.9
A promising chess program using the UCI or Winboard interface
Todo List
Member bBasicBoard::applyBlackMove (bMove const &m)

add functions such as nextrank

flag mate/stalemate move, special move, ...

check do we need to look for mate here ?

Member bBasicBoard::applyWhiteMove (bMove const &m)

add functions such as nextrank

flag mate/stalemate move, special move, ...

check do we need to look for mate here ?

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 ()
check increase to 64 bits, is there added value
Member bBasicBoard::clearCastleRights (uint8_t const f)
what happens if 2 rights are cleared together or one by one
Member bBasicBoard::setCastleRights (uint8_t const f)
what happens if 2 rights are set together or one by one
Member bBasicBoard::setPly (plynum_t const p)
, does hash need to be updated?
Member bBoard::applyMove (bMove const &m) override
check usage in case of failure, why not return exception?
Member bBoard::calcGameStage ()
take into account actual moves
Member bBoard::invertColours ()

castledone, capturedcase, capturedpiece, bmove, eval

epcase

Member bBoard::operator std::string () const
add mate condition
Member bel_debug::execute (std::string const &args)

add abstraction level on different debug commands so that they do not need to be coded here (dynamic binding ?)

move to verbose command

Class bEmptyPiece
Candidate for template implementation
Member bEpd::parseSTSPosition (bFen const &fen)
protect against malformed STS containing no = sign
Member bEpd::setPos (std::string const &s)
do only consider opcode starting with letter
Member bEpd::translateEpdResult (bPgnMove const &m)
implement other opcodes such as mate search
Member bEpdFile::parse () override

consider other prefixes to be skipped (e.g. //, %)

consider to use verbosity level to dictate output

consider to use verbosity level to dictate output

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 anything else but positions.back()
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 bGame::WaitForSearchEnd ()
handle sending result here
Member bMove::getMoveEvalStr () const
convert to move annotation to be used in PgnMove as well
Member bMoveList::addBlackPromotionIfValid (bBasicBoard const &b, bMove &m)
optimize in case of uncover check just by moving pawn
Member bMoveList::addWhitePromotionIfValid (bBasicBoard const &b, bMove &m)
optimize in case of uncover check just by moving pawn
Member bPositionEvaluation::gameEndedResult (bBoard const &b)
when a move has been registered on board, no need to check for move generation
Member bSearchAlgorithm::CheckIfAbortingSearch () const
: limit calls to getDurationMilliSec
Member bSearchAlgorithm::SearchBestMove (bBoard &b, bMoveList &ml)
Add debug manipulator
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 used, currently, it is flapping around 10s left
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

allow value parameter with space in it

get array from initialisation

change to specific setoption function

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

option name UCI_Chess960 type check default false

option name UCI_AnalyseMode

Member engineInterface::attachCommand (belofte::stringList const &sCommands, bool const published=true)
fix: if not published, add command to list anyway
Member engineInterface::engineGameResultString (gameResult_t const gr) const
add other end of game conditions
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 preceded 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, bMoveList &ml) override
check why not test for winning before evaluating moves
Member SearchAlphaBetaFH::CalcBestMove (bBoard &b, bMoveList &ml, depth_t const nDepth, bSearchScore alpha, bSearchScore beta) override
check why not test for winning before evaluating moves
Member SearchBruteForce::CalcBestMove (bBoard &b, bMoveList &ml) override
search from depth till zero
Member TIME_LOSTINENGINE
replace based on actual measurements
Member TimedExecution::ClockEnd ()
check for multi-threaded, make sure there is no race condition
Member UCIMode::sendInfoSearching (bBoard const &b, int const nLogDepth, depth_t const nMaxDepth, bScore const sc, int64_t const t, 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 if (ponder != "") sOut << " ponder " << ponder;
Member whitefields [64]
rename to fieldcolours
Member XboardMode::sendInfo (std::string const &info) override
check if line needs to be split for respecting tmplevel