Whew! What you may have thought was a reasonably simple game ended up being a complicated set of classes with some complex relationships. The result of this code, however, is a decent set of reusable classes for creating DirectDraw games. A“world” class encapsulates much of the DirectDraw setup code and surfaces for page flipping, a “sprite” class abstracts an on-screen object (which is generic enough for many uses because it doesn’t attempt to store surface data within itself, instead employing an event to retrieve surface data from an outside source), and several examples of “manager” classes control several instances of similar game elements. You should be able to use this example and become the next Atari.