Sdílet prostřednictvím


Krok 3: Přiřadit náhodnou ikonu každé jmenovce

Pokud hra skryje vždy stejné ikony na stejných umístěních, není to náročné. Potřebujete přiřadit ikony náhodně svým Label ovládacím prvkům ve formuláři. Uděláte to tak, že přidáte AssignIconsToSquares() metodu.

Přiřadit náhodnou ikonu každé jmenovce

  1. Před přidáním následujícího kódu zvažte, jak metoda funguje. Existuje nové klíčové slovo: foreach v jazyce Visual C# a For Each v jazyce Visual Basic. (Jeden z řádků je záměrně jako komentář, což je vysvětleno na konci této procedury.)

    ''' <summary>
    ''' Assign each icon from the list of icons to a random square
    ''' </summary>
    ''' <remarks></remarks>
    Private Sub AssignIconsToSquares()
    
        ' The TableLayoutPanel has 16 labels,
        ' and the icon list has 16 icons,
        ' so an icon is pulled at random from the list
        ' and added to each label
        For Each control In TableLayoutPanel1.Controls
            Dim iconLabel As Label = TryCast(control, Label)
            If iconLabel IsNot Nothing Then
                Dim randomNumber As Integer = random.Next(icons.Count)
                iconLabel.Text = icons.ElementAt(randomNumber)
                ' iconLabel.ForeColor = iconLabel.BackColor
                icons.RemoveAt(randomNumber)
            End If
        Next
    
    End Sub
    
    /// <summary>
    /// Assign each icon from the list of icons to a random square
    /// </summary>
    private void AssignIconsToSquares()
    {
        // The TableLayoutPanel has 16 labels,
        // and the icon list has 16 icons,
        // so an icon is pulled at random from the list
        // and added to each label
        foreach (Control control in tableLayoutPanel1.Controls)
        {
            Label iconLabel = control as Label;
            if (iconLabel != null)
            {
                int randomNumber = random.Next(icons.Count);
                iconLabel.Text = icons[randomNumber];
                // iconLabel.ForeColor = iconLabel.BackColor;
                icons.RemoveAt(randomNumber);
            }
        }
    } 
    
  2. Přidejte AssignIconsToSquares() metodu, jak je uvedeno v předchozím kroku. Můžete ji umístit pod kód, který jste přidali v Krok 2: Přidat náhodný objekt a seznam ikon.

    Existuje něco nového ve vaší AssignIconsToSquares() metodě: smyčka foreach v jazyce Visual C# a For Each v jazyce Visual Basic. Použijte smyčku foreach kdykoli, kdy chcete provést stejnou akci znovu a znovu. V tomto případě chcete spustit stejné příkazy pro každou jmenovku ve vašem TableLayoutPanel kontejneru popsané následujícím kódem.

    For Each control In TableLayoutPanel1.Controls
        ' The statements you want to execute 
        ' for each label go here
        ' The statements use iconLabel to access 
        ' each label's properties and methods
    Next
    
    foreach (Control control in tableLayoutPanel1.Controls)
    {
        // The statements you want to execute 
        // for each label go here
        // The statements use iconLabel to access 
        // each label's properties and methods
    }
    

    Poznámka

    Názvy iconLabel a ovládací prvek se používají, protože jsou popisné. Tyto názvy můžete nahradit libovolnými názvy a mělo by to pracovat přesně stejně (tak dlouho, dokud jste nezměnili název v každém příkazu uvnitř složených závorek).

    Metoda AssignIconsToSquares() prochází jednotlivé ovládací prvky Label v TableLayoutPanel kontejneru a provede stejné příkazy pro každý z nich. Tyto příkazy vyžádají náhodnou ikonu ze seznamu, který jste přidali v Krok 2: Přidat náhodný objekt a seznam ikon. (To je důvod, proč jste zahrnuli dvě z každé ikony v seznamu, aby se spárovaly ikony přiřazené k náhodnému ovládacímu prvku Label.)

  3. Je třeba volat AssignIconsToSquares() metodu hned, jakmile je program spuštěn. Píšete-li kód jazyka Visual C#, přidejte příkaz pod volání metody InitializeComponent() v konstruktoru formuláře Form1, tak formulář zavolá vaši novou metodu, aby se sám nastavil dříve, než je zobrazen.

    public Form1()
    {
        InitializeComponent();
    
        AssignIconsToSquares();
    }
    

    V jazyce Visual Basic nejprve přidejte konstruktor, a pak přidejte volání metody do konstruktoru. Před metodou AssignIconsToSquares(), kterou jste právě vytvořili, začněte psaním kódu 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í konstruktoru.

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

    Přidejte volání metody AssignIconsToSquares() tak, že váš konstruktor vypadá jako následující.

    Public Sub New()
        ' This call is required by Windows Form Designer
        InitializeComponent()
        ' Add any initialization after the InitializeComponent() call
        AssignIconsToSquares()
    End Sub
    
  4. Uložte program a spusťte jej. Měl by se zobrazit formulář s náhodnými ikonami přiřazenými každé jmenovce.

  5. Zavřete program a znovu jej spusťte. Nyní jsou různé ikony přiřazeny každé jmenovce, jak je znázorněno na následujícím obrázku.

    Skládačka s náhodnými ikonami

    Skládačka s náhodnými ikonami

  6. Nyní ukončete program a zrušte komentář tohoto řádku kódu uvnitř foreach smyčky.

    iconLabel.ForeColor = iconLabel.BackColor
    
    iconLabel.ForeColor = iconLabel.BackColor;
    
  7. Klepněte na tlačítko Uložit vše z panelu nástrojů k uložení programu a spusťte jej. Ikony zdánlivě zmizely – zobrazí se pouze modré pozadí. Avšak ikony jsou náhodně přiřazeny a stále existují. Vzhledem k tomu, že ikony mají stejnou barvu jako pozadí, jsou skryté.

Chcete-li pokračovat nebo znovu projít