You don't need objects to make games. Structs will usually suffice.
You can do OOP with only stucts and C if you want. It will be less convenient than languages designed specifically for OOP but it's possible. It's rarely a good idea though.
"OOP is always better no matter what" is a bald-faced lie perpetuated by the technology industry.
I disagree. It's true that in some special cases OOP is a bad choice, but most of the time it's the right choice, especially for programs as complicated as games.
OOP has been invented to answer specifics needs programmers had as they were working on bigger and more complicated projects. If you take a good look at OOP concepts you will see that they all address some common mistakes programmers do when they design their programs.
For example, code duplication (having the same piece of code, or almost the same piece of code, at several place in your program) is evil. Duplicating code in your program is a great way to waste time debugging it. But programmers tend to duplicate pieces of code anyway. Inheritance (and also templates) as been created to help programmers avoid code duplications.
Type checking is evil (like if (myObject->type == SOMETHING) {...} else if (myObject->type == SOMETHING_ELSE) {...}). The moment you add a new type you have to modify all your code to take it into account. Polymorphism has been created to avoid this kind of pattern.
Error return code (like functions that returns 0 if things went OK or something else if things went wrong) are evil. They make programs much longer to debug by making the source of the error harder to track (and also programmers tend to procrastinate error management implementation in their code so functions error code are often ignored in big projects). Exceptions have been created to make error management easier to implement and to debug.
I could also talk about encapsulation and namespaces but I think this post in long enough already.
So yes, OOP isn't the miracle solutions. A program isn't good only because it's designed with OOP. But OOP is a very useful tool that can make programmers life much easier. On complicated projects, not using it is suicide.
C is a good language to learn (for those who want to take their time learning and understand everything), but unless you're programming drivers or low level embedded stuff I would hardly recommend it.
C++ is very hard to master. It looks easy on the surface but it has tones of pitfalls. I wouldn't recommend making games with it unless you've been using it for few years already. I've seen a lot of beginners choosing it as their first language because they've been told it's faster (which isn't really true) and then give up after days of vain debugging. Don't quote me wrong, I love C++, it's my language of choice, but only because I'm used to it and know how to handle it.
Python, Ruby, Java and the like are good languages for games. Don't be fooled by the "Java is slow !" and "Pros use C++ !" things. These languages have everything you need to make fully fledged games. If you're not a C++ warrior and if you're not patient enough to start by learning C, then I recommend you use one of them.
My 2¢.