====== Chess - Programming ====== [[Chess:Programming:Introduction|Introduction]] [[Chess:Programming:Checklist|Checklist]] ---- [[Chess:Programming:Links|Links]] ---- [[Chess:Programming:Alpha-Beta Pruning|Alpha-Beta Pruning]] [[Chess:Programming:Aspiration Search|Aspiration Search]] [[Chess:Programming:BCH Hashing|BCH Hashing]] [[Chess:Programming:BitBoards|BitBoards]] [[Chess:Programming:Bit Operations|Bit Operations]] [[Chess:Programming:Check Extensions|Check Extensions]] [[Chess:Programming:Database|Database]] [[Chess:Programming:Datasets|Datasets]] [[Chess:Programming:de Bruijn Sequence|de Bruijn Sequence]] [[Chess:Programming:Divide|Divide]] [[Chess:Programming:ELO Rating|ELO Rating]] [[Chess:Programming:Endgame Table-Bases|Endgame Table-Bases]] [[Chess:Programming:Evaluation|Evaluation]] [[Chess:Programming:Evaluation Hash Table|Evaluation Hash Table]] [[Chess:Programming:Expectimax Search|Expectimax Search]] [[Chess:Programming:FEN (Forsyth-Edwards Notation)|FEN (Forsyth-Edwards Notation)]] [[Chess:Programming:Futility Pruning|Futility Pruning]] [[Chess:Programming:Game Phases|Game Phases]] [[Chess:Programming:Hash Functions|Hash Functions]] [[Chess:Programming:History Heuristic|History Heuristic]] [[Chess:Programming:Horizon Effect|Horizon Effect]] [[Chess:Programming:Huffman|Huffman]] [[Chess:Programming:Iterative Deepening|Iterative Deepening]] [[Chess:Programming:Killer Move|Killer Move]] [[Chess:Programming:King Tropism|King Tropism]] [[Chess:Programming:Late Move Reduction|Late Move Reduction]] [[Chess:Programming:Lazy Evaluation|Lazy Evaluation]] [[Chess:Programming:LSB (Least Significant Bit)|LSB (Least Significant Bit)]] [[Chess:Programming:Magic BitBoards|Magic BitBoards]] [[Chess:Programming:Material Hash Table|Material Hash Table]] [[Chess:Programming:MSB (Most Significant Bit)|MSB (Most Significant Bit)]] [[Chess:Programming:Minimax Algorithm|Minimax Algorithm]] [[Chess:Programming:Move Generation|Move Generation]] [[Chess:Programming:Move History|Move History]] [[Chess:Programming:Move Ordering|Move Ordering]] [[Chess:Programming:Null Move Pruning|Null Move Pruning]] [[Chess:Programming:Opening Book|Opening Book]] [[Chess:Programming:Pawn Hash Table|Pawn Hash Table]] [[Chess:Programming:Perft|Perft]] [[Chess:Programming:Polyglot Book Format|Polyglot Book Format]] [[Chess:Programming:Ponder|Ponder]] [[Chess:Programming:Portable Game Notation|Portable Game Notation]] [[Chess:Programming:Rating|Rating]] [[Chess:Programming:Razoring|Razoring]] [[Chess:Programming:PRNG (Pseudo Random Number Generator)|PRNG (Pseudo Random Number Generator)]] [[Chess:Programming:Search|Search]] [[Chess:Programming:Static Exchange Evaluation (SEE)|Static Exchange Evaluation (SEE)]] [[Chess:Programming:Time Controls|Time Controls]] [[Chess:Programming:Transposition Table|Transposition Table]] [[Chess:Programming:Winboard|Winboard]] [[Chess:Programming:Zobrist Hashing|Zobrist Hashing]] ---- Game -> Engine -> Timer -> Board -> Pieces | | | | | | v | | v | User input | | Define the pieces | MinMax | | What moves a piece can make | AI | | Value of a piece | UCI v | v Time Controls | User input Threads | v The board grid Determine available moves Move chess pieces Remove chess pieces Promote pieces Value of board ---- Game * Runs overall game. Engine * Takes user input. * UCI. * MinMax. * AI. Timer * Time controls. Board * The board grid. * Determine available moves. * Move chess pieces. * Remove chess pieces. * Promote pieces. Pieces * The actual pieces. * The piece movements. ---- ===== References ===== https://www.chessprogramming.org/Main_Page http://computer-chess.org/doku.php https://rdrr.io/cran/bigchess/f/