I've been studying general C++ programming for about 6 months now, so I'd like to say I've got a solid understanding of the basics. I continue to study daily when time permits (C++ Primer Book, Project Euler, USACO, as well as some of my own little exercises, and I assist as many people as possible on this forum for my own benefit and theirs), but I'd also like to explore more areas in regards to C++ rather than just the generic side of things.
By explore more areas, I mean I've been looking into game development as another means of expanding my knowledge and abilities with C++. But here in lies my problem: I went through a Tetris Tutorial, but I feel as if I didn't really learn much (perhaps it was a bit over my head - as I don't think I understood the core design of that particular tutorial). In fact, the amount I learned was very minimal compared to what I had expected to learn from it.
So my question to you professionals, post-college computer programming students, post-university computer science majors, or hell, current college/university students, is how did you progress from here? What would you suggest?
Don't get me wrong, I'm not saying my progress has suddenly grinded to a screeching halt (it definitely hasn't) - I would just like to plan what I'm going to do ahead of time. I was thinking of picking up a C++ book that covers beginner game development topics but I guess I'm worried it'll just be like the Tetris Tutorial: "here's the code, and a poor explanation of it."
Start building some open source programs. Even if they already exist, create them anyways!
Here is a good list of small programs that you could try building for fun
- Pacman
- Some type of Mario game
- Space Invaders
You will guaranteed fail building your first programs (unless you are a born-programming-ninja) so don't feel like you suck if you make mistakes.
As you make more and more mistakes, you will learn what the proper and improper ways to do things are.
The ways I learnt best was by creating small programs and as I went along -- realized how awful they were, trying to fix them, and eventually starting from scratch doing it a (more) proper way.
It is often said that recognition of your failures is the best way to learn.
So go out there and build a failure of an application! :D
You could try and create your own A.I. Maybe start with very generic base classes and than create more specific classes to inherit them for different games and difficulty settings.
Personally, I hate game programming so I can't recommend a career in it. Simple 2D games are fun but I have worked on a full on 3D project using Ogre3D and I must say, it takes some serious skill and passion to thrive in that environment.
In my honest opinion, I would recommend looking into Visual C++ using Visual Studio and learning .Net C++.
I am bias though because even though I started out using nothing but open source (C++, Linux, PHP, MySQL) I eventually migrated to the .Net world and I haven't looked back. C# is the language I use now but C++ will always be my first love. haha