I am picking up Python as well but I primarily want to stick with C++. My reasoning is that in due time I plan to move on from simple rogue likes and would much prefer the more powerful language be something I know...not something I wish I knew when the time comes.
It should be noted that most languages will do anything C++ can do, and most of them can do it more simply. It would be both easier and faster to write complex roguelikes in a simpler language.
For a simple example:
std::vector<int> MyStuff;
MyStuff.push_back(0);
MyStuff.push_back(1);
MyStuff.push_back(2);
for(std::vector<int>::iterator i = MyStuff.begin(); i < MyStuff.end(); i++){
std::cout << "Element: " << (*i) << std::endl;
}
or if you were on drugs (or just wanted an excuse to use a lambda expression (they are so fun to use)):
std::vector<int> MyStuff;
MyStuff.push_back(0);
MyStuff.push_back(1);
MyStuff.push_back(2);
std::for_each(MyStuff.begin(), MyStuff.end(), [&](int i){
std::cout << "Element: " << i << std::endl;
});
Could just as easily be written in Python as
MyStuff = [0,1,2]
for i in MyStuff:
print "Element:", i
Which is infinitely more readable and simple, while accomplishing the same task.
Also. I figure worst case scenario I can mix code...another challenge all its own to be sure but making programs in Python and having the complex parts of it in C++ is not unheard of.
You can do this. This is generally only useful for speed critical parts of code, since C++ is faster than Python. But if "complex" means complex algorithms/code (not speed), than Python is more than capable of running complex code.
If you still want to start off with learning C++, then I would reccomend using the Clang compiler. It generally produces more readable error messages. Good luck and remember, don't start off with something massive and complex. Start small and work your way up.