Que se mueva un objeto con las flechas del teclado c#



El ejemplo está en VISUAL STUDIO 2010. Para bajarse el ejemplo, hagan click aquí:


Si usted no tiene Visual Studio, necesita el .NET Framework 4 instalado para correr el archivo ejecutable.



Esto que les voy a enseñar es muy útil para juegos.
Voy a hacer que mediante teclado puedan mover un objeto. Podría decirse que esta es una introducción básica para poder crear el juego de la viborita en c#.


Este ejemplo hace que un label se mueva cada 100 milisegundos y con el teclado me pueda mover arriba, abajo, a la izquierda o derecha.


El control que uso para moverme en el tiempo el el Timer. Entonces, los únicos dos objetos que uso en el formulario son el timer y un label que se mueve. El resto es puro código.


Por ejemplo si con el teclado presiono la flecha arriba, pues el objeto se moverá arriba, si presiono la tecla abajo, se moverá abajo.

Código:


namespace viboritas
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private int posicion;
        private void timer1_Tick(object sender, EventArgs e)
        {
            timer1.Interval = 100;
            switch (posicion)
            {
                case 0:
                    label1.Location = new Point(this.label1.Location.X, this.label1.Location.Y - 10);
                    posicion = 0;
                    break;

                case 1:
                    label1.Location = new Point(this.label1.Location.X, this.label1.Location.Y + 10);
                    posicion = 1;
                    break;

                case 2:
                    label1.Location = new Point(this.label1.Location.X-10, this.label1.Location.Y);
                    posicion = 2;
                    break;

                case 3:
                    label1.Location = new Point(this.label1.Location.X + 10, this.label1.Location.Y);
                    posicion = 3;
                    break;

            }


        }

        private void Form1_Load(object sender, EventArgs e)
        {
            timer1.Start();
        }



        private void Form1_KeyDown(object sender, KeyEventArgs e)
        {
            switch (e.KeyData)
            {
                case Keys.Up:
                    posicion = 0;
                    break;
                case Keys.Down:
                    posicion = 1;
                    break;
                case Keys.Left:
                    posicion = 2;
                    break;
                case Keys.Right:
                    posicion = 3;
                    break;

            }

        }

        private void Form1_KeyPress(object sender, KeyPressEventArgs e)
        {



        }
    }
}

La sección clave es la sección Form1_KeyDown.
Ahí se define que sucederá si Se presiona la tecla arriba (key.up), abajo (key.down) o a la izquierda y derecha (key.left, key.right).

El resto es simplemente cambiar la posición de mi objeto dentro del sistema:
label1.Location = new Point(this.label1.Location.X, this.label1.Location.Y+10 );

En este ejemplo al objeto label1 lo estoy moviendo en el eje Y a medida que pasa el tiempo.
Tienes dudas ?, sugerencias ?. Escribe a este blog.


Imágenes

Algunas imágenes fueron creadas con Bing Image Creator.

Sobre el autor

Daniel Calbimonte es un apasionado en la tecnología. Ha sido programador, project manager, documentador, ingeniero de software, experto en soporte técnico, YouTuber, escritor de artículos técnicos, blogger. Docente de tecnologías Microsoft, Developer de BI, DBA, conferencista. Actualmente da consultorías de software.

Whatsapp+59175502310


Comentarios

Publicar un comentario

Entradas populares de este blog

The Deep Sea: una web interactiva para explorar las profundidades el mar y descubrir las extrañas criaturas que viven en él

Detectar el usuario de Windows utilizando C#

Lo nuevo de SQL Server 2008 respecto a SQL Server 2005