In this example, we will be discussing the movement of text in both directions in Windows Phone 7. Use the following to do that.

Step 1

First we create a new project in Windows Phone 7:

New Project -> XNA Game Studio 4.0 -> Windows Phone Game (4.0)

After that we select a name for the project.

Step 2

Now we add a SpriteFont Class to our project. For this first we right-click on the MovementOfTextInWP7Content (Content) like this:

MovementOfTextInWP7Content.jpg

Add -> New Item -> Sprite Font

After that a SpriteFont (SpriteFont1) class will be added.

Step 3

Now we will write the program in the Game1.cs page. Here we write the following code:

Public int x=0;

public int y = 0;

public int z = 0;

public int c = 0;

const float textSpeed= 500f;

const string TEXT = "Mahak Gupta";

GraphicsDeviceManager graphics;

SpriteBatch spriteBatch;

SpriteFont segoe14;

Viewport viewport;

Vector2 textSize;

Vector2 textPosition;

bool DirectionIsUp = false;

public Game1()

{

graphics = new GraphicsDeviceManager(this);

Content.RootDirectory = "Content";

// Frame rate is 30 fps by default for Windows Phone.

TargetElapsedTime = TimeSpan.FromTicks(333333);

}

Here x, z and c are variables used to fulfill some conditions. textSpeed is used for the speed measurement of the text.

Now we write the code for LoadContent like this:

protected override void LoadContent()

{

spriteBatch = new SpriteBatch(GraphicsDevice);

viewport = this.GraphicsDevice.Viewport;

segoe14 = this.Content.Load<SpriteFont>("SpriteFont1");

textSize = segoe14.MeasureString(TEXT);

textPosition = new Vector2((viewport.Width - textSize.X) / 2, (viewport.Height - textSize.Y) / 2);

}

Here we describe the TextSize and the position of the text Like this:

Movement-of-Text-In-Windows-Phone7.jpg

Step 4

Now we write the Update Method. Here we describe the text in both directions (X and Y) like this:

protected override void Update(GameTime gameTime)

{

if (x < 3)

{

if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)

this.Exit();

if (!DirectionIsUp)

{

textPosition.X += textSpeed* (float)gameTime.ElapsedGameTime.TotalSeconds;

if (textPosition.X + textSize.X > viewport.Width)

{

float excess = textPosition.X + textSize.X - viewport.Width;

textPosition.X += 4* excess;

DirectionIsUp = true;

x += 1;

z += 1;

}

}

else

{

textPosition.X -= textSpeed* (float)gameTime.ElapsedGameTime.TotalSeconds;

if (textPosition.X < 0)

{

float excess = -textPosition.X;

textPosition.X += 4 * excess;

DirectionIsUp = false;

}

}

}

else if (x >= 3)

{

if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)

this.Exit();

if (!DirectionIsUp)

{

textPosition.Y += textSpeed* (float)gameTime.ElapsedGameTime.TotalSeconds;

if (textPosition.Y + textSize.Y > viewport.Width)

{

float excess = textPosition.Y + textSize.Y - viewport.Width;

textPosition.Y += 4 * excess;

DirectionIsUp = true;

}

}

else

{

textPosition.Y -= textSpeed* (float)gameTime.ElapsedGameTime.TotalSeconds;

if (textPosition.Y < 0)

{

float excess = -textPosition.Y;

textPosition.Y += 4 * excess;

DirectionIsUp = false;

y += 1;

}

if (y == 3)

{

x = 0;

}

}

}

base.Update(gameTime);

}


Now we write the Draw Method, here we change the color of the text like this:

protected override void Draw(GameTime gameTime)

{

GraphicsDevice.Clear(Color.BurlyWood);

spriteBatch.Begin();

if (z <= 3)

{

spriteBatch.DrawString(segoe14, TEXT, textPosition, Color.Chocolate);

}

else if (z == 3)

{

z =0;

}

else

{

spriteBatch.DrawString(segoe14, TEXT, textPosition, Color.Cornsilk);

}

spriteBatch.End();

base.Draw(gameTime);

}

output-Movement-of-Text-In-Windows-Phone7.jpg