| |
|
Programming A Chess Engine in C Part 1 - Resources and Community
|
| | |
| |
|
Programming A Chess Engine in C Part 2 - Board Representation
|
| | |
| |
|
Programming A Chess Engine in C Part 3 - First Definitions
|
| | |
| |
|
Programming A Chess Engine in C Part 4 - Board Structure
|
| | |
| |
|
Programming A Chess Engine in C Part 5 - Undo-Move Structure
|
| | |
| |
|
Programming A Chess Engine in C Part 6 - Array[120] to Array[64] Indexing for Pawns
|
| | |
| |
|
Programming A Chess Engine in C Part 7 - Piece Lists and ASSERT!
|
| | |
| |
|
Programming A Chess Engine in C Part 8 - Bitboards
|
| | |
| |
|
Programming A Chess Engine in C Part 9 - Bitboards Pop and Count
|
| | |
| |
|
Programming A Chess Engine in C Part 10 - Set and Clear bits
|
| | |
| |
|
Programming A Chess Engine in C Part 11 - Position Key (Hashkey) #1
|
| | |
| |
|
Programming A Chess Engine in C Part 12 - Position Key (Hashkey) #2
|
| | |
| |
|
Programming A Chess Engine in C Part 13 - Position Setup - Reset Board
|
| | |
| |
|
Programming A Chess Engine in C Part 14 - Position Setup - FEN Notation
|
| | |
| |
|
Programming A Chess Engine in C Part 15 - Parsing An FEN (1)
|
| | |
| |
|
Programming A Chess Engine in C Part 16 - Parsing An FEN (2)
|
| | |
| |
|
Programming A Chess Engine in C Part 17 - Printing the board to screen
|
| | |
| |
|
Programming A Chess Engine in C Part 18 - Piece Lists
|
| | |
| |
|
Programming A Chess Engine in C Part 19 - Rank and File Arrays
|
| | |
| |
|
Programming A Chess Engine in C Part 20 - Checkboard
|
| | |
| |
|
Programming A Chess Engine in C Part 21 - Next steps
|
| | |
| |
|
Programming A Chess Engine in C Part 22 - Square Attacked (1)
|
| | |
| |
|
Programming A Chess Engine in C Part 23 - Square Attacked (2)
|
| | |
| |
|
Programming A Chess Engine in C Part 24 - Move Format & Bits (1)
|
| | |
| |
|
Programming A Chess Engine in C Part 25 - Move Format & Bits (2)
|
| | |
| |
|
Programming A Chess Engine in C Part 26 - Move Format & Bits (3)
|
| | |
| |
|
Programming A Chess Engine in C Part 27 - Printmove and Printsquare
|
| | |
| |
|
Programming A Chess Engine in C Part 28 - Move Generation #1
|
| | |
| |
|
Programming A Chess Engine in C Part 29 - Move Generation #2 - Validations
|
| | |
| |
|
Programming A Chess Engine in C Part 30 - Move Generation #3 - White Pawns
|
| | |
| |
|
Programming A Chess Engine in C Part 31 - Move Generation #4 - Black Pawns
|
| | |
| |
|
Programming A Chess Engine in C Part 32 - Move Generation #5 - Piece Index Setup
|
| | |
| |
|
Programming A Chess Engine in C Part 33 - Move Generation #6 - Non Slider Pieces
|
| | |
| |
|
Programming A Chess Engine in C Part 34 - Move Generation #7 - Slider Pieces
|
| | |
| |
|
Programming A Chess Engine in C Part 35 - Move Generation #8 - Castling
|
| | |
| |
|
Programming A Chess Engine in C Part 36 - Move Generation #9 - Final Movelist!
|
| | |
| |
|
Programming A Chess Engine in C Part 37 - Writing MakeMove - Introduction
|
| | |
| |
|
Programming A Chess Engine in C Part 38 - Writing MakeMove #1
|
| | |
| |
|
Programming A Chess Engine in C Part 39 - Writing MakeMove #2 - ClearPiece()
|
| | |
| |
|
Programming A Chess Engine in C Part 40 - Writing MakeMove #3 - Add/MovePiece()
|
| | |
| |
|
Programming A Chess Engine in C Part 41 - Writing MakeMove #4 - MakeMove()
|
| | |
| |
|
Programming A Chess Engine in C Part 42 - Writing MakeMove #5 - TakeMove()
|
| | |
| |
|
Programming A Chess Engine in C Part 43 - Introduction to Perft testing
|
| | |
| |
|
Programming A Chess Engine in C Part 44 - Perft Testing (Move Make / Unmake debug)
|
| | |
| |
|
Programming A Chess Engine in C Part 45 - Quick Look At MinMax and NegaMax
|
| | |
| |
|
Programming A Chess Engine in C Part 46 - Quick Look At Alpha Beta
|
| | |
| |
|
Programming A Chess Engine in C Part 47 - Overview of search implementation
|
| | |
| |
|
Programming A Chess Engine in C Part 48 - Parsing a move from user / GUI
|
| | |
| |
|
Programming A Chess Engine in C Part 49 - Repetition Detection
|
| | |
| |
|
Programming A Chess Engine in C Part 50 - Getting the time in milliseconds
|
| | |
| |
|
Programming A Chess Engine in C Part 51 - Principal Variation Table #1 Definitions
|
| | |
| |
|
Programming A Chess Engine in C Part 52 - Principal Variation Table #2 Store / Probe
|
| | |
| |
|
Programming A Chess Engine in C Part 53 - Principal Variation Table #3 Retrieval
|
| | |
| |
|
Programming A Chess Engine in C Part 54 - Preparation for search
|
| | |
| |
|
Programming A Chess Engine in C Part 55 - Search Function Definitions
|
| | |
| |
|
Programming A Chess Engine in C Part 56 - Basic Evaluation (very basic)
|
| | |
| |
|
Programming A Chess Engine in C Part 57 - Clear To Search
|
| | |
| |
|
Programming A Chess Engine in C Part 58 - Writing the Iterative Deepening Function
|
| | |
| |
|
Programming A Chess Engine in C Part 59 - Writing the Alpha Beta Function
|
| | |
| |
|
Programming A Chess Engine in C Part 60 - Vice solves a Mate in 3 !
|
| | |
| |
|
Programming A Chess Engine in C Part 61 - Move Ordering - Setting Up MVV LVA
|
| | |
| |
|
Programming A Chess Engine in C Part 62 - Move Ordering - Picking a Move
|
| | |
| |
|
Programming A Chess Engine in C Part 63 - BUG ALERT - Change to Move Generation!
|
| | |
| |
|
Programming A Chess Engine in C Part 64 - Move Ordering - Killer, History Heuristics, PV Move
|
| | |
| |
|
Programming A Chess Engine in C Part 65 - Quiescence - Getting rid of the horizon effect
|
| | |
| |
|
Programming A Chess Engine in C Part 66 - UCI Protocol #1 - Intoduction
|
| | |
| |
|
Programming A Chess Engine in C Part 67 - UCI Protocol #2 - UCi Loop
|
| | |
| |
|
Programming A Chess Engine in C Part 68 - UCI Protocol #3 - Parse Position
|
| | |
| |
|
Programming A Chess Engine in C Part 69 - UCI Protocol #4 - Parse Go
|
| | |
| |
|
Programming A Chess Engine in C Part 70 - UCI Protocol #5 - Interrupt Thinking & Working Program
|
| | |
| |
|
Programming A Chess Engine in C Part 71 - Vice vs Nero 6.1 - The first ever game!!
|
| | |
| |
|
Programming A Chess Engine in C Part 72 - XBoard / Winboard Protocol #1
|
| | |
| |
|
Programming A Chess Engine in C Part 73 - XBoard / Winboard Protocol #2
|
| | |
| |
|
Programming A Chess Engine in C Part 74 - XBoard / Winboard Protocol #3 And Console Mode
|
| | |
| |
|
Programming A Chess Engine in C Part 75 - BUG ALERT #2
|
| | |
| |
|
Programming A Chess Engine in C Part 76 - In Check Extension
|
| | |
| |
|
Programming A Chess Engine in C Part 77 - Improving Evaluation - Bitmasks
|
| | |
| |
|
Programming A Chess Engine in C Part 78 - Improving Evaluation - Pawn Bitmasks
|
| | |
| |
|
Programming A Chess Engine in C Part 79 - Improving Evaluation - Mirror Board Function
|
| | |
| |
|
Programming A Chess Engine in C Part 80 - Improving Evaluation - Isolani and passer
|
| | |
| |
|
Programming A Chess Engine in C Part 81 - Improving Evaluation - Open Files
|
| | |
| |
|
Programming A Chess Engine in C Part 82 - Improving Evaluation - King Position and Material Draws
|
| | |
| |
|
Programming A Chess Engine in C Part 83 - Null Move Pruning #1
|
| | |
| |
|
Programming A Chess Engine in C Part 84 - Null Move Pruning #2
|
| | |
| |
|
Programming A Chess Engine in C Part 85 - Transpositon Table
|
| | |
| |
|
Programming A Chess Engine in C Part 86 - Test Results, Debug Test Run
|
| | |
| |
|
Programming A Chess Engine in C Part 87 - Vice 1.0 release, end of series
|
| | |
| |
|
Programming A Chess Engine in C Part 88 - Adding An opening Book Using Polyglot
|
| | |
| |
|
Programming A Chess Engine in C Part 89 - Polyglot Opening Book #1
|
| | |
| |
|
Programming A Chess Engine in C Part 90 - Polyglot Book #2 Hashkey Generation
|
| | |
| |
|
Programming A Chess Engine in C Part 91 - Polyglot Book #3 Read In Data
|
| | |
| |
|
Programming A Chess Engine in C Part 92 - Polyglot Book #4 Read Book Moves
|
| | |
| |
|
Programming A Chess Engine in C Part 93 - Polyglot Book #5 Internal Format Book Moves
|
| | |
| |
|
Programming A Chess Engine in C Part 94 - Polyglot Book #6 Book Option
|
| | |
| |
|
Programming A Chess Engine in C Part 95 - Vice 1.1 Polyglot Books
|
| | |