Anuncios

martes, 2 de agosto de 2011

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.



People who read this post also read :