Greetings all. Here's the latest video demo of where we're at, as well as a link to download the most recent code. There are a few things that still need to be worked out, but for the time being I've added a title screen and a credits screen using the game state manager and various state classes. There are a few keyboard commands: on the title screen, you can hit 'q' to quit the game, 'c' to view the credits, or 's' to start a game. On both the game play screen and the credit screen, you can hit 'Esc' to go back to the main menu (titlescreen). The robot player is still enabled for the time being, but can be turned off in the Paddle class by setting the default value to false. I've also added some backgrounds to the playing field, title screen, and credits screen that have a space theme just to liven things up a bit. I claim no credit for the graphics, they are all things I have found online which are supposed to be free. Title screen is kind of bland for the moment, I need to add a mouse icon or a selection indicator, which will be a chore for a little later on.
If you download and mess with the code, you'll notice that some of the newer classes Initialize, LoadContent, Update, and Draw methods are looking a little different insofar as what is being passed in the method's arguments. It occurred to me that most all of the classes use, and will use for those being added, all of the same XNA basic objects such as the graphics, gameTime, spriteBatch, Content, etc. These were being passed in during the call to each method depending on what was needed and while functional I've decided to go with a different route. Instead of passing each object separately, I've created a wrapper class for them all entitled XNAObjectCollection. This consolidates everything into a single class and makes for a standardized way to access them all, consistently, across all classes. It also reduces the need to pass arguments in the methods, and therefore conserves our memory. Not all of the classes have been updated to use this new implementation, which is something I intend to get done over the weekend along with some other house keeping things that need to be taken care of. In the meantime, I've put up the code in case you want to tinker around.