<< Chapter < Page
  Xna game studio     Page 5 / 12
Chapter >> Page >

winWidth

The variable named winWidth is set to the width of the game window. The value Window.ClientBounds.Width could have been used everywhere that winWidth is used but the length of the expression created some formatting problems when attempting to format the sourcecode for this narrow publication format.

The overridden Update method

You will recall that after initialization, the XNA game loop switches back and forth between calling the Update method and the Draw method. The Update method is overridden to implement the game logic and the Draw method is overridden to render the current state of the game on the computer screen.

There are some subtle timing issues that I explained in earlier modules and I won't get into them here.

The update method is fairly complex

The Update method in the earlier modules has been fairly simple. That is not the case in this module. The Update method in this module, which begins in Listing 4 , contains some fairly complex logic.

Listing 4 . Beginning of the Update method.

protected override void Update(GameTime gameTime) { // Allows the game to exitif(GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)this.Exit(); //-----------------------------------------------////New code begins here. msElapsed += gameTime.ElapsedGameTime.Milliseconds;if(msElapsed>msPerFrame){ //Reset the elapsed time and draw the new frame.msElapsed = 0;

The animation frame rate

The code at the beginning of Listing 4 is the standard code that is generated by Visual C# when you create a new Windows Game project.

The new code in Listing 4 deals with the animation frame rate . The animation frame rate needs to be much slower than the default repetition rate ofthe game loop, which is 60 iterations per second. Otherwise the dog would run around so fast that it wouldn't look natural.

Many drawings will be repeated

Therefore, we won't change the drawing parameters during every iteration of the game loop. Instead, we will cause the sprite to be drawn in the game windowsixty times per second, but many of those drawings will look exactly like the previous drawing.

We will accomplish this by changing the drawing parameters only once every msPerFrame milliseconds. (Recall that msPerFrame can have either of two values: fast and slow .)

The GameTime parameter

Each time the Update method is called, an incoming parameter contains information in an object of type GameTime that allows us to determine the number of milliseconds that have elapsed since the last timethe Update method was called.

The documentation for the GameTime class has this to say:

"Snapshot of the game timing state expressed in values that can be used by variable-step (real time) or fixed-step (game time) games."

The ElapsedGameTime property

The GameTime object has several properties, one of which is named ElapsedGameTime . This property, which is a structure of type TimeSpan provides:

"The amount of elapsed game time since the last update."

The TimeSpan structure

A TimeSpan structure has a large number of properties including one named Milliseconds . This property:

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