Con l'autodidattica si può imparare più di quello che pensi, se poi non sai studiare per conto tuo questo non è un problema di altri.. Te lo dico per esperienza personale, puoi benissimo conseguire conoscenze molto buone..
La base dell' OOP è il C++.. Studiare Java senza conoscere il C++ e a sua volta senza conoscere il C, è come voler guidare una moto senza aver mai guidato neanche un Fifty, per farti una idea..
Parti dalle basi. Se hai già nozioni basilari in C, studia C++.. Giudizio personale di Java: comodo, ma tra questo e C++, io sceglierei l'ultimo.
I giochi? Si programmano in C++. Vuoi spremere le meningi? Programma in Assembly.