Kurz: Přidání ikon do odpovídající aplikace WinForms hry
V této sérii čtyř kurzů vytvoříte odpovídající hru, kde hráč zápasí dvojice skrytých ikon.
V odpovídající hře hráč vybere čtverec, aby viděl ikonu, a pak zvolí jiný čtverec. Jestliže se ikony shodují, zůstávají viditelné. Pokud ne, hra skryje obě ikony. V tomto kurzu přiřadíte ikony k popiskům náhodně. Nastavíte je tak, aby byly skryté a pak se zobrazovaly při výběru.
V tomto druhém kurzu se naučíte:
- Přidejte náhodný objekt a seznam ikon.
- Každému popisku přiřaďte náhodnou ikonu.
- Přidejte obslužné rutiny událostí, které zobrazují ikony popiskům.
Požadavky
Tento kurz vychází z předchozího kurzu a vytvoří odpovídající herní aplikaci. Pokud jste tento kurz ještě neudělali, projděte si ho jako první.
Přidání náhodného objektu a seznamu ikon
V této části vytvoříte sadu odpovídajících symbolů pro hru. Každý symbol je přidán do dvou náhodných buněk v kontejneru TableLayoutPanel ve formuláři.
Příkazy slouží new
k vytvoření dvou objektů.
První je Random objekt, který náhodně vybírá buňky v TableLayoutPanel.
Druhý objekt je List<T> objekt.
Ukládá náhodně zvolené symboly.
Otevřete sadu Visual Studio. Váš projekt MatchingGame se zobrazí v části Otevřít poslední.
Vyberte Form1.cs , pokud používáte C# nebo Form1.vb , pokud používáte Visual Basic. Pak vyberte Zobrazit>kód. Jako alternativu vyberte klávesu F7 nebo poklikejte na Form1. Integrované vývojové prostředí sady Visual Studio zobrazí modul kódu pro Form1.
Do stávajícího kódu přidejte následující kód.
public partial class Form1 : Form { // Use this Random object to choose random icons for the squares Random random = new Random(); // Each of these letters is an interesting icon // in the Webdings font, // and each icon appears twice in this list List<string> icons = new List<string>() { "!", "!", "N", "N", ",", ",", "k", "k", "b", "b", "v", "v", "w", "w", "z", "z" };
Důležité
Pomocí ovládacího prvku programovacího jazyka v pravém horním rohu této stránky můžete zobrazit fragment kódu jazyka C# nebo fragment kódu jazyka Visual Basic.
Pokud používáte jazyk C#, nezapomeňte kód umístit za levou složenou závorku a těsně za deklaraci třídy (public partial class Form1 : Form
). Pokud používáte Visual Basic, vložte kód hned za deklaraci třídy (Public Class Form1
).
Pomocí objektů seznamu můžete sledovat různé typy položek. Seznam může obsahovat čísla, hodnoty pravda/nepravda, text nebo jiné objekty. V odpovídající hře má objekt seznamu 16 řetězců, jeden pro každou buňku na panelu TableLayoutPanel. Každý řetězec je jedno písmeno, které odpovídá ikoně v popiscích. Tyto znaky se v písmu Webdings zobrazují jako autobus, kolo a další.
Poznámka:
Seznamy lze zmenšit a zvětšit podle potřeby, což je v tomto programu důležité.
Další informace o seznamech najdete v tématu List<T>. Pokud chcete zobrazit příklad v jazyce C#, podívejte se na základní příklad seznamu. Pokud chcete zobrazit příklad v jazyce Visual Basic, přečtěte si téma Použití jednoduché kolekce.
Přiřazení náhodné ikony každému popisku
Pokaždé, když program spustíte, přiřadí ikony náhodně ovládacím prvkům Popisek ve formuláři pomocí AssignIconsToSquares()
metody.
Tento kód používá klíčové slovo foreach
v jazyce C# nebo For Each
v jazyce Visual Basic.
Přidejte metodu
AssignIconsToSquares()
./// <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); } } }
Tento kód můžete zadat těsně pod kód, který jste přidali v předchozí části.
Poznámka:
Jeden z řádků je záměrně okomentován. Přidáte ho později v tomto postupu.
Metoda AssignIconsToSquares()
iteruje každý ovládací prvek popisku v TableLayoutPanel.
Spustí stejné příkazy pro každý z nich.
Příkazy vytáhnou z seznamu náhodnou ikonu.
- První řádek převede řídicí proměnnou na popisek s názvem iconLabel.
- Druhý řádek je
if
příkaz, který kontroluje, zda převod fungoval. Pokud převod funguje, příkazy vif
příkazu se spustí. - První řádek příkazu
if
vytvoří proměnnou s názvem randomNumber , která obsahuje náhodné číslo, které odpovídá jedné z položek v seznamu ikon. Používá Next() metodu objektu Random . MetodaNext
vrátí náhodné číslo. Tento řádek také používá Count vlastnost seznamu ikon k určení rozsahu, ze kterého chcete zvolit náhodné číslo. - Další řádek přiřadí jednu z položek seznamu ikon vlastnosti Text popisku.
- Další řádek skryje ikony. Řádek se tady zakomentuje, takže zbytek kódu můžete před pokračováním ověřit.
- Poslední řádek příkazu
if
odebere ikonu, která byla přidána do formuláře ze seznamu.
Přidejte volání
AssignIconsToSquares()
metody do konstruktoru Form1. Tato metoda vyplní herní desku ikonami. Konstruktory se volají při vytváření objektu.public Form1() { InitializeComponent(); AssignIconsToSquares(); }
Pro Visual Basic přidejte
AssignIconsToSquares()
volání metody doForm1_Load
metody.Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load AssignIconsToSquares() End Sub
Další informace naleznete v tématu Konstruktory (průvodce programováním v C#) nebo Použití konstruktorů a destruktorů.
Uložte program a spusťte jej. Měl by se zobrazit formulář s náhodnými ikonami přiřazenými každému popisku.
Tip
Pokud se ikony Webdings ve formuláři nezobrazují správně, nastavte vlastnost UseCompatibleTextRendering popisků ve formuláři na hodnotu True.
Ukončete program a znovu jej spusťte. Každému popisku se přiřadí různé ikony.
Ikony jsou nyní viditelné, protože jste je neskryli. Chcete-li je skrýt před přehrávačem, můžete nastavit vlastnost ForeColor každého popisku na stejnou barvu jako její BackColor vlastnost.
Zastavte program. Odeberte značky komentářů pro okomentovaný řádek kódu uvnitř smyčky.
Pokud program spustíte znovu, zdá se, že ikony zmizely. Zobrazí se pouze modré pozadí. Ikony jsou náhodně přiřazeny a stále tam jsou.
Přidání obslužných rutin událostí do popisků
V této zápase hráč odhalí skrytou ikonu a pak druhý. Jestliže se ikony shodují, zůstávají viditelné. V opačném případě jsou obě ikony opět skryté.
Pokud chcete, aby hra fungovala tímto způsobem, přidejte obslužnou rutinu Click události, která změní barvu zvoleného popisku tak, aby odpovídala pozadí.
Otevřete formulář v návrháři model Windows Forms. Vyberte Form1.cs nebo Form1.vb a pak vyberte Návrhář zobrazení>.
Vyberte první ovládací prvek popisku, který chcete vybrat, a poklikáním na něj přidejte obslužnou rutinu
Click
události s názvem label1 _Click() do kódu.Podržte stisknutou klávesu Ctrl a vyberte všechny ostatní popisky. Je nutné vybrat všechny popisky.
V okně Vlastnosti vyberte tlačítko Události , což je odlehčený šroub. U události Kliknutí vyberte v poli label1_Click.
Vyberte klávesu Enter. Integrované vývojové prostředí přidá obslužnou rutinu
Click
události s názvem label1 _Click() do kódu. Protože jste vybrali všechny popisky, obslužná rutina se připojí ke každému z popisků.Vyplňte zbytek kódu.
/// <summary> /// Every label's Click event is handled by this event handler /// </summary> /// <param name="sender">The label that was clicked</param> /// <param name="e"></param> private void label1_Click(object sender, EventArgs e) { Label clickedLabel = sender as Label; if (clickedLabel != null) { // If the clicked label is black, the player clicked // an icon that's already been revealed -- // ignore the click if (clickedLabel.ForeColor == Color.Black) return; clickedLabel.ForeColor = Color.Black; } }
Poznámka:
Pokud zkopírujete a vložíte label1_Click()
blok kódu místo ručního zadávání kódu, nezapomeňte nahradit stávající label1_Click()
kód.
Jinak budete mít duplicitní kód bloku.
>Vyberte Spustit ladění a spusťte program. Měl by se zobrazit prázdný formulář s modrým pozadím. Zvolte některou z buněk ve formuláři. Jedna z ikon by se měla zobrazit. Pokračujte ve výběru různých míst ve formuláři. Ikony by se měly výběrem postupně zobrazovat.
Další kroky
V dalším kurzu se dozvíte, jak změnit popisky pomocí časovače.