Sdílet prostřednictvím


Krok 4: Přidat metodu k restartování hry

Viděli jste, jak rozhraní IDE může přidat metodu obslužné rutiny události do programu automaticky. Můžete také zapisovat metody a přidat je do kódu. Mnoho programátorů stráví velkou část svého času přidáváním vlastních metod.

Poznámka

Psaní vlastních metod je užitečné, pokud existuje sada příkazů, které je třeba mnohokrát provést na různých místech. K této situaci dochází často, když píšete programy.

Například při vytváření tohoto programu bludiště, při spuštění programu chcete, aby automaticky přesunul ukazatel myši do levého horního rohu panelu. Když uživatel přesune ukazatel myši do zdi, chcete, aby přemístil ukazatel na začátek. Když uživatel přesune ukazatel z hracího pole a znovu zpět, chcete, aby znovu přemístil ukazatel na začátek.

Můžete přemístit ukazatel nad počáteční bod pomocí tří řádků kódu. Ušetříte ale čas, pokud nemusíte zapisovat tyto stejné tři řádky kódu v několika různých místech v programu. Pokud umístíte tyto tři řádky kódu do metody, například metody nazvané MoveToStart(), potřebujete je napsat jedenkrát. Potom jen zavoláte metodu MoveToStart(), kdykoli chcete přesunout ukazatel na levý horní roh panelu.

Přidat metodu k restartování hry

  1. Přejděte ke kódu pro formulář kliknutím pravým tlačítkem myši na soubor Form1.cs v Průzkumníku Řešení, a vybráním Zobrazení Kódu z nabídky.

  2. Měli byste vidět metodu finishLabel_MouseEnter(), kterou jste přidali. Pod tuto metodu přidejte novou metodu 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. Je zde zvláštní druh komentáře, který lze přidat nad jakoukoliv metodu a rozhraní IDE může pomoci ji přidat. Kurzor umístit na řádek nad novou metodu. V jazyce Visual C# přidejte tři lomítka (///). V jazyce Visual Basic přidejte tři jednoduché uvozovky ('''). Rozhraní IDE automaticky vyplní následující text.

    ''' <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. Na řádku mezi dvěma souhrnnými značkamiy vyplňte následující komentář. (Po stisknutí klávesy ENTER rozhraní IDE automaticky přidá nový řádek se třemi lomítky (///) nebo třemi apostrofy (''') v závislosti na vašem programovacím jazyce, abyste mohli pokračovat v komentáři.)

    ''' <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> 
    

    Poznámka

    Právě jste přidali komentář v jazyce XML. Jak si můžete pamatovat, rozhraní IDE vám ukázalo informace v popisu tlačítka, když jste se pozastavili nad slovem MessageBox. Rozhraní IDE vyplní popisky pro vaše metody automaticky. Cokoliv, co vložíte do komentáře jazyka XML se zobrazí v popisu tlačítka rozhraní IDE, stejně jako v okně technologie IntelliSense. V programu s mnoha metodami to může být užitečné. Také, pokud umístíte zeď, která je 10 obrazových bodů dolů a vpravo od levého horního rohu panelu, můžete změnit (10, 10) v kódu. Experimentujte s různými čísly tak dlouho, dokud nenajdete ukazatel počátečního bodu, ve kterém pracuje vaše bludiště.

  5. Po přidání vaší metody je třeba ji zavolat. Protože chcete, aby program přesunul ukazatel nad počáteční bod, jakmile je program spuštěn, měli byste volat metodu hned, jakmile se spustí formulář. Pro jazyk Visual C# vyhledejte následující metodu v kódu formuláře.

    public Form1()
    {
        InitializeComponent();
    }
    

    Pro jazyk Visual Basic přidejte tuto metodu v kódu formuláře. Před metodu finishLabel_MouseEnter začněte psát následující kód.

    Public Sub New()
    

    Když stisknete klávesu Enter k přesunu na další řádek, měla by technologie IntelliSense zobrazit následující kód k dokončení metody.

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

    Toto je zvláštní metoda nazývaná konstruktor. Provede se jednou při vytvoření formuláře. Nyní všechno co dělá, je to, že volá metodu nazvanou InitializeComponent(). Přidáte k ní řádek pro zavolání nové metody MoveToStart(), kterou jste právě napsali. Než budete pokračovat, zvažte, co přidat do programu, aby zavolal metodu MoveToStart() ihned po zavolání metody InitializeComponent().

    Poznámka

    Metoda InitializeComponent() v konstruktoru formuláře je metoda, kterou napsalo rozhraní IDE. Přidá všechny ovládací prvky a komponenty do formuláře a nastaví jejich vlastnosti. Kdykoli změníte libovolné vlastnosti formuláře nebo obsažených ovládacích prvků, rozhraní IDE změní danou metodu. Můžete si ji prohlédnout otevřením souboru Form1.Designer.cs z Průzkumníku Řešení. Není třeba upravovat obsah metody InitializeComponent(). Rozhraní IDE pečuje o tento základ formuláře, který jste vytvořili v Návrhovém zobrazení.

  6. Přidejte volání do metody MoveToStart() ihned poté, co zavolá metodu InitializeComponent(). Váš formulářový kód by měl vypadat takto.

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

    Uveďte volání metody MoveToStart() pod InitializeComponent(). Pokud programujete v jazyce Visual C#, nezapomeňte ukončit tento řádek středníkem (;) nebo program nebude možné sestavit.

  7. Nyní uložte program a spusťte jej. Ihned poté, co bude program spuštěn, váš ukazatel by měl automaticky být přemístěn mírně dolů a vpravo od levého horního rohu panelu.

Chcete-li pokračovat nebo znovu projít