Sdílet prostřednictvím


Kurz: Zobrazení zprávy ve vaší WinForms aplikaci pro odpovídající hru

V této sérii čtyř kurzů vytvoříte párovací hru, kde hráč páruje dvojice skrytých ikon.

V tomto kurzu upravíte svou hru srovnávání tak, aby viditelné zůstaly spárované dvojice a aby se zobrazila zpráva s blahopřáním, když hráč vyhraje.

V tomto kurzu se naučíte:

  • Udržujte páry viditelné.
  • Ověřte, jestli hráč vyhrál.
  • Vyzkoušejte další funkce.

Požadavky

Tento kurz vychází z těchto předchozích kurzů:

  1. Vytvoření odpovídající herní aplikace
  2. Přidejte ikony do vaší párovací hry
  3. Přidejte časovač do párovací hry

Udržujte páry viditelné

Když hráč najde shodný pár, hra by se měla resetovat tak, aby už nesledovala žádné popisky, které používají firstClicked a secondClicked referenční proměnné. Neměly by se resetovat barvy u dvou štítků, které byly spárovány. Tyto popisky se budou dál zobrazovat.

  1. Přidejte následující příkaz if do metody obslužné rutiny události label_Click(). Umístěte ho na konec kódu těsně nad příkaz, kde spustíte časovač.
        // If the player gets this far, the timer isn't
        // running and firstClicked isn't null,
        // so this must be the second icon the player clicked
        // Set its color to black
        secondClicked = clickedLabel;
        secondClicked.ForeColor = Color.Black;

        // If the player clicked two matching icons, keep them 
        // black and reset firstClicked and secondClicked 
        // so the player can click another icon
        if (firstClicked.Text == secondClicked.Text)
        {
            firstClicked = null;
            secondClicked = null;
            return;
        }

        // If the player gets this far, the player 
        // clicked two different icons, so start the 
        // timer (which will wait three quarters of 
        // a second, and then hide the icons)
        timer1.Start();
    }
}

Příkaz if zkontroluje, jestli je ikona v prvním štítku, který hráč zvolí, stejná jako ikona ve druhém štítku. Pokud jsou ikony stejné, program spustí tři příkazy. První dva příkazy resetují firstClicked a secondClicked odkazové proměnné. Už nemají přehled o žádném z popisků. Třetí příkaz je return příkaz, který přeskočí zbývající příkazy v metodě bez jejich spuštění.

  1. Spusťte program a začněte vybírat čtverce ve formuláři.

Snímek obrazovky s hrou Matching, kterou vytvoříte v tomto tutoriálu.

Pokud zvolíte dvojici, která se neshoduje, aktivuje se událost tick časovače. Obě ikony zmizí.

Pokud zvolíte odpovídající dvojici, spustí se nový příkaz if. Příkaz return způsobí, že metoda přeskočí kód, který spustí časovač. Ikony zůstanou viditelné.

Ověření, jestli hráč vyhrál

Vytvořili jste zábavnou hru. Poté, co hráč vyhraje, by hra měla končit. Tato část přidá metodu pro ověření, jestli hráč vyhrál.

  1. Přidejte CheckForWinner() metodu do dolní části kódu pod obslužnou rutinu události timer1_Tick().
/// <summary>
/// Check every icon to see if it is matched, by 
/// comparing its foreground color to its background color. 
/// If all of the icons are matched, the player wins
/// </summary>
private void CheckForWinner()
{
    // Go through all of the labels in the TableLayoutPanel, 
    // checking each one to see if its icon is matched
    foreach (Control control in tableLayoutPanel1.Controls)
    {
        Label iconLabel = control as Label;

        if (iconLabel != null) 
        {
            if (iconLabel.ForeColor == iconLabel.BackColor)
                return;
        }
    }

    // If the loop didn’t return, it didn't find
    // any unmatched icons
    // That means the user won. Show a message and close the form
    MessageBox.Show("You matched all the icons!", "Congratulations");
    Close();
}

