<< Chapter < Page Chapter >> Page >

If the IsFixedTimeStep property is false...

If the IsFixedTimeStep property is false, the Update and Draw methods will be called in a continuous loop. The repetition rate of the loop will depend on how long it takes the code in theloop to execute. That is not the case in this program because the value of the IsFixedTimeStep property is true, which is the default value.

If the IsFixedTimeStep property is true...

If the IsFixedTimeStep property is true, the Update method will be called at the interval specified in the property named TargetElapsedTime , while the Draw method will only be called if an Update is not due.

In this program, the value of the TargetElapsedTime property is 0.0166667 seconds, which is the default value.

If the Draw method is not called...

If the Draw method is not called (meaning that the computer can't keep up with the demands of the Update method), the property named IsRunningSlowly will be set to true. This property can be tested by the program during development to expose potentialtiming problems in the game loop.

The overridden Update method

The overridden Update method begins in Listing 3 .

Listing 3 . Beginning of the overridden Update method.

protected override void Update(GameTime gameTime) { // Allows the game to exitif(GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)this.Exit();

If you compare Listing 3 with Listing 1 , you will see that the code in Listing 3 is contained in the skeleton code for the Game1 class that is generated by Visual C#.

Xbox 360 code

The code in Listing 3 , which references a method of the GamePad class "Allows retrieval of user interaction with an Xbox 360 Controller." Since we are working on a PC game, we aren't really interested inthe code in the body of the Update method in Listing 3 . The new code in our program begins in Listing 4 .

Test for sprite out of bounds horizontally

The code in Listing 4 tests to determine if the sprite has encountered the right or left sides of the game window. If so, the sign is changed on stepsX to cause the sprite to reverse its horizontal direction of motion.

Listing 4 . Test for sprite out of bounds horizontally.

if(((spritePosition.X + myTexture.Width)>Window.ClientBounds.Width) ||(spritePosition.X<0)){ stepsX *= -1;//Out of bounds, reverse direction}//end if

The value of Window.ClientBounds.Width is the width of the game window in pixels.

The value of spritePosition.X specifies the current horizontal position of the upper-left corner of the sprite relative to theupper-left corner of the game window.

Even though the sprite appears to have an elliptical shape in Figure 1 , it actually has a rectangular shape with all of the pixels outside the blueelliptical shape being almost transparent. You learned about this in the earlier module titled Xna0118-The XNA Framework and the Game Class

The value of myTexture.Width is the width of the sprite. Therefore, the sum of spritePosition.X and myTexture.Width specifies the current position of the upper-right corner of the sprite.

Get Jobilize Job Search Mobile App in your pocket Now!

Get it on Google Play Download on the App Store Now




Source:  OpenStax, Xna game studio. OpenStax CNX. Feb 28, 2014 Download for free at https://legacy.cnx.org/content/col11634/1.6
Google Play and the Google Play logo are trademarks of Google Inc.

Notification Switch

Would you like to follow the 'Xna game studio' conversation and receive update notifications?

Ask