I made the mistake of starting by trying to convert the final version of Asteroid; all 2,200 lines of C into C++.
It got very messy because I was trying to have all the moving objects (Player ship, asteroids, bullets, aliens ship) all based on a common ancestor class but then was trying to manipulate those instances of the ancestor class and downcast back from the ancestor instances and I don’t think you can in C++. Compiler errors galore!
It was the wrong approach and I wasn’t using virtual functions. So instead I’m doing it step by step, adding on new features. Much like the original C development in 13 different steps.
Here’s the slightly shorter asteroids.cpp:
// Asteroids C++ 2020 Chapter 27
#include "game.h"
int main(int argc,char * args[])
{
Game g;
g.InitSetup();
g.GameLoop();
g.FinishOff();
return 0;
}
There are other classes used from Game. I haven’t put everything in one “God” class!