Menü Kapat

C# ile Sayı Tahmin Oyunu Yapımı

Merhaba arkadaşlar, bu yazımda diğer yazılarımdan farklı olarak bir oyun yapımını anlatacağım. C# ile bir sayı tahmin oyunu yapacağız. Oyunda, bilgisayar belirleyeceğimiz aralıkta rastgele bir sayı tutacak ve biz de bu tuttuğu sayıyı tahmin etmeye çalışacağız. Tahmin ettiğimiz sayı bilgisayarın tuttuğu sayıdan küçükse “sayıyı büyültünüz”, büyükse “sayıyı küçültünüz” diye mesaj verdireceğiz. Ayrıca bir label’de de tahmin sayısını tutacağız. Her yanlış tahmin sayısında oyuncuya başlangıçta vermiş olduğumuz puan üzerinden düşüş yapacağız. Oyuncuya başlangıç olarak 1000 puan verdim ben. Her yanlış tahminde 10 puan düşürdüm. Rastgele sayı aralığını da 1-100 olarak belirledim.

Şimdi oyunumuzu tasarlamaya geçebiliriz. Visual Studio programını açalım ve aşağıdaki gibi bir form tasarlayalım.

Oyunda ilk açılışta tahmin et butonu pasif olarak gelsin istiyorum. Başla butonuna bastıktan sonra aktif hale gelmesini sağlayacağız. Ayrıca ilk açılışta tahmin sayısını sıfır ve puanı 1000 yapıyorum. Bu değerleri açılışta ayarlamak için kodlarımızı form load’a yazmamız gerekiyor. Kodlarımız aşağıdaki gibi olacaktır;

Form Load

private void Form1_Load(object sender, EventArgs e)
        {
            button1.Enabled = false;
            label7.Text = "1000";
            label5.Text = "0";
            label3.Text = "";
        }

Burada label’lere isim vermediğimiz için anlamakta zorlanabilirsiniz. Ama biraz dikkatli bakınca hangi label’in hangi değeri temsil ettiğini anlayacaksınız. Şimdi “Başla” butonunun kodlarını yazalım.

Başla Butonu

int sayi;
private void button2_Click(object sender, EventArgs e)
        {
            button1.Enabled = true;
            button2.Enabled = false;
            Random r = new Random();
            sayi = r.Next(100);     
        }

Başla butonuna basıldığında “Tahmin Et” butonu aktif, “Başla” butonu pasif olacak. İnteger tipinde tanımladığımız “sayi” değişkenine 1-100 arasında rastgele tutulacak değeri atayacağız. Şimdi de “Tahmin Et” butonunun kodlarını yazalım. Asıl olay burada başlıyor. Kodlar aşağıdaki gibi olacaktır. Açıklamasını kodun altına yapacağım.

Tahmin Et Butonu

private void button1_Click(object sender, EventArgs e)
        {
            int tahminsayisi, puan, tahmin;
            try
            {
                tahmin = int.Parse(textBox1.Text);
            }
            catch
            {
                MessageBox.Show("Hatalı Sayı Girdiniz");
                return;
            }
            tahminsayisi = int.Parse(label5.Text);
            tahminsayisi ++;
            label5.Text = tahminsayisi.ToString();

            puan = int.Parse(label7.Text);
            puan = puan - (tahminsayisi -1) * 10;
            label7.Text = puan.ToString();
            if (sayi < tahmin)
                label3.Text = "Sayıyı Küçültünüz !";
            else if (sayi > tahmin)
                    label3.Text = "Sayıyı Büyültünüz !";
            else
            {
                label3.Text = "TEBRİKLER! " + label5.Text + " defada bilip " + label7.Text + " puan aldınız.";
                button2.Enabled = true;
                button1.Enabled = false;
            }
            textBox1.Text = "";
        }

Şimdi burada temel olarak tahmin sayısı, puan ve tahmin adında üç tane int tipinde değişken oluşturduk. Tahmin değişkenine textbox içindeki string değeri int.Parse ile int yaparak atadık. Ayrıca try catch yardımıyla harf girilmesini kontrol ettirdik. Tahmin sayısı değişkenini de formda yerini belirlediğimiz label’e eşitledik. Ve her yanlış tahminde birer birer artmasını sağladık. Puanı da her yanlış tahminde toplam puandan tahmin sayısı*10 çıkararak belirledik. İlk yanlış tahminde puan kesilmeyecek. Son olarak da bilgisayarın tuttuğu sayı ile bizim tahmin ettiğimiz sayısı karşılaştırdık.

Çıkış butonunun kodu da aşağıdaki gibi olacaktır.

private void button3_Click(object sender, EventArgs e)
        {
            Close();
        }

Oyun genel olarak böyle arkadaşlar. Aşağıda oyunun oynanmış ekran görüntüsü mevcuttur.

Sonraki yazılarımda görüşmek dileğiyle, iyi kodlamalar.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.