Поделиться через


Шаг 4. Добавление метода для перезапуска игры

Было показано, как интегрированная среда разработки автоматически добавила в программу метод обработчика события.Также можно написать методы и добавить их в код.Многие программисты затрачивают большую часть своего времени на добавление собственных методов.

Примечание

Написание своих собственных методов рекомендуется, когда существует набор инструкций, которые нужно выполнить множество раз в различных местах.Это происходит часто при написании программ.

Например, при создании этой программы лабиринта, когда необходимо при запуске программы автоматически изменять положение указателя мыши в левый верхний угол панели.Когда пользователь перемещает указатель в стену необходимо, чтобы указатель перемещался на исходную позицию.Когда пользователь перемещает указатель за пределы игрового поля и возвращает его обратно необходимо, чтобы указатель снова перемещался на исходную позицию.

Перемещение указателя на исходную позицию можно реализовать с помощью трех строк кода.Однако если будет не нужно писать три одинаковые строки кода в нескольких различных местах программы, это сэкономит время.Если разместить эти три строки кода в методе, например, в методе с именем MoveToStart(), нужно будет написать их только один раз.Затем каждый раз, когда нужно переместить указатель назад в левый верхний угол панели, нужно просто вызвать метод MoveToStart().

Добавление метода для перезапуска игры

  1. Перейдите к коду формы. Для этого щелкните правой кнопкой мыши Form1.cs в Обозревателе решений и выберите в меню пункт Перейти к коду.

  2. В коде должен быть представлен добавленный метод finishLabel_MouseEnter().Сразу после этого метода добавьте новый метод 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. Существует специальный тип комментариев, которые можно добавлять перед любым методом. Интегрированная среда разработки поможет добавить его.Поместите курсор на строку перед новым методом.В Visual C# добавьте три знака косой черты (///).В Visual Basic добавьте три знака одинарных кавычек (''').Интегрированная среда разработки автоматически добавит следующий текст.

    ''' <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. В строке между двумя тегами 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>
    
    /// <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> 
    

    Примечание

    Только что был добавлен XML-комментарий.Как уже упоминалось ранее интегрированная среда разработки показывает сведения в подсказке, если задержать указатель над словом MessageBox.Интегрированная среда разработки автоматически выводит сведения для разработанных методов.Все, что помещается в XML-комментарий отображается в подсказке интегрированной среды разработки, а также в окне IntelliSense.Это рекомендуется делать в программе, которая содержит множество методов.Также, если разместить стену, которая расположена на 10 пикселей вниз и вправо от левого верхнего угла панели, то в коде можно изменить (10, 10).Попробуйте с различными числами, пока не найдете начальную позицию указателя, которая подходит для лабиринта.

  5. После добавления метода, его необходимо вызвать.Так как необходимо, чтобы программа перемещала указатель в начальную позицию сразу при запуске программы, необходимо вызвать метод непосредственно при запуске формы.Для Visual C# найдите в форме кода следующий метод.

    public Form1()
    {
        InitializeComponent();
    }
    

    Для Visual Basic добавьте этот метод в код формы.Перед методом finishLabel_MouseEnter начните набирать следующий код.

    Public Sub New()
    

    При нажатии клавиши ВВОД для перехода к следующей строке IntelliSense должна отобразить следующий код для завершения метода.

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

    Это специальный метод, который называется конструктором.Он выполняется один раз при создании формы.Сейчас все что он делает, это вызов метода с именем InitializeComponent().Нужно будет добавить строку к нему, чтобы вызвать только что написанный метод MoveToStart().Перед продолжением рассмотрите, что добавить в программу, чтоб заставить ее вызвать метод MoveToStart() сразу после того, как она вызывает метод InitializeComponent().

    Примечание

    Метод InitializeComponent() в конструкторе формы, это метод, который был написан интегрированной средой разработки.Он добавляет все элементы управления и компоненты в форму и устанавливает их свойства.Каждый раз, когда меняются свойства формы или ее элементов управления, интегрированная среда разработки изменяет этот метод.Его содержимое можно посмотреть, открыв файл Form1.Designer.cs из Обозревателя решений.Изменять содержимое метода InitializeComponent() не нужно.Интегрированная среда разработки следит за этим на основе формы, которая создается в представлении конструирования.

  6. Добавьте вызов метода MoveToStart() сразу после вызова метода InitializeComponent().Код формы должен выглядеть так, как показано в следующем примере.

    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);
            }
        }
    }
    

    Обратите внимание на вызов метода MoveToStart() сразу после вызова метода InitializeComponent().Если используется Visual C# помните, что конец строки завершается точкой с запятой (;), в противном случае не выполняется построение программы.

  7. Сохраните и выполните программу.Как только программа запускается, указатель должен быть автоматически перемещен немного вниз и в правую часть левого верхнего угла панели.

Продолжить или повторить пройденный материал