Movimiento de Proyectil en C#

Introducción

C# tiene una gran variedad de bibliotecas y espacios de nombres, cuando consideras desarrollar una aplicación la cual requiere movimiento que puede ser un proyectil o una hipérbole. En el contexto de estos supuestos, C# tiene la biblioteca System.Drawing y la clase Point para dibujar el punto sobre diferentes ejes (x,y).

movimiento-proyectil

Para implementar el movimiento de proyectil en C# se utilizan bucles y otras técnicas que crean complejidad y un código sobrecargado para los programadores. La técnica que vamos a ver te puede ayudar a crear el movimiento de proyectil utilizando el control Timer y lógica de gráficos.

Entorno

El movimiento de proyectil es difícil de implementar en C#, pero es un problema común enfrentado por diferentes estudiantes y profesionales.

El Código

Este gráfico ayudará al usuario a dibujar cualquier movimiento en C#. Los ejes son definidos como son descritos en la siguiente imagen.

Coordenadas

Coordenadas:

(4,6) (6,4) (8,-4) (8,6)

El código es el siguiente:

public partial class Form1 : Form
  {

      int Cronometro = 0;

      byte Mario_Pos = 5;

      public Form1()
      {
          InitializeComponent();
      }

      private void Form1_Load(object sender, EventArgs e)
      {

      }

      void Mario_Salto()
      {
          Cronometro++;
          if (Cronometro <= 10)
              picMario.Location = new Point(picMario.Location.X + 4, picMario.Location.Y + 6);
          else if (Cronometro > 10 && Cronometro <= 15)
              picMario.Location = new Point(picMario.Location.X + 6, picMario.Location.Y + 4);
          else if (Cronometro > 15 && Cronometro <= 20)
              picMario.Location = new Point(picMario.Location.X + 8, picMario.Location.Y - 4);
          else if (Cronometro > 20 && Cronometro <= 30)
              picMario.Location = new Point(picMario.Location.X + 8, picMario.Location.Y - 6);

          else
          {
              //timer1.Enabled = false;
              Cronometro = 0;
              Mario_Pos -= 1;
          }
      }

      private void timer1_Tick(object sender, EventArgs e)
      {
          Mario_Salto();
      }

  }

En el diseño del formulario, debes poner en True la propiedad Double Buffered para minimizar la latencia del control pictureBox.

Adjunto código: ProjectileMotion

0 comentarios: