- false, false = down and to the right.
- true, false = down and to the left
- true, true = up and to the left
- false, true = up and to the right
The code in Listing 16 is very similar to the code that I explained earlier in Listing 10 , so the code in Listing 16 should not require further explanation.
The overridden Update method
The overridden Update method is shown in its entirety in Listing 17 .
Listing 17 . Tell the sprites to move.
protected override void Update(GameTime gameTime) {
//Tell all the rocks in the list to move.for(int cnt = 0;cnt<rocks.Count;cnt++) {
rocks[cnt].Move(gameTime);
}//end for loop//Tell all the power pills in the list to move.
for(int cnt = 0;cnt<pills.Count;cnt++) {
pills[cnt].Move(gameTime);
}//end for loop//Tell all the ufos in the list to move.
for(int cnt = 0;cnt<ufos.Count;cnt++) {
ufos[cnt].Move(gameTime);
}//end for loopbase.Update(gameTime);
}//end Update method
Very simple code
Because the code to instantiate the Sprite objects and set their properties was placed in the LoadContent method in this program, the code in the overridden Update method is very simple.
The code in Listing 17 uses for loops to access the references and call the Move method on every Sprite object.
To move or not to move, that is the question
As you learned earlier, when the Move method is called on an individual Sprite object, the sprite may or it may not actually move depending on the value of its Speed property and the elapsed time since its last actual move.
A characteristic of an object-oriented program
One of the characteristics of an object-oriented program is that the individual objects know how to behave with minimal supervision. In effect, acall to the Sprite.Move method in Listing 17 tells the object to make its own decision and to move if it is time for it to move.
The overridden Game.Draw method
Listing 18 shows the overridden Game.Draw method in its entirety.
Listing 18 . The overridden Game.Draw method.
protected override void Draw(GameTime gameTime) {
GraphicsDevice.Clear(Color.CornflowerBlue);spriteBatch.Begin();
//Draw all rocks.for(int cnt = 0;cnt<rocks.Count;cnt++) {
rocks[cnt].Draw(spriteBatch);
}//end for loop//Draw all power pills.
for(int cnt = 0;cnt<pills.Count;cnt++) {
pills[cnt].Draw(spriteBatch);
}//end for loop//Draw all ufos.
for(int cnt = 0;cnt<ufos.Count;cnt++) {
ufos[cnt].Draw(spriteBatch);
}//end for loopspriteBatch.End();
base.Draw(gameTime);}//end Draw method
//-------------------------------------------------//}//end class
}//end namespace
Erase and redraw the entire game window
Listing 18 begins by painting over everything in the game window with CornflowerBlue pixels. Then it uses for loops to access and call the Sprite.Draw method on every Sprite object.
Each call to a Sprite object's Draw method in Listing 18 is a notification to the Sprite object that it should cause itself to be redrawn in the appropriate position with theappropriate image in the game window.