It was a good challenge and I’ve learned some lessons from it–never underestimate the value of analysis and design even if you think the project is too small. I jumped right into coding as I thought the game would be small and simple but turned out it wasn’t that simple. My code was a spaghetti mess at the first, so I stopped myself and spent some time thinking about what the game should do. From there I was able to identify what information the program need to store and what behaviours I should implement. That helped me a ton and the program was more structured and organized than before. Nevertheless, I kept refactoring all over the place because I didn’t have a set of well defined public API. I should have thought about that more in the first place so I don’t have to refactor all over the place after I made changes inside a class. This is why it is important to consider about public API and program design even if it is a small one-person project as it will save you time and headache.
The instructions are in the Github repo. Feel free to try out my game and hope you enjoy it! Any feedback is appreciated especially any tips on how better structure my code.