title: How to move my sprite in MonoGame using C#
body: <p>First off, i'm fairly new to programming, about 2 months in, i dabbled a bit in Console Application, WinForms, and still using the ugly console to get better at algorithms in general. But now, I wanna start digging into game programming, because that's the reason i wanted to learn programming. I stumbled upon MonoGame, and while it's harder than say Unity, I got an immense sense of achievement after creating something by just using code. I already made a Space Invaders and Pong but nothing related to sprite animation, using spritesheets and moving a player. So 2 days ago, I started a platformer, divided my spritesheet, got some animation down, and now that it's time to move my player, I'm completely lost. I tried reading some tutorials on vectors, but it doesn't help in my case. Maybe you can shed some light on the matter.</p>
  
  <p>So, without further ado, here's the code: </p>
  
  <p>Game.cs</p>
  
  <pre><code>using Microsoft.Xna.Framework;
  using Microsoft.Xna.Framework.Graphics;
  using Microsoft.Xna.Framework.Input;
  
  namespace MafiaJohnny
  {
  
  public class Game1 : Game
  {
      GraphicsDeviceManager graphics;
      SpriteBatch spriteBatch;
      private JohnnyPlayer johnnyPlayer;
  
      public Game1()
      {
          graphics = new GraphicsDeviceManager(this);
          Content.RootDirectory = "Content";
      }
  
      protected override void Initialize()
      {
          base.Initialize();
  
      }
  
      protected override void LoadContent()
      {
          spriteBatch = new SpriteBatch(GraphicsDevice);
          Texture2D texture = Content.Load&lt;Texture2D&gt;("JohnnyDone");
          johnnyPlayer = new JohnnyPlayer(texture, 2, 4);
      }
  
      protected override void UnloadContent()
      {
  
      }
  
      protected override void Update(GameTime gameTime)
      {
          if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed || Keyboard.GetState().IsKeyDown(Keys.Escape))
              Exit();
  
          johnnyPlayer.Update(gameTime);
  
          base.Update(gameTime);
      }
  
      protected override void Draw(GameTime gameTime)
      {
          GraphicsDevice.Clear(Color.White);
  
          johnnyPlayer.Draw(spriteBatch, new Vector2(200, 200));
  
          base.Draw(gameTime);
      }
  }
  }
  </code></pre>
  
  <p>JohnnyPlayer.cs</p>
  
  <pre><code>using System;
  using Microsoft.Xna.Framework.Graphics;
  using Microsoft.Xna.Framework;
  using Microsoft.Xna.Framework.Content;
  using Microsoft.Xna.Framework.Input;
  
  namespace MafiaJohnny
  {
  class JohnnyPlayer
  {
      public Texture2D Texture { get; set; }
      public int Rows { get; set; }
      public int Columns { get; set; }
      private int currentFrame;
      private int totalFrames;
  
      //Slow down frame animation
      private int timeSinceLastFrame = 0;
      private int millisecondsPerFrame = 400;
  
      public JohnnyPlayer(Texture2D texture, int rows, int columns)
      {
          Texture = texture;
          Rows = rows;
          Columns = columns;
          currentFrame = 0;
          totalFrames = Rows * Columns;
      }
  
      public void Update (GameTime gameTime)
      {
          timeSinceLastFrame += gameTime.ElapsedGameTime.Milliseconds;
          if (timeSinceLastFrame &gt; millisecondsPerFrame)
          {
              timeSinceLastFrame -= millisecondsPerFrame;
  
              KeyboardState keystate = Keyboard.GetState();
  
              //Idle animation
              if (keystate.GetPressedKeys().Length == 0)
              currentFrame++;
              timeSinceLastFrame = 0;
              if (currentFrame == 2)
                  currentFrame = 0;
  
              //Walking Animation
              if (keystate.IsKeyDown(Keys.Left))
              {
  
              }
          }
      }
  
      public void Draw (SpriteBatch spriteBatch, Vector2 location)
      {
          int width = Texture.Width/Columns;
          int height = Texture.Height / Rows;
          int row = (int) ((float) currentFrame/Columns);
          int column = currentFrame % Columns;
  
          Rectangle sourceRectangle = new Rectangle(width * column, height * row, width, height);
          Rectangle destinationRectangle = new Rectangle((int)location.X, (int)location.Y, width, height);
  
          spriteBatch.Begin();
          spriteBatch.Draw(Texture, destinationRectangle, sourceRectangle, Color.White);
          spriteBatch.End();
      }
  }
  }
  </code></pre>
  
  <p>So here's my code, find me an answer minions! Thank you is what I mean :)</p>