• 3 Aralık 2024 21:56

Sait ORHAN

Öğretmek için Öğrenin- Öğrenmek için Öğretin

Tarlanın (Butonların) Hazırlanması

BySait ORHAN

Eki 21, 2014

Mayın tarlası oyunumuzun kodlamasına 10×10 boyutunda bir butonlar panelini oluşturarak başlayalım. Bunun için yüz adet butonu sürükle bırak yöntemi ile oluşturmak tabi ki çok zor. Bundan dolayı bu butonları bir for döngüsü ile oluşturup panelimize ekleyeceğiz.

    Butonları yerleştirmek için form üzerine 500×500 boyutunda bir panel ekleyelim.

[csharp]
for (int i = 0; i < 10; i++)
{
for (int j = 0; j < 10; j++)
{
Button b=new Button();
b.Name = "_" + i + "" + j;
b.Size=new Size(50,50);
b.Text = "*";
b.TextAlign=ContentAlignment.MiddleCenter;
b.Location=new Point(i*50,j*50);
b.Tag = "-";
panelTarla.Controls.Add(b);
}
}

[/csharp]

Buradaki i sayısı üzerine dönen for butonun satırını, j sayısı üzerinde dönen for döngüsü ise sütun sayısını ifade eder. Burada, butonun mayın olup olmadığını Tag özelliğine atayacağımız işaret ile sorgulayacağız. Tag özelliği bir nevi cep görevi görür kontrollerde, içine object türünde nesne alır.  Başlangıçta bütün butonları temiz anlamında “-” işareti ile işaretleyelim. Butonun yerini de Location özelliği ile belirliyoruz ve son adım olarak oluşturduğumuz butonu panelTarla.Controls.Add(b) satırı ile panele ekliyoruz.

        Tarlaya yerleştirilen butonlar içinden mayın olanların belirlenmesi:

[csharp]
int s = 0;
while (s < 10)
{
Random r = new Random();
int sayi = r.Next(0, 100);
int satir = sayi%10;
int sutun = sayi/10;
Button button = panelTarla.Controls["_" + satir + "" + sutun] as Button;

if ((string) button.Tag=="-")
{
button.Tag = "+";
s++;
}
}

[/csharp]

Burada, “Button button = panelTarla.Controls[“_” + satir + “” + sutun] as Button” satırı ile satır ve sutuna göre adı belirlenen kontrolu buton olarak alıyoruz ve bu butonun Tag özelliği “-” ise mayına çevirmek adına “+” işareti ile değiştiriyoruz ve s sayısını arttırıyoruz böylece tarlaya rastgele on adet mayın döşemiz oluruz.

https://github.com/saitorhan/mayintarlasi

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Bu site, istenmeyenleri azaltmak için Akismet kullanıyor. Yorum verilerinizin nasıl işlendiği hakkında daha fazla bilgi edinin.