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 oyunda, bir oyuncu simgeyi görmek için bir kare seçer, sonra başka bir kare seçer. Simgeler eşleşiyorsa görünür kalır. Değilse, oyun her iki simgeyi de gizler. Bu öğreticide, etiketlere simgeleri rastgele atarsınız. Bunları gizlenecek ve seçildiğinde görüntülenecek şekilde ayarlarsınız.
Bu ikinci öğreticide şunların nasıl yapılacağını öğreneceksiniz:
- Rastgele bir nesne ve simge listesi ekleyin.
- Her etikete rastgele bir simge atayın.
- Etiketlere simgeler gösteren olay işleyicileri ekleyin.
Önkoşullar
Bu öğretici, önceki öğretici 'a dayanmaktadır;'de bir eşleştirme oyunu uygulaması oluşturma öğretilmiştir. O öğreticiyi yapmadıysanız, önce o öğreticiyi bitirin.
Rastgele nesne ve simge listesi ekleme
Bu bölümde, oyun için eşleşen semboller kümesi oluşturacaksınız. Her simge, formdaki TableLayoutPanel içindeki iki rastgele hücreye eklenir.
İki nesne oluşturmak için new deyimlerini kullanırsınız.
Birincisi, TableLayoutPanel içindeki hücreleri rastgele seçen bir Random nesnesidir.
İkinci nesne bir List<T> nesnesidir.
Rastgele seçilen simgeleri depolar.
Visual Studio'yu açın. MatchingGame projeniz Son açılanlaraltında görünür.
C# kullanıyorsanız Form1.cs veya Visual Basic kullanıyorsanız Form1.vb'ı seçin. Ardından Görüntüle>Koduseçin. Alternatif olarak, F7 anahtarını seçin veya Form1'e çift tıklayın. Visual Studio IDE, Form1 için kod modülünü görüntüler.
Mevcut koda aşağıdaki kodu ekleyin.
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" };
C# kullanıyorsanız, kodu küme ayracı açıldıktan sonra ve sınıf bildiriminden hemen sonra (public partial class Form1 : Form) yerleştirdiğinizden emin olun. Visual Basic kullanıyorsanız, kodu sınıf bildiriminden hemen sonra yerleştirin (Public Class Form1).
Farklı öğe türlerini izlemek için liste nesnelerini kullanabilirsiniz. Liste sayıları, doğru/yanlış değerleri, metinleri veya diğer nesneleri barındırabilir. Eşleştirme oyununuzda, list nesnesinin TableLayoutPanel panelindeki her hücre için bir tane olan 16 dizesi vardır. Her dize, etiketlerdeki simgelere karşılık gelen tek bir harftir. Bu karakterler Webdings yazı tipinde otobüs, bisiklet ve diğer semboller olarak görünür.
Not
Listeler gerektiğinde küçülebilir ve büyüyebilir; bu programda önemlidir.
Listeler hakkında daha fazla bilgi edinmek için bkz. List<T>. C# dilinde bir örnek görmek için bkz. Temel liste örneği. Visual Basic'te bir örnek görmek için bkz. Basit Koleksiyon Kullanma.
Her etikete rastgele bir simge atama
Programı her çalıştırdığınızda, bir AssignIconsToSquares() yöntemi kullanarak simgeleri formunuzun Etiket denetimlerine rastgele atar.
Bu kod, C# dilinde anahtar sözcük foreach veya Visual Basic'te For Each kullanır.
AssignIconsToSquares()yönteminiForm1.csveyaForm1.vbekleyin./// <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); } } }
Bu kodu önceki bölümde eklediğiniz kodun hemen altına girebilirsiniz.
Not
Satırlardan biri bilerek yorumlanır. Bu prosedürde daha sonra eklersiniz.
AssignIconsToSquares() yöntemi TableLayoutPanel içindeki her etiket denetiminde yinelenir.
Her biri için aynı ifadeleri çalıştırır.
İfadeler, listeden rastgele bir simge seçer.
- İlk satır, denetimi değişkenini iconLabeladlı etikete dönüştürür.
- İkinci satır, dönüştürmenin çalıştığından emin olmak için denetleen bir
ifdeyimidir. Eğer dönüştürme işe yararsa,ififadesindeki ifadeler çalıştırılır. -
ifdeyimindeki ilk satır, simgeler listesindeki öğelerden birine karşılık gelen rastgele bir sayı içeren randomNumber adlı bir değişken oluşturur. Next() nesnesinin Random yöntemini kullanır.Nextyöntemi rastgele sayıyı döndürür. Bu satır, rastgele sayının seçileceği aralığı belirlemek için Count listesinin özelliğini de kullanır. - Sonraki satır, liste öğeleri simgelerinden birini etiketin Text özelliğine atar.
- Sonraki satır simgeleri gizler. Devam etmeden önce kodun geri kalanını doğrulayabilmeniz için satıra burada açıklama eklenir.
-
ifdeyimindeki son satır, forma eklenen simgeyi listeden kaldırır.
AssignIconsToSquares()içinde, Form1oluşturucu'e,Form1.csyöntemine bir çağrı ekleyin. Bu yöntem oyun tahtasını simgelerle doldurur. Bir nesne oluşturduğunuzda oluşturucular çağrılır.public Form1() { InitializeComponent(); AssignIconsToSquares(); }Visual Basic için,
AssignIconsToSquares()yöntem çağrısınıForm1_LoadiçindekiForm1.vbyöntemine ekleyin.Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load AssignIconsToSquares() End SubDaha fazla bilgi için bkz. Oluşturucuları (C# programlama kılavuzu) veya Oluşturucuları ve yıkıcılarıkullanma.
Programınızı kaydedin ve çalıştırın. Her etikete rastgele simgelerin atandığı bir form göstermelidir.
Bahşiş
Webdings simgeleri formda düzgün görüntülenmiyorsa, formdaki etiketlerdeki UseCompatibleTextRendering özelliğini Trueolarak ayarlayın.
Programınızı kapatın ve yeniden çalıştırın. Her etikete farklı simgeler atanır.
Simgeleri gizlemediğiniz için artık görünür durumdadır. Bunları oynatıcıdan gizlemek için, her etiketin ForeColor özelliğini BackColor özelliğiyle aynı renge ayarlayabilirsiniz.
Programı durdurun.
AssignIconsToSquares()yöntemindeki döngünün içindeki açıklama satırı için açıklama işaretlerini kaldırın.
Programı yeniden çalıştırırsanız simgeler kaybolmuş gibi görünür. Yalnızca mavi bir arka plan görüntülenir. Simgeler rastgele atanır ve hala oradadır.
Etiketlere olay işleyicileri ekleme
Bu eşleştirme oyununda, bir oyuncu ilk olarak gizli bir simgeyi ve ardından ikinci bir simgeyi ortaya çıkarır. Simgeler eşleşiyorsa görünür kalır. Aksi takdirde, her iki simge de yeniden gizlenir.
Oyununuzun bu şekilde çalışmasını sağlamak için, seçilen etiketin rengini arka planla eşleşecek şekilde değiştiren bir Click olay işleyicisi ekleyin.
Windows Forms Designeriçinde formu açın. Form1.cs veya Form1.vbseçin ve ardından Görünüm>Designerseçeneğini belirleyin.
İlk etiket denetimini seçip çift tıklayarak koda
Clickadlı bir olay işleyicisi ekleyin.Ardından, diğer etiketlerin her birini seçerken Ctrl tuşunu basılı tutun. Her etiketin seçili olduğundan emin olun.
Özellikler penceresinde, şimşek olan Olaylar düğmesini seçin. tıklayın olayı için kutuda label1_Click seçin.
Enter anahtarını seçin. IDE,
Clickveya Form1.vbiçindeki koda label1 _Click() adlı bir olay işleyicisi ekler. Tüm etiketleri seçtiğinizden, işleyici etiketlerin her birine bağlı olur.Kodun geri kalanını doldurun.
/// <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; } }
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ı çalıştırmak için Hata Ayıklama>Hata Ayıklamayı Başlat seçin. Mavi arka planlı boş bir form görmeniz gerekir. Formdaki hücrelerden herhangi birini seçin. Simgelerden biri görünür hale gelmelidir. Formda farklı yerler seçmeye devam edin. Simgeleri seçtikçe görünmelidir.
Sonraki adımlar
Zamanlayıcı kullanarak etiketleri değiştirmeyi öğrenmek için sonraki öğreticiye ilerleyin.
Eşleştirme Oyunu zamanlayıcı kullanın