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.
Az egyező játékban a játékos kiválaszt egy négyzetet egy ikon megjelenítéséhez, majd kiválaszt egy másik négyzetet. Ha az ikonok egyeznek, láthatóak maradnak. Ha nem, a játék elrejti mindkét ikont. Ebben az oktatóanyagban véletlenszerűen rendel hozzá ikonokat a címkékhez. Beállíthatja, hogy rejtettek legyenek, majd megjelenjenek a kijelöléskor.
Ebben a második oktatóanyagban megtanulhatja, hogyan:
- Adjon hozzá egy véletlenszerű objektumot és egy ikonlistát.
- Rendeljen hozzá egy véletlenszerű ikont az egyes címkékhez.
- Adjon hozzá ikonokat megjelenítő eseménykezelőket a címkékhez.
Előfeltételek
Ez az oktatóanyag az előző oktatóanyagra épül, egyező játékalkalmazás létrehozása. Ha még nem végezte el ezt az oktatóanyagot, először ezt kell végighaladni.
Véletlenszerű objektum és ikonlista hozzáadása
Ebben a szakaszban egy megfelelő szimbólumkészletet hoz létre a játékhoz. Minden szimbólum két véletlenszerű cellához lesz hozzáadva az űrlap TableLayoutPanel elemében.
Két objektum létrehozásához new utasításokat kell használnia.
Az első egy Random objektum, amely véletlenszerűen választ ki cellákat a TableLayoutPanelben.
A második objektum egy List<T> objektum.
Tárolja a véletlenszerűen kiválasztott szimbólumokat.
Nyissa meg a Visual Studiót. A MatchingGame projekt az Legutóbbi megnyitásaalatt jelenik meg.
Válassza a Form1.cs, ha C#-ot használ, vagy Form1.vb, ha Visual Basicet használ. Ezután válassza a >Kód megtekintéselehetőséget. Másik lehetőségként válassza az F7 billentyűt, vagy kattintson duplán Form1. A Visual Studio IDE megjeleníti a Form1 kódmodulját.
A meglévő kódban adja hozzá a következő kódot.
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" };
Ha C#-ot használ, ügyeljen arra, hogy a kódot a kapcsos zárójel megnyitása után és az osztálydeklaráció (public partial class Form1 : Form) után tegye. Ha Visual Basicet használ, helyezze a kódot közvetlenül az osztálydeklaráció (Public Class Form1) után.
Listaobjektumokkal nyomon követheti a különböző típusú elemeket. A listák tartalmazhatnak számokat, igaz/hamis értékeket, szöveget vagy más objektumokat. A megfelelő játékban a listaobjektum 16 sztringet tartalmaz, egyet a TableLayoutPanel panel minden cellájához. Minden karakterlánc egyetlen karakter, amely megfelel a címkéken lévő ikonoknak. Ezek a karakterek buszként, kerékpárként és másként jelennek meg a Webdings betűtípusban.
Jegyzet
A listák szükség szerint zsugorodhatnak és növekedhetnek, ami ebben a programban fontos.
Ha többet szeretne megtudni a listákról, nézze meg a List<T>-t. Ha c#-ban szeretne egy példát látni, tekintse meg Egy egyszerű listacímű témakört. Ha egy példát szeretne látni a Visual Basicben, olvassa el Egyszerű gyűjtemény használatacímű témakört.
Véletlenszerű ikon hozzárendelése minden címkéhez
A program minden futtatásakor véletlenszerűen hozzárendeli az ikonokat az űrlap Címke vezérlőihez egy AssignIconsToSquares() metódus használatával.
Ez a kód a foreach kulcsszót használja C# vagy For Each a Visual Basicben.
Adja hozzá a
AssignIconsToSquares()metódustForm1.cs-hez vagyForm1.vb-höz./// <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); } } }
Ezt a kódot az előző szakaszban hozzáadott kód alatt adhatja meg.
Jegyzet
Az egyik sort szándékosan megjegyzésként fűzik hozzá. Ezt később adja hozzá ebben az eljárásban.
A AssignIconsToSquares() metódus végigfut a TableLayoutPanel összes címkevezérlőjén.
Mindegyikhez ugyanazokat az utasításokat futtatja.
Az utasítások véletlenszerű ikont húznak le a listáról.
- Az első sor átalakítja a vezérlő változót egy iconLabelnevű címkévé.
- A második sor egy
ifutasítás, amely ellenőrzi, hogy az átalakítás működött-e. Ha az átalakítás működik, aifutasításban lévő utasítások futnak. - A
ifutasítás első sora létrehoz egy randomNumber nevű változót, amely egy véletlenszerű számot tartalmaz, amely az ikonok listájának egyik elemének felel meg. A Next() objektum Random metódusát használja. ANextmetódus a véletlenszerű számot adja vissza. Ez a sor a Count listájának tulajdonságát is használja annak meghatározásához, hogy melyik tartományból válassza ki a véletlenszerű számot. - A következő sor hozzárendeli az egyik ikont, listaelemeket a címke Text tulajdonságához.
- A következő sor elrejti az ikonokat. A sor itt ki van kommentelve, így ellenőrizheti a kód többi részét, mielőtt folytatná.
- A
ifutasítás utolsó sora eltávolítja az űrlaphoz hozzáadott ikont a listából.
Hívás hozzáadása a
AssignIconsToSquares()metódushoz az Form1konstruktorhozForm1.cs. Ez a módszer ikonokkal tölti ki a játéktáblát. A konstruktorok meghívása objektum létrehozásakor történik.public Form1() { InitializeComponent(); AssignIconsToSquares(); }Visual Basic esetén adja hozzá a
AssignIconsToSquares()metódushívást aForm1_LoadForm1.vbmetódusához.Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load AssignIconsToSquares() End SubTovábbi információ: Konstruktorok (C# programozási útmutató) vagy Konstruktorok és destruktorok használata.
Mentse a programot, és futtassa. Az egyes címkékhez hozzárendelt véletlenszerű ikonokat tartalmazó űrlapnak kell megjelennie.
Borravaló
Ha a Webdings ikonok nem jelennek meg megfelelően az űrlapon, állítsa az űrlapon lévő címkék UseCompatibleTextRendering tulajdonságát True.
Zárja be a programot, majd futtassa újra. Minden címkéhez különböző ikonok vannak rendelve.
Az ikonok most már láthatók, mert nem rejtette el őket. Ha el szeretné rejteni őket a lejátszó elől, beállíthatja az egyes címkék ForeColor tulajdonságát a BackColor tulajdonságával megegyező színre.
Állítsa le a programot. Távolítsa el a megjegyzésjeleket a
AssignIconsToSquares()metódus hurokjában lévő megjegyzéssorhoz.iconLabel.ForeColor = iconLabel.BackColor;
Ha ismét futtatja a programot, úgy tűnik, hogy az ikonok eltűntek. Csak egy kék háttér jelenik meg. Az ikonok véletlenszerűen vannak hozzárendelve, és továbbra is ott vannak.
Eseménykezelők hozzáadása címkékhez
Ebben a megfelelő játékban egy játékos felfed egy rejtett ikont, majd egy másodikat. Ha az ikonok egyeznek, láthatóak maradnak. Ellenkező esetben mindkét ikon ismét el van rejtve.
Ahhoz, hogy a játék így működjön, adjon hozzá egy Click eseménykezelőt, amely a kiválasztott címke színét a háttérnek megfelelően módosítja.
Nyissa meg az űrlapot a Windows Forms Designer. Válassza Form1.cs vagy Form1.vb, majd válassza a Nézet>Tervező.
Válassza ki az első címkevezérlőt, majd kattintson duplán rá, hogy hozzáadjon egy
Clicknevű eseménykezelőt, a label1 _Click(), a kódhoz.Ezután tartsa lenyomva a Ctrl billentyűt, miközben kijelöli a többi címkét. Győződjön meg arról, hogy minden címke ki van jelölve.
A Tulajdonságok ablakban válassza az Események gombot, amely villámcsapás. A Kattintás eseményhez válassza a label1_Click mezőben.
Válassza az Enter billentyűt. Az IDE hozzáad egy
Clicklabel1 _Click() nevű eseménykezelőt a Form1.cs vagy Form1.vbkódhoz. Mivel az összes címkét kiválasztotta, a kezelő az egyes címkékhez van csatlakoztatva.Töltse ki a kód többi részét.
/// <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; } }
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.
Különben egy ismétlődő kódblokkba fogsz ütközni.
Válassza a Hibakeresés>Indítsa el a hibakeresést a program futtatásához. Egy üres, kék háttérrel rendelkező űrlapot kell látnia. Válassza ki az űrlap bármelyik celláját. Az egyik ikonnak láthatóvá kell válnia. Folytassa a különböző helyek kiválasztását az űrlapon. Az ikonok kiválasztásakor meg kell jelenniük.
Következő lépések
Lépjen tovább a következő oktatóanyagra, amelyből megtudhatja, hogyan módosíthatja a címkéket időzítő használatával.