This is my repository for the Chess capstone project from the Ruby path of The Odin Project.
- Play Chess! If you're already on replit.com, just hit "Run" at the top.
- Github Repository
This project was an excellent challenge. At this point in my development journey, I had not yet written such a complicated application. Utilizing classic problem solving techniques, I was able to complete this program by writing plain old Ruby objects.
- One achievement was only tangentially related to Ruby and programming: I finally learned how to play Chess.
- One challenge that I was able to successfully overcome was the complexity of abstractions and interactions that this project required. Chess has many rules and my initial planning did not go far enough on the abstractions which caused some challenges down the road. While it was a painful lesson, coming up with a solution that aided with final integration was very satisfying.
- I am very happy with the way the testing suite came together for this application. I was just starting to get comfortable with RSpec, but having a robust testing suite was very helpful when figuring out how to validate the more complex Chess rules while I was re-thinking my design approach and abstractions.
- Consider implementing a PGN-like game history inside the
Chess
class. - Three fold repetition implementation starts with "import state" and is only accurate while the game is in progress. If a game is imported from FEN, previous positions are not tracked as part of the current three fold repetition implementation.