Instance variables
Listing 12 declares several instance variables. Comments are provided to explain most of the instance variables. No explanation beyond the comments in Listing 12 should be required.
The modified constructor
The constructor is shown in its entirety in Listing 13 .
Listing 13 . The modified constructor.
public Game1() {//constructor
graphics = new GraphicsDeviceManager(this);Content.RootDirectory = "Content";
//Set the size of the game window.graphics.PreferredBackBufferWidth = windowWidth;
graphics.PreferredBackBufferHeight = windowHeight;}//end constructor
Nothing in this constructor is new to this module. Therefore, no further explanation should be required.
The overridden LoadContent method
The overridden LoadContent method begins in Listing 14 .
Listing 14 . Beginning of the overridden LoadContent method.
protected override void LoadContent() {
spriteBatch = new SpriteBatch(GraphicsDevice);for(int cnt = 0;cnt<numRocks;cnt++){
rocks.Add(new Sprite("Rock",Content,random));//Set the position of the current rock at a
// random location within the game window.rocks[cnt].Position = new Vector2((float)(windowWidth * random.NextDouble()),
(float)(windowHeight * random.NextDouble()));//Get a direction vector for the current rock.
// Make both components positive to cause the// vector to point down and to the right.
rocks[cnt].Direction = DirectionVector(
(float)maxVectorLength,(float)(maxVectorLength * random.NextDouble()),
false,//xNegfalse);//yNeg
//Notify the Sprite object of the size of the// game window.
rocks[cnt].WindowSize =
new Point(windowWidth,windowHeight);//Set the speed in moves per second for the
// current sprite to a random value between// maxRockSpeed/2 and maxRockSpeed.
rocks[cnt].Speed = maxRockSpeed/2
+ maxRockSpeed * random.NextDouble()/2;}//end for loop
Instantiate all of the space rock sprites
The code in Listing 14 uses a for loop to instantiate all of the space rocks and to prepare them to move from left to right, top to bottomacross the game window.
Call the Sprite constructor
The for loop begins with a call to the Sprite constructor to construct a newobject of the Sprite class.
Each new Sprite object's reference is added to the list referred to by the instance variable named rocks .
Set the property values
Once the new Sprite object is constructed, the object's reference is accessed and used to set the following property values:
- The Position property of each rock is set to a random position within the game window.
- The Direction property for each rock is set to a value obtained by calling the private DirectionVector method. (I will explain the DirectionVector method later.)
- The WindowSize property for each rock is set to the common windowWidth and windowHeight values.
- The Speed property for each rock is set to a bounded random value.