Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Dört öğreticiden oluşan bu seride, oyuncunun gizli simge çiftleriyle eşleştiği bir eşleştirme oyunu oluşturursunuz.
Eşleşen Oyun programınızın, oyuncunun hangi Etiket denetimini seçtiğini izlemesi gerekir. Bir oyuncu ilk etiketi seçtikten sonra, program simgeyi göstermelidir. İkinci etiket seçildikten sonra, program kısa bir süre için her iki simgeyi de görüntülemelidir. Ardından iki simgeyi de gizler.
Programınız, ilk ve ikinci seçtiğiniz Etiketi, başvuru değişkenlerini kullanarak izler. Zamanlayıcı simgeleri gizler ve simgelerin ne kadar süre göstereceğini denetler
- Etiket referansları ekleyin.
- Zamanlayıcı ekleyin.
Önkoşullar
Bu öğretici önceki öğreticiler, Eşleşen bir oyun uygulaması oluşturma ve eşleşen oyunsimgeleri ekleme konularını temel alır. Önce bu dersleri tamamlayın.
Etiket referansları ekle
Bu bölümde, kodunuza iki başvuru değişkeni ekleyeceksiniz. Etiket nesnelerini takip eder veya onlara başvurur.
"
Form1.csveyaForm1.vbiçinde aşağıdaki kodu kullanarak formunuza etiket başvuruları ekleyin."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;
C# kullanıyorsanız, kodu küme ayracı açmadan sonra ve sınıf bildiriminden hemen sonra (public partial class Form1 : Form) koyun. Visual Basic kullanıyorsanız, kodu sınıf bildiriminden hemen sonra yerleştirin (Public Class Form1).
new anahtar sözcüğü olmadığından bu deyimler Formda Etiket denetimlerinin görünmesine neden olmaz.
Program başlatıldığında hem firstClicked hem de secondClicked C# için null veya Visual Basic için Nothing olarak ayarlanır.
yeni Click başvuru değişkenini kullanmak için
Form1.csveyaForm1.vbfirstClickedolay işleyicinizi değiştirin.label1_Click()olay işleyici yöntemindeki (clickedLabel.ForeColor = Color.Black;) son deyimini kaldırın ve aşağıdaki gibiifdeyimiyle değiştirin./// <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; } } }
Programınızı kaydedin ve çalıştırın. Etiket denetimlerinden birini seçtiğinizde simgesi görüntülenir. Sonraki etiket denetimini seçin ve hiçbir şey olmadığını fark edeceksiniz.
Yalnızca seçilen ilk simge görüntülenir. Diğer simgeler görünmez.
Program zaten oyuncunun seçtiği ilk etiketi takip ediyor.
Referans firstClicked C# içinde null veya Visual Basic içinde Nothing değildir.
if deyiminiz firstClickednull veya Nothingeşit olmadığını bulduğunda deyimleri çalıştırır.
Zamanlayıcı ekleme
Matching Game uygulaması bir Timer denetimi kullanır. Zamanlayıcı bekler ve ardından tikolarak adlandırılan bir olayı tetikler. Zamanlayıcı bir eylemi başlatabilir veya bir eylemi düzenli olarak yineleyebilir.
Programınızda zamanlayıcı, bir oyuncunun iki simge seçmesini sağlar. Simgeler eşleşmiyorsa, kısa bir süre sonra iki simgeyi yeniden gizler.
Araç Kutusu sekmesini seçin, Bileşenler kategorisinde Zamanlayıcı bileşenine çift tıklayın veya formunuza sürükleyin. süreölçer1 olarak adlandırılan zamanlayıcı simgesi, formun altındaki bir alanda görünür.
Zamanlayıcıyı seçmek için Timer1 simgesini seçin. özellikleri görüntülemek için Özellikler penceresinde Özellikler düğmesini seçin.
Interval özelliğini 750 milisaniye olan 750olarak ayarlayın.
Aralığı özelliği, zamanlayıcıya olayını tetiklediğinde Tickarasında ne kadar bekleyeceğini bildirir. Programınız, oynatıcı ikinci etiketi seçtikten sonra zamanlayıcıyı başlatmak için Start() yöntemini çağırır.
Zamanlayıcı denetimi simgesini seçin ve Entertuşuna basın veya zamanlayıcıya çift tıklayın. IDE,
Form1.csveyaForm1.vbiçin boş bir Tick olay işleyicisi ekler. Kodu aşağıdaki kodla değiştirin./// <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; }
Tick olay işleyicisi üç şey yapar:
- Stop() yöntemini çağırarak zamanlayıcının çalışmamasını sağlar.
- Oyuncunun seçtiği iki etiketin simgelerini yeniden görünmez hale getirmek için
firstClickedvesecondClickedolmak üzere iki başvuru değişkeni kullanır. -
firstClickedvesecondClickedbaşvuru değişkenlerini C# dilindenullve Visual Basic'teNothingolarak sıfırlar.
Kod düzenleyicisine gidin ve
label1_Click()veyaForm1.csForm1.vbolay işleyicisi yönteminin en üstüne ve altına kod ekleyin. Bu kod zamanlayıcının etkinleştirilip etkinleştirilmediğini denetler,secondClickedbaşvuru değişkenini ayarlar ve zamanlayıcıyı başlatır.label1_Click()olay işleyici yöntemi şimdi aşağıdaki gibi görünür:/// <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(); } }
- Yöntemin en üstündeki kod, Enabled özelliğinin değerini denetleyerek zamanlayıcının başlatılıp başlatılmadığını denetler. Oynatıcı birinci ve ikinci Etiket denetimlerini seçerse ve zamanlayıcı başlatılırsa, üçüncü bir etiket seçmek hiçbir şey yapmaz.
- Yöntemin en altındaki kod, ikinci Etiket denetimini izlemek için
secondClickedbaşvuru değişkenini ayarlar. Ardından, bu etiket simgesinin rengini görünür hale getirmek için siyah olarak ayarlar. Ardından, zamanlayıcıyı tek seferlik modda başlatır, böylece 750 milisaniye bekler ve ardından tek bir tik oluşturur. Zamanlayıcının Tick olay işleyicisi iki simgeyi gizler vefirstClickedvesecondClickedbaşvuru değişkenlerini sıfırlar. Form, oyuncunun başka bir simge çifti seçmesi için hazırdır.
Not
Kodu el ile girmek yerine label1_Click() kod bloğunu kopyalayıp yapıştırırsanız, var olan label1_Click() kodunu değiştirmeyi unutmayın.
Aksi takdirde, yinelenen bir kod bloğuyla karşınıza çıkar.
- Programınızı kaydedin ve çalıştırın. Bir kare seçtiğinizde simge görünür hale gelir. Başka bir kare seçin. Simge kısa bir süre görüntülenir ve her iki simge de kaybolur.
Programınız artık seçtiğiniz birinci ve ikinci simgeleri izler. Simgelerin kaybolmasına neden olmadan önce duraklatmak için zamanlayıcıyı kullanır.
Sonraki adımlar
Eşleştirme Oyununuzu nasıl bitireceğinizi öğrenmek için sonraki öğreticiye geçin.