Chess AI
A simple object-oriented Chess program written in C++
Features: Alpha Beta Pruning, Quiescence Searches, Iterative Deepening, Static Positional Valuation Matrices
GUI written using wxWidgets
Link to my LinkedIn article (see also the blog entry here)
Link to the source code on Github
While Chess has never been one of my hobbies or passions, the idea of writing a Chess engine has nevertheless intrigued me. Hence, I wrote this program in 2019 after finishing a time-consuming exam finally freed up some time.
This project marked my first steps into the world of C++, and it shows - The codebase is ripe for improvements.
However, it was a ton of fun to break the problem up into small pieces and tackle them one by one:
How do I represent the board and it’s pieces? How do I design the interface? How will I implement the basic principles of the engine?
What I got from it was:
A lesson in OOP
Some insight into the intricacies of computer Chess
Seeing that programming GUIs in C++ is not such a pain after all!
Aside from some improvements regarding the efficiency, readability and security of the codebase, next steps could be an improved evaluation function, hashtables and opening tables.
Also, taking a completely different approach akin to Leela Zero is fascinating, but clearly much harder.
Lastly, it would be fun to add online functionalities at some point.