I recreated the classic Minesweeper game using C++ and SFML (the Simple and Fast Multimedia Library). This was one of the most fun projects I've worked on because it produced a finished product that is actually playable. This was also one of the first times I explored external C++ libraries.
Modeling my project after a game that already exists helped give me clear goals for me to program. For example, I knew I had to code win and loss conditions, an algorithm for detecting a cell's neighbors, and a way to store board data.
I spent a lot of time upfront learning more about SFML. It was particularly challenging to get every graphic to show up on the correct location on the screen. I found that creating a lot of helper functions to handle displaying graphics was a big help. I ended up using Xcode to program my project and learned a bit about how to navigate it in the process.
I also had to make sure all my files and functions remained organized. This was my biggest project so far, so I had to remain consistent with my style. Whenever I got stuck, I found that going back to the basics of C++ helped me solve the issue. This was especially true when I started writing recursive algorithms to reveal all adjacent blank tiles. With time, however, I sorted out all of the bugs I encountered, resulting in a complete and playable Minesweeper game by the end.