Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ebben a négy oktatóanyagból álló sorozatban egy egyező játékot építünk ki, amelyben a játékos egyezik a rejtett ikonok párjaival.
A párosító játék programjának nyomon kell követnie, hogy a játékos melyik címkéket választja ki. Miután egy játékos kiválasztotta az első címkét, a programnak meg kell jelennie az ikonnal. A második címke kiválasztása után a programnak rövid ideig mindkét ikont meg kell jelenítenie. Ezután elrejti mindkét ikont.
A program referenciaváltozóksegítségével nyomon követi, hogy melyik címkét választja elsőként és másodikként. Az időzítő elrejti az ikonokat, és meghatározza, hogy mennyi ideig jelenjenek meg az ikonok
- Címkehivatkozások hozzáadása.
- Adjon hozzá egy időzítőt.
Előfeltételek
Ez az oktatóanyag a korábbi oktatóanyagokra épül, Egyező játékalkalmazás létrehozása és Ikonok hozzáadása a megfelelő játékhoz. Először végezze el ezeket az oktatóanyagokat.
Címkehivatkozások hozzáadása
Ebben a szakaszban két referenciaváltozót fog hozzáadni a kódhoz. Nyomon követik vagy hivatkoznak a Címke objektumokra.
Címkehivatkozások hozzáadása az űrlaphoz az alábbi kód használatával
Form1.csvagyForm1.vb.public partial class Form1 : Form { // firstClicked points to the first Label control // that the player clicks, but it will be null // if the player hasn't clicked a label yet Label firstClicked = null; // secondClicked points to the second Label control // that the player clicks Label secondClicked = null;
Ha C#-et használ, helyezze el a kódot a nyitó kapcsos zárójel után, közvetlenül az osztály deklarációja után (public partial class Form1 : Form). Ha Visual Basicet használ, helyezze a kódot közvetlenül az osztálydeklaráció (Public Class Form1) után.
Ezek az utasítások nem okozzák, hogy a címkevezérlők megjelenjenek az űrlapon, mert nincs new kulcsszó.
Amikor a program elindul, a firstClicked és a secondClicked beállítása null-re történik C# esetén, illetve Nothing-ra Visual Basic esetén.
Módosítsa a Click eseménykezelőt a
Form1.csvagyForm1.vbfájlban úgy, hogy az újfirstClickedreferenciaváltozót használja. Távolítsa el az utolsó utasítást azlabel1_Click()eseménykezelő metódusban (clickedLabel.ForeColor = Color.Black;), és cserélje le azifutasításra az alábbiak szerint./// <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; // If firstClicked is null, this is the first icon // in the pair that the player clicked, // so set firstClicked to the label that the player // clicked, change its color to black, and return if (firstClicked == null) { firstClicked = clickedLabel; firstClicked.ForeColor = Color.Black; return; } } }
Mentse és futtassa a programot. Válasszon egy címkevezérlőt, és megjelenik annak ikonja. Válassza ki a következő címkevezérlőt, és figyelje meg, hogy semmi sem történik.
Csak az első kiválasztott ikon jelenik meg. A többi ikon láthatatlan.
A program már nyomon követi az első címkét, amelyet a játékos választott.
A hivatkozási firstClicked nem null C#-ban vagy Nothing a Visual Basicben.
Amikor a if utasítás megállapítja, hogy a firstClicked nem egyenlő null vagy Nothing, az utasításokat futtatja.
Időzítő hozzáadása
Az Párosító játék alkalmazás egy Timer vezérlőt használ. Az időzítő várakozik, majd aktivál egy eseményt, amelyet ticknéven neveznek. Az időzítő elindíthat egy műveletet, vagy rendszeresen megismételhet egy műveletet.
A programban az időzítő lehetővé teszi, hogy a játékos két ikont válasszon. Ha az ikonok nem egyeznek, rövid idő elteltével ismét elrejti a két ikont.
Válassza a Eszközkészlet lapot, a Összetevők kategóriában kattintson duplán vagy húzza az Időzítő összetevőt az űrlapra. Az időzítő1nevű időzítő ikon az űrlap alatti térben jelenik meg.
Az időzítő kiválasztásához válassza az Időzítő1 ikont. A tulajdonságok megtekintéséhez a Tulajdonságok ablakban válassza a Tulajdonságok gombot.
Állítsa a Interval tulajdonságot 750, ami ez 750 ezredmásodperc.
Az Interval tulajdonság megmondja az időzítőnek, mennyi ideig kell várnia a kattanásokközött, amikor elindítja a Tick eseményét. A program meghívja a Start() metódust, hogy indítsa el az időzítőt, miután a játékos a második címkét választotta.
Válassza az időzítővezérlő ikont, majd nyomja le Enterbillentyűt, vagy kattintson duplán az időzítőre. Az IDE üres Tick eseménykezelőt ad hozzá
Form1.cs-höz vagyForm1.vb-hez. Cserélje le a kódot a következő kódra./// <summary> /// This timer is started when the player clicks /// two icons that don't match, /// so it counts three quarters of a second /// and then turns itself off and hides both icons /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void timer1_Tick(object sender, EventArgs e) { // Stop the timer timer1.Stop(); // Hide both icons firstClicked.ForeColor = firstClicked.BackColor; secondClicked.ForeColor = secondClicked.BackColor; // Reset firstClicked and secondClicked // so the next time a label is // clicked, the program knows it's the first click firstClicked = null; secondClicked = null; }
A Tick eseménykezelő három dolgot tesz:
- Annak biztosítására, hogy az időzítő ne legyen aktív, meghívja a Stop() metódust.
- Két referenciaváltozót használ,
firstClickedéssecondClicked, hogy a játékos által választott két címke ikonjai ismét láthatatlanok legyenek. - Visszaállítja a
firstClickedéssecondClickedreferenciaváltozókat anull-re C#-ban és aNothing-ra a Visual Basicben.
Lépjen a kódszerkesztőbe, és adjon hozzá kódot a
label1_Click()eseménykezelő metódusának elejéhez és aljáhozForm1.csvagyForm1.vb. Ez a kód ellenőrzi, hogy az időzítő engedélyezve van-e, beállítja asecondClickedreferenciaváltozót, és elindítja az időzítőt. Azlabel1_Click()eseménykezelő metódus a következőképpen néz ki:/// <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) { // The timer is only on after two non-matching // icons have been shown to the player, // so ignore any clicks if the timer is running if (timer1.Enabled == true) return; 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; // If firstClicked is null, this is the first icon // in the pair that the player clicked, // so set firstClicked to the label that the player // clicked, change its color to black, and return if (firstClicked == null) { firstClicked = clickedLabel; firstClicked.ForeColor = Color.Black; return; } // 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 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(); } }
- A metódus tetején található kód az Engedélyezett tulajdonság értékének ellenőrzésével ellenőrzi, hogy az időzítő elindult-e. Ha a játékos az első és a második címke vezérlőt választja, és az időzítő elindul, a harmadik címke kiválasztása nem fog semmit sem tenni.
- A metódus alján található kód beállítja a
secondClickedreferenciaváltozót a második Címke vezérlőelem nyomon követéséhez. Ezután feketére állítja a címkeikon színét, hogy láthatóvá tegye. Ezután elindítja az időzítőt egyszeri módban, hogy 750 milliszekundumot várjon, majd egyetlen jelet adjon. Az időzítő Tick eseménykezelője elrejti a két ikont, és alaphelyzetbe állítja afirstClickedéssecondClickedreferenciaváltozókat. Az űrlap készen áll arra, hogy a játékos válasszon egy másik ikonpárt.
Jegyzet
Ha a label1_Click() kódblokkot másolja és illessze be ahelyett, hogy manuálisan írja be a kódot, mindenképpen cserélje le a meglévő label1_Click() kódot.
Ellenkező esetben egy ismétlődő kódblokkot fog létrehozni.
- Mentse és futtassa a programot. Jelöljön ki egy négyzetet, és az ikon láthatóvá válik. Válasszon egy másik négyzetet. Az ikon rövid ideig jelenik meg, majd mindkét ikon eltűnik.
A program mostantól nyomon követi a választott első és második ikont. A timer segítségével késlelteti az ikonok eltüntetését.
Következő lépések
Folytassa a következő oktatóanyaggal, hogy megtudja, hogyan fejezheti be a párosító játékot.