Metoda používá jinou smyčku foreach v jazyce C# nebo smyčku For Each v jazyce Visual Basic k procházení jednotlivých popisků v TableLayoutPanel. Zkontroluje barvu ikony každého popisku a ověří, jestli odpovídá pozadí. Pokud se barvy shodují, ikona zůstane neviditelná a hráč dosud nespároval všechny zbývající ikony.

V takovém případě program pomocí příkazu return přeskočí zbytek metody. Pokud smyčka prochází všechny popisky bez provedení příkazu return, znamená to, že všechny ikony ve formuláři byly spárovány. Program zobrazuje MessageBox, aby blahopřál hráči k vítězství, a poté zavolá metodu Close() k ukončení hry.

  1. Nechte obslužnou rutinu události pro popisek Click zavolat novou metodu CheckForWinner().
// If the player gets this far, the timer isn't
// running and firstClicked isn't null, 
// so this must be the second icon the player clicked
// Set its color to black
secondClicked = clickedLabel;
secondClicked.ForeColor = Color.Black;

// Check to see if the player won
CheckForWinner();

// If the player clicked two matching icons, keep them 
// black and reset firstClicked and secondClicked 
// so the player can click another icon
if (firstClicked.Text == secondClicked.Text)
{
    firstClicked = null;
    secondClicked = null;
    return;
}

Ujistěte se, že váš program zkontroluje vítěze ihned poté, co se zobrazí druhá ikona, kterou hráč vybere. Vyhledejte čáru, ve které nastavíte barvu druhé zvolené ikony, a pak volejte metodu CheckForWinner() hned za tímto řádkem.

  1. Uložte a spusťte program. Hrajte hru a shodujte všechny ikony. Když vyhrajete, program zobrazí zprávu s gratulací.

    Snímek obrazovky zobrazuje hru Párování s oknem zprávy MessageBox.

    Jakmile vyberete OK, hra Matching Game se zavře.

Vyzkoušení dalších funkcí

Vaše hra s odpovídajícími páry je dokončena. Můžete přidat další funkce, aby tato hra byla náročnější a zajímavější. Tady jsou některé možnosti.

  • Nahraďte ikony a barvy vámi zvolenými ikonami.

    Zkuste se podívat na parametr ForeColor u popisku.

  • Přidejte časovač hry, který sleduje, jak dlouho trvá, než hráč vyhraje.

    Můžete přidat popisek, který zobrazí uplynulý čas ve formuláři. Umístěte ho nad TableLayoutPanel. Přidejte do formuláře další časovač, abyste mohli sledovat čas. Pomocí kódu spusťte časovač, když hráč spustí hru, a zastavte časovač poté, co se shodují s posledními dvěma ikonami.

  • Když přehrávač najde shodu, přidejte zvuk, jiný zvuk, když hráč odhalí dvě ikony, které se neshodují, a třetí zvuk, když program znovu skryje ikony.

    K přehrávání zvuků můžete použít jmenný prostor System.Media. Další informace najdete v tématu Přehrávání zvuků v aplikaci Windows Forms (C#) nebo Jak přehrávat zvuk v jazyce Visual Basic.

  • Ztížte hru tím, že zvětšíte desku.

    Do panelu TableLayoutPanel budete muset udělat víc než jen přidat řádky a sloupce. Musíte také zvážit počet ikon, které vytvoříte.

  • Udělejte hru náročnější tím, že skryjete první ikonu, pokud hráč reaguje příliš pomalu.

Další kroky

Blahopřejeme! Dokončili jste tuto sérii kurzů. V integrovaném vývojovém prostředí sady Visual Studio jste provedli tyto úlohy programování a návrhu:

  • Uložené objekty, například ikony, v seznamu
  • Použití smyčky v jazyce C# nebo Visual Basic k procházení seznamu
  • Sledování stavu pomocí referenčních proměnných
  • Vytvořil obslužnou rutinu, která reaguje na události u různých objektů
  • Přidán časovač, který odpočítává a spouští událost.

V tomto článku se podrobně podíváme na Windows Forms Designer.

kurz : Začínáme s Windows Forms Designeru