@ jasongog24: It doesn't require a person an advanced knowledge of C++ to write a game. If you know the basics, flow control, functions and some OOP, then you can make games. As Fredbill has suggested, you can use SFML or SDL to make games. Just pick one of the two, read a few tutorials on how to use it and go a bit through its documentation and you'll be writing games in no time. It just requires patience.
It depends on what kind of games you want to write? 2D, 3D, RTS, FPS, Card, Board, RPG etc... ?
It also depends what your end goal of these games is:
Do you just want to learn how to make a basic game? In that case, learning SDL or SFML cannot be a bad idea.
If you want to make games quickly without learning all the ins and outs of how to make a game, then go for a game engine and obviously what engine you want to be using will depend on many factors, mostly what platforms you want the game to run on and what kind of games you intend on making.
If your end goal is 3D games (these are really hard), then SDL or SFML can still be a good idea, but you might also want to consider OpenGL and then later something like Irrlicht, Lightfeather or OGRE.
Of course, being better at C++ and other languages is always going to help. I would not recommend total abandonment of studying general purpose programming. It can be very useful to have this knowledge.
As well as this, a good knowledge of C++ and other languages can be preferable to simply being able to draw on the screen. If you think about it, drawing to the screen will always be simply an API call, receiving user input the same. However, designing your game and creating the system for the whole thing to run can be very challenging, but it gets much easier as time goes on and you learn more. For example, I looked at a game that I wrote a while ago fairly recently, and due to the knowledge of things like templates and various programming structuring techniques that I have now that I didn't then, I could do in maybe 500 lines what took me 3000 then, and probably more efficiently and less buggy, too.
However, this isn't saying that you should wait. On the contrary: You are never going to learn these techniques until you are creating a project and realize that you can't do something, so you will never have to look up how to fix your particular problem and find a programming technique that greatly improves your productivity in general.
The thing to remember when making games, as @Stormboy said, is to have patience. You can be surprised how long it can take to make a game, especially early on when you are learning at the same time as making. However, finishing a game is a great feel! Have fun!
While I do think SDL/SFML are good resources, most engines rely on SDL on a higher level. They make it easy to do pretty much anything in a fast efficient manner.
So, my stance has recently changed. In my opinion, if you want to make a game (i.e. you have a goal you'd like to finish), start by picking up an engine like Irrlicht or Ogre3D. They all have similar features that are packaged differently. Some have advantages over the others but unless you're making a AAA graphic-intensive game, any of them will do.
This will introduce you to concepts familiar in the game creation world. To be honest, I don't even suggest starting with C++ so as to avoid complication. I would use python or lua to start off.
@ NoXzema: Actually, making your own game engine is worth the time rather than using a pre-existing one. You learn a lot more and also, it is easier for beginners to make a paddle engine or so by themselves. Going into 3D using Ogre3D for example, can get pretty complicated if you are new to this and can leave the person more confused than before.