I agree with Paul. The problem with learning C or C++ is that you will have to do a lot of work to make anything fun, which will most likely lead to you giving up after getting bored.
I recommend beginners to look at a beginner language first and just get used to the problem solving aspect and not having to worry as much about the complexity of a native language. This doesn't have to be a long term thing, just a few weeks would help. I had some fun messing around with Microsoft's Small Basic, its a terrible language for anything other than learning but its simple, easy to use and there are a few good e books to start with. I haven't tried any other beginner language though so there maybe a better language so have a look around if you go this route.
Then once you have had a bit of fun then you could move up to C#, C/C++ or PHP. But as you mentioned games I would say look at C#, once you get over the basics then you can try out XNA which is a C# framework for games development. Games developed with C# can even run on Xbox 360, PC (ofc), windows phone 7 and the zune plus its easier and quicker than C++ games development. XNA will use fundamentally the same methods and similar API's to a C++ DirectX game dev framework would so it would just then be a case of getting used to C++.
Learning to program is not something you can do overnight, it will probably take you a few years to become a competent programmer (well it took me a while

) plus you will never stop learning new things when it comes to programming. The best advise is not to give up or rush and skip stuff that you do not understand as this will likely lead you to just hitting a brick wall and quiting.
Oh and once you have been programming for a while don't think its necessary to reinvent the wheel, search for libraries and frameworks to help!
/essay