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]()