Paso 4: Agregar un método para reiniciar el juego

Hemos visto cómo el IDE puede agregar automáticamente un método de control de eventos al programa.También se pueden escribir métodos y agregarlos al código.Muchos programadores dedican gran parte de su tiempo a agregar sus propios métodos.

[!NOTA]

Escribir sus propios métodos es útil cuando hay un conjunto de instrucciones que se tienen que ejecutar muchas veces, en lugares diferentes.Esto sucede con frecuencia cuando se escriben programas.

Por ejemplo, para crear este programa de laberinto, queremos que el programa sitúe automáticamente el puntero del mouse en la esquina superior izquierda del panel cada vez que se inicie.Cuando el usuario mueve el puntero y toca un muro, el programa tiene que volver a colocar el puntero en la salida.Cuando el usuario saca el puntero de la pista de juegos y vuelve a situarlo en ella, el programa tiene que volver a colocar el puntero en la salida.

El puntero se puede colocar en la salida con tres líneas de código.Pero ahorraremos tiempo si evitamos escribir esas mismas tres líneas de código en distintos lugares del programa.Si colocamos esas tres líneas de código en un método (por ejemplo, un método denominado MoveToStart()) solo tendremos que escribirlas una vez.A continuación, bastará con llamar al método MoveToStart() cada vez que haya que devolver el puntero a la esquina superior izquierda del panel.

vínculo a vídeoPara obtener una versión en vídeo de este tema, vea tutorial 2: Crear un Laberinto en Visual Basic - vídeo 2 o tutorial 2: Crear un Laberinto en C# - vídeo 2.

