   Help! Why can't the puzzle pieces move ? *XNA touch move handler* thankyou
  using System;using System.Collections.Generic;using System.Linq;using System.Text;using Microsoft.Xna.Framework;using Microsoft.Xna.Framework.Audio;using Microsoft.Xna.Framework.Content;using Microsoft.Xna.Framework.GamerServices;using Microsoft.Xna.Framework.Graphics;using Microsoft.Xna.Framework.Input;using Microsoft.Xna.Framework.Media;using Microsoft.Xna.Framework.Net;using Microsoft.Xna.Framework.Storage;namespace drag_and_lock_grid{    class ScreenGameplay1 : Screen    {   SpriteFont font;   SoundEffect soundEngine;   SoundEffectInstance soundInstance;   SoundEffect soundGameOver;   Boolean isPaused;   Vector2 basePosition;   Texture2D baseTexture;   Texture2D fadeTexture;   Texture2D pausedBaseTexture;   Vector2 pausedBasePosition;   Button buttonOptions;   Button buttonResumeGame;   Button buttonRestartGame;   Button buttonMainMenu;   Button buttonSoundOn;   Button buttonSoundOff;   Button buttonCurrentSound;  PuzzlePiece[] pieces;   public static Random random = new Random();   //AI   Boolean hasGenericAI = false;   Boolean hasRandomAI = true;   int interval = 10;   public ScreenGameplay1()   {   }   /// <summary>   /// Allows the game to perform any initialization it needs to before starting to run.   /// This is where it can query for any required services and load any non-graphic   /// related content.  Calling base.Initialize will enumerate through any components   /// and initialize them as well.   /// </summary>   public override void Initialize()   {  Game1.menuSound.Pause();  basePosition = new Vector2(0, 0);  isPaused = false;    pieces = new PuzzlePiece[12];   int imageNo = 1;   int puzzleWidth = 3;   int puzzleHeight = 4;   Vector2 startPosition = new Vector2(569, 32);   Random random = new Random();   int tempNumberX = 0;   int tempNumberY = 0;   Texture2D tempTexture;   for (int i = 0; i < puzzleHeight; i++)   {  for (int j = 0; j < puzzleWidth; j++)  { tempTexture = Game1.content.Load<Texture2D>("images/gameplay/game1/" + imageNo); tempNumberX = random.Next(10, 500 - tempTexture.Width); tempNumberY = random.Next(10, 780 - tempTexture.Height); pieces[imageNo - 1] = new PuzzlePiece(0, new Vector2(tempNumberX, tempNumberY), tempTexture, imageNo, new Vector2(startPosition.X + (tempTexture.Width * j), startPosition.Y + (tempTexture.Height * i))); imageNo++;  }   }    soundEngine = Game1.content.Load<SoundEffect>("audio/game_play");  soundInstance = soundEngine.CreateInstance();  soundGameOver = Game1.content.Load<SoundEffect>("audio/Game_over");   baseTexture = Game1.content.Load<Texture2D>("images/gameplay/background");  fadeTexture = Game1.content.Load<Texture2D>("images/gameplay/fade");  pausedBaseTexture = Game1.content.Load<Texture2D>("images/base/darkened");  pausedBasePosition = new Vector2((Game1.graphicsViewport.Width - pausedBaseTexture.Width) / 2,   (Game1.graphicsViewport.Height - pausedBaseTexture.Height) / 2);  buttonOptions = new Button(new Vector2(50, 650), Game1.content.Load<Texture2D>("images/button/game_play/Options_button"));   buttonResumeGame = new Button(new Vector2(525, 226),Game1.content.Load<Texture2D>("images/button/game_play/Resume_Game_button"));   buttonRestartGame = new Button(new Vector2(525, 335),Game1.content.Load<Texture2D>("images/button/game_play/retry_button"));   buttonMainMenu = new Button(new Vector2(525, 444),Game1.content.Load<Texture2D>("images/button/game_play/main_menu_button"));   buttonSoundOn = new Button(new Vector2(525, 558),Game1.content.Load<Texture2D>("images/button/game_play/on"));   buttonSoundOff = new Button(new Vector2(525, 558),Game1.content.Load<Texture2D>("images/button/game_play/off"));   //font = Game1.content.Load<SpriteFont>("font/Kootenay");  soundInstance.Volume = 1.0f;  soundInstance.IsLooped = true;  if (Game1.sound == true)  { buttonCurrentSound = buttonSoundOn; soundInstance.Play();  }  else  { buttonCurrentSound = buttonSoundOff;  }   }   public override void touchDown(float x, float y)   {  if (!isPaused)  {  foreach (PuzzlePiece puzzle in pieces) {puzzle.touchDown(x,y); } if (buttonOptions.isWithin(x, y)) {buttonOptions.touchDown();buttonOptions.touchUp();isPaused = true; }  }  else  { if (buttonResumeGame.isWithin(x, y)) {buttonResumeGame.touchDown();buttonResumeGame.touchUp();isPaused = false; } if (buttonRestartGame.isWithin(x, y)) {buttonRestartGame.touchDown();soundInstance.Dispose();ScreenManager.screenManager.addScreen(new ScreenGameplay1(), 0); } if (buttonMainMenu.isWithin(x, y)) {buttonMainMenu.touchDown();Game1.menuSound.Play();soundInstance.Dispose();ScreenManager.screenManager.addScreen(new ScreenMainMenu(), 0); } if (buttonCurrentSound.isWithin(x, y)) {toggleSound(); }  }   }   public override void touchUp(float x, float y)   {  if (!isPaused)  { foreach (PuzzlePiece puzzle in pieces) {puzzle.touchUp(x,y); }  }   }   public override void touchMove(float x, float y)   {  if (!isPaused)  { foreach (PuzzlePiece puzzle in pieces) {puzzle.touchMove(x, y); }  }   }    /// <summary>   /// Allows the game to run logic such as updating the world,   /// checking for collisions, gathering input, and playing audio.   /// </summary>   /// <param name="gameTime">Provides a snapshot of timing values.</param>   public override void Update(GameTime gameTime)   {  if (!isPaused)  { // Allows the game to exit //if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed) //    this.Exit(); //if (noc == 12) //    this.Exit(); // TODO: Add your update logic here foreach (PuzzlePiece puzzle in pieces) {puzzle.Update(); } base.Update(gameTime); }    }   /// <summary>   /// This is called when the game should draw itself.   /// </summary>   /// <param name="gameTime">Provides a snapshot of timing values.</param>   public override void Draw(GameTime gameTime)   {  // TODO: Add your drawing code here  Game1.graphics.GraphicsDevice.Clear(Microsoft.Xna.Framework.Graphics.Color.Black);  Game1.spriteBatch.Begin();  Game1.spriteBatch.Draw(baseTexture, basePosition, Microsoft.Xna.Framework.Graphics.Color.White);  buttonOptions.Draw();   foreach (PuzzlePiece puzzle in pieces)  { puzzle.Draw();  }   if (isPaused)  { Game1.spriteBatch.Draw(fadeTexture, basePosition, Microsoft.Xna.Framework.Graphics.Color.White); //Game1.spriteBatch.Draw(pausedBaseTexture, pausedBasePosition, Microsoft.Xna.Framework.Graphics.Color.White); buttonResumeGame.Draw(); buttonRestartGame.Draw(); buttonMainMenu.Draw(); buttonCurrentSound.Draw();  }  Game1.spriteBatch.End();  base.Draw(gameTime);   }   public void toggleSound()   {  if (soundInstance.State == SoundState.Playing)  { soundInstance.Pause(); Game1.sound = false; buttonCurrentSound = buttonSoundOff;  }  else  { soundInstance.Play(); Game1.sound = true; buttonCurrentSound = buttonSoundOn;  }   }    }}