<< Chapter < Page | Chapter >> Page > |
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 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
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.
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.
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.
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
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.
Notification Switch
Would you like to follow the 'Xna game studio' conversation and receive update notifications?