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.
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:
- Egyező játékalkalmazás létrehozása
- Ikonok hozzáadása a megfelelő játékhoz
- 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.
- Adja hozzá az alábbi
ifutasítást azlabel_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.
- Futtassa a programot, majd kezdje el a négyzetek kiválasztását az űrlapon.
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.
- Adjon hozzá egy
CheckForWinner()metódust a kód aljára, aztimer1_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.
- 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.
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.
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.