Megosztás a következőn keresztül:


Oktatóanyag: Üzenet megjelenítése a megfelelő Játék WinForms-alkalmazásban

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.

Ebben az oktatóanyagban módosítja a memóriajátékot úgy, hogy az összepárosított kártyák láthatók maradjanak, és amikor egy játékos nyer, egy gratuláló üzenet jelenjen meg.

Ebben az oktatóanyagban a következőket sajátíthatja el:

  • Tartsa láthatóan a párokat.
  • Ellenőrizze, hogy egy játékos nyert-e.
  • Próbálkozzon más funkciókkal.

Előfeltételek

Ez az oktatóanyag az alábbi korábbi oktatóanyagokra épül:

  1. Egyező játékalkalmazás létrehozása
  2. Ikonok hozzáadása a megfelelő játékhoz
  3. Időzítő hozzáadása a megfelelő játékhoz

A párok láthatónak tartása

Ha egy játékos egyezik egy pártal, a játéknak alaphelyzetbe kell állítania magát, hogy többé ne kövesse nyomon a firstClicked és secondClicked referenciaváltozókat használó címkéket. Nem állíthatja vissza a két megfelelt címke színeit. Ezek a címkék továbbra is megjelennek.

  1. Adja hozzá az alábbi if utasítást az label_Click() eseménykezelő metódushoz. Helyezze el a kód végéhez közel, közvetlenül az időzítő kezdő utasítása fölé.
        // 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();
    }
}

A if utasítás ellenőrzi, hogy a játékos által kiválasztott első címke ikonja megegyezik-e a második címkén szereplő ikonnal. Ha az ikonok megegyeznek, a program a három utasítást futtatja. Az első két utasítás alaphelyzetbe állítja a firstClicked és secondClicked referenciaváltozókat. Már nem követik nyomon a címkéket. A harmadik utasítás egy return utasítás, amely futtatás nélkül kihagyja a metódus többi utasítását.

  1. Futtassa a programot, majd kezdje el a négyzetek kiválasztását az űrlapon.

Képernyőkép az oktatóanyagban létrehozott egyező játékról.

Ha olyan párt választ, amely nem egyezik, aktiválódik az időzítő Tick eseménye. Mindkét ikon eltűnik.

Ha megfelelő párt választ, az új if utasítás lefut. A visszatérési utasítás miatt a metódus kihagyja az időzítőt indító kódot. Az ikonok láthatók maradnak.

Ellenőrizze, hogy egy játékos nyert-e

Létrehozott egy szórakoztató játékot. Miután egy játékos nyert, a játéknak véget kell vetnie. Ez a szakasz egy metódust ad hozzá annak ellenőrzéséhez, hogy a játékos nyert-e.

  1. Adjon hozzá egy CheckForWinner() metódust a kód aljára, az timer1_Tick() eseménykezelő alá.
/// <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();
}

A metódus egy másik foreach C# vagy For Each Visual Basic ciklust használ a TableLayoutPanelminden címkéjén való áthaladáshoz. Ellenőrzi az egyes címkék ikonszínét annak ellenőrzéséhez, hogy egyezik-e a háttérrel. Ha a színek egyeznek, az ikon láthatatlan marad, és a játékosnak még nem sikerült az összes többi ikont párosítania.

Ebben az esetben a program egy return utasítással kihagyja a metódus többi részét. Ha a hurok az return utasítás végrehajtása nélkül lépi át az összes címkét, az azt jelenti, hogy az űrlap összes ikonja megfelelt. A program egy MessageBox-t jelenít meg, amely gratulál a játékosnak a győzelemhez, és meghívja a Close() metódust a játék befejezéséhez.

  1. A címke Click eseménykezelője hívja meg az új CheckForWinner() metódust.
// 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;
}

Győződjön meg arról, hogy a program közvetlenül azután keres győztest, hogy megjelenik a játékos által választott második ikon. Keresse meg azt a sort, amelyben a második kiválasztott ikon színét állítja be, majd hívja meg a CheckForWinner() metódust közvetlenül a sor után.

  1. Mentse és futtassa a programot. Játssz a játékkal, és párosítsd össze az összes ikont. Ha nyer, a program egy gratuláló üzenetet jelenít meg.

    Képernyőkép a Matching játék egy üzenetdobozzal való megjelenítéséről.

    Miután kiválasztotta az OK, a Párosító Játék bezárul.

Egyéb funkciók kipróbálás

Az Ön párosító játéka befejeződött. További jellemzőket is hozzáadhat, hogy a játék nagyobb kihívást és érdekesebb legyen. Íme néhány lehetőség.

  • Cserélje le az ikonokat és a színeket a kiválasztottakra.

    Tekintse meg a címke ForeColor tulajdonságát.

  • Adjon hozzá egy játék időzítőt, amely nyomon követi, hogy mennyi ideig tart a játékos nyerni.

    Hozzáadhat egy címkét az űrlapon eltelt idő megjelenítéséhez. Helyezze a TableLayoutPanelfelé. Adjon hozzá egy másik időzítőt az űrlaphoz az idő nyomon követéséhez. Kóddal indítsa el az időzítőt, amikor a játékos elindítja a játékot, és állítsa le az időzítőt, miután azok megegyeznek az utolsó két ikonnal.

  • Adjon hozzá egy hangot, amikor a játékos talál egyezést, egy másik hangot, amikor a játékos felfed két ikont, amelyek nem egyeznek, és egy harmadik hang, amikor a program elrejti az ikonokat újra.

    A hangok lejátszásához használhatja a System.Media névteret. További információkért lásd: Hangok lejátszása a Windows Forms alkalmazásban (C#) vagy Hangok lejátszása a Visual Basic-ben.

  • Nehezítsd meg a játékot úgy, hogy a táblát nagyobbra méretezed.

    Nem csak sorokat és oszlopokat kell hozzáadnia a TableLayoutPanelhez. Figyelembe kell vennie a létrehozott ikonok számát is.

  • A játék nagyobb kihívást jelent az első ikon elrejtésével, ha a játékos túl lassú ahhoz, hogy válaszoljon.

Következő lépések

Gratulálok! Elvégezte ezt az oktatóanyag-sorozatot. Ezeket a programozási és tervezési feladatokat a Visual Studio IDE-ben végezte el:

  • Tárolt objektumok, például ikonok egy listában
  • Használjon ciklust C#-ban vagy Visual Basic-ben, hogy iteráljon egy listán.
  • Az állapot nyomon követése referenciaváltozók használatával
  • Eseménykezelő létrehozása több objektum eseményeire való reagáláshoz
  • Hozzáadtunk egy időzítőt, amely leszámlál és aktivál egy eseményt

Ebben a cikkben részletesen megismeri a Windows Forms Designert.