Para agregar un método para reiniciar el juego

  1. Vaya al código de formulario. Para ello, haga clic con el botón secundario en Form1.cs en el Explorador de soluciones y seleccione Ver código en el menú.

  2. Deberá aparecer el método finishLabel_MouseEnter() que agregó.Justo debajo de ese método, agregue un nuevo método MoveToStart().

    Private Sub MoveToStart()
        Dim startingPoint = Panel1.Location
        startingPoint.Offset(10, 10)
        Cursor.Position = PointToScreen(startingPoint)
    End Sub
    
    private void MoveToStart()
    {
        Point startingPoint = panel1.Location;
        startingPoint.Offset(10, 10);
        Cursor.Position = PointToScreen(startingPoint);
    }
    
  3. Hay un tipo especial de comentario que puede agregar encima de cualquier método, y el IDE puede ayudarle a agregarlo.Sitúe el cursor en la línea que está encima del nuevo método.En Visual C#, agregue tres marcas de barra diagonal (///).En Visual Basic, agregue tres comillas sencillas (''').El IDE incluye automáticamente el siguiente texto.

    ''' <summary>
    ''' 
    ''' </summary>
    ''' <remarks></remarks>
    Private Sub MoveToStart()
        Dim startingPoint = Panel1.Location
        startingPoint.Offset(10, 10)
        Cursor.Position = PointToScreen(startingPoint)
    End Sub
    
    /// <summary>
    /// 
    /// </summary>
    private void MoveToStart()
    {
        Point startingPoint = panel1.Location;
        startingPoint.Offset(10, 10);
        Cursor.Position = PointToScreen(startingPoint);
    }
    
  4. En la línea situada entre las dos etiquetas summary, escriba el siguiente comentario.(Después de presionar ENTRAR, el IDE agrega automáticamente una nueva línea con tres marcas de barra diagonal (///) o tres comillas sencillas ('''), dependiendo del lenguaje de programación, de modo que pueda continuar su comentario.)

    ''' <summary>
    ''' Move the pointer to a point 10 pixels down and to the right
    ''' of the starting point in the upper-left corner of the maze.
    ''' </summary>
    
    /// <summary>
    /// Move the pointer to a point 10 pixels down and to the right
    /// of the starting point in the upper-left corner of the maze.
    /// </summary> 
    

    [!NOTA]

    Acaba de agregar un comentario XML.Como recordará, el IDE le ha mostrado información en una información sobre herramientas al detener el cursor sobre la palabra MessageBox.El IDE rellena automáticamente la información sobre herramientas de los métodos.Cualquier cosa que escriba en un comentario XML aparecerá en la información sobre herramientas del IDE, así como en la ventana IntelliSense.Cuando un programa tiene muchos métodos, puede resultar de gran utilidad.Además, si coloca un muro a 10 píxeles de distancia de los bordes superior e izquierdo de la esquina superior izquierda del panel, puede cambiar (10, 10) en el código.Experimente con distintos números hasta que encuentre una salida para el puntero que sea adecuada para el laberinto.

  5. Después de agregar el método, hay que llamarlo.Dado que queremos que el programa mueva el puntero a la salida en cuanto el programa se inicie, se debe llamar al método tan pronto como se inicia el formulario.Para Visual C#, busque el siguiente método en el código del formulario.

    public Form1()
    {
        InitializeComponent();
    }
    

    Para Visual Basic, agregue este método al código del formulario.Antes del método finishLabel_MouseEnter, escriba el siguiente código.

    Public Sub New()
    

    Al presionar la tecla ENTRAR para pasar a la línea siguiente, IntelliSense debería hacer que apareciese el siguiente código para completar el método.

    Public Sub New()
        ' This call is required by Windows Forms Designer.
        InitializeComponent()
        ' Add any initialization after the InitializeComponent() call.
    End Sub
    

    Se trata de un método especial denominado constructor.Se ejecuta una vez, al crear el formulario.En este momento, lo único que hace es llamar al método InitializeComponent().Vamos a agregarle una línea para llamar al nuevo método MoveToStart() que acaba de escribir.Antes de continuar, piense qué se debe agregar al programa para que llame al método MoveToStart() inmediatamente después de llamar al método InitializeComponent().

    [!NOTA]

    El método InitializeComponent() del constructor del formulario es un método escrito por el IDE.Agrega todos los controles y componentes al formulario y configura sus propiedades.Cada vez que se cambia cualquiera de las propiedades del formulario o sus controles, el IDE modifica ese método.Puede examinarlo abriendo el archivo Form1.Designer.cs en el Explorador de soluciones.No es preciso editar el contenido del método InitializeComponent().El IDE se encarga de ello basándose en el formulario que ha creado en la Vista de diseño.

  6. Agregue una llamada al método MoveToStart() inmediatamente después de que llame al método InitializeComponent().El código del formulario debe ser como el siguiente.

    Public Class Form1
    
        Public Sub New()
            ' This call is required by Windows Forms Designer.
            InitializeComponent()
            ' Add any initialization after the InitializeComponent() call.
            MoveToStart()
        End Sub
    
        Private Sub finishLabel_MouseEnter() Handles finishLabel.MouseEnter
            ' Show a congratulatory MessageBox, then close the form.
            MessageBox.Show("Congratulations!")
            Close()
        End Sub
    
        ''' <summary>
        ''' Move the mouse pointer to a point 10 pixels down and to the right
        ''' of the starting point in the upper-left corner of the maze.
        ''' </summary>
        ''' <remarks></remarks>
        Private Sub MoveToStart()
            Dim startingPoint = Panel1.Location
            startingPoint.Offset(10, 10)
            Cursor.Position = PointToScreen(startingPoint)
        End Sub
    
    End Class
    
    namespace Maze
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
                MoveToStart();
            }
    
            private void finishLabel_MouseEnter(object sender, EventArgs e)
            {
                // Show a congratulatory MessageBox, then close the form.
                MessageBox.Show("Congratulations!");
                Close();
            }
    
            /// <summary>
            /// Move the pointer to a point 10 pixels down and to the right
            /// of the starting point in the upper-left corner of the maze.
            /// </summary>
            private void MoveToStart()
            {
                Point startingPoint = panel1.Location;
                startingPoint.Offset(10, 10);
                Cursor.Position = PointToScreen(startingPoint);
            }
        }
    }
    

    Fíjese en la llamada al método MoveToStart() que aparece debajo de InitializeComponent().Si está programando en Visual C#, recuerde finalizar esa línea con un signo de punto y coma (;); de lo contrario, el programa no se compilará.

  7. Ahora, guarde el programa y ejecútelo.En cuanto el programa se inicie, el puntero debería situarse automáticamente ligeramente por debajo y a la derecha de la esquina superior izquierda del panel.

Para continuar o revisar