Random Sınıfı ve Sayı Oyunu

Bu dersimizde Random sınıfını sayı oyununda kullanımı göreceğiz..

Öncelikle Merhabalar..

Bugünkü dersimizde random sınıfını sayı oyununu örnek verip anlatmaya çalısacağım..

Bilindiği gibi Random sınıfı rastgele sayı üretme mekanizmasıdır. Ve bu mekanizma hemen hemen her program dilinde mevcuttur.

.Net'in Random sınıfı asagıdaki gibidir:



Görüldüğü gibi iki constructor'u yani yapıcı metodu ve altı tane metodu olan bir sınıftır..

Bu Metodlar içerisinde en fazla kullanılan Next(), Next(int maxValue) ve Next (int minValue, int maxValue)..

Bu metodlarımız bize int tipinde değer döndürür..

Next(): int min den int max deger aralığında rast gele sayı ile döner..

Next(int maxValue) İçerisine int tipinde parametre alan metod.. Vereceğimiz değer alabileceği max değerdir.

Next(int minValue, int maxValue) : max ve min aralıgını biz kendimiz veriyoruz..

Örnek:



Design tasarım kısmı yukarıdakı şekil gibi olacaktır.

Öncelikle ne yapmak istiyoruz..

Projemizi çalıştırdığımız gibi form açılsın ve bilgisayar kendı kafasından bır sayı tutsun..

Random sınıfından rd diye bir nesne türettim, global olarak çünkü başka kontroller de görmek için..


Random rd = new Random();



        private void Form1_Load(object sender, EventArgs e)



        {



                     label1.Text = rd.Next(1, 50).ToString();



        }



label1'de bu değeri sakladım... "Tahmin et" butonu içerisindeki kodlar:


private void tahminEt_Click(object sender, EventArgs e)



        {



          



            try



            {



                int hak = int.Parse(textBox2.Text);



                int sayi = Convert.ToInt32(textBox1.Text);



                //



                hak++;



                textBox2.Text = hak.ToString();



                if (sayi > Convert.ToInt32(label1.Text))   //Sayı Tahmin Sayısından Büyük İse..



                {



                    listBox1.Items.Add("Sayı Büyük --> Sayıyı Küçült.. Kalan Hakkınız :" + hak);  //Sayı Tahmin Sayısından Büyük İse Cıkacak Mesaj ve ListBoxa bu sayımızı tahmın sayımızı eklettık



                    if (Convert.ToInt32(textBox2.Text) == 5)   // HaK Kontrolü



                    {                  



                       button1.Enabled = false;



                       MessageBox.Show("  Hakkınız Dolmustur Lütfen 30 Saniye Bekledikten Sonra Yeniden Baslatınız");



                       System.Threading.Thread.Sleep(30000);



                    }



                }



                else



                    if (sayi < Convert.ToInt32(label1.Text))



                    {



                        listBox1.Items.Add("Sayı Küçük --> Sayıyı Büyült..Kalan Hakkınız :" + hak);//Sayı Tahmin Sayısından Küçük İse Cıkacak Mesaj



                        if (Convert.ToInt32(textBox2.Text) == 5)   // HaK Kontrolü



                        {



                            button1.Enabled = false;



                            MessageBox.Show("  Hakkınız Dolmustur Lütfen 30 Saniye Bekledikten Sonra Yeniden Baslatınız");



                            System.Threading.Thread.Sleep(30000);



                        }



                    }



                    else



                        if (sayi == Convert.ToInt32(label1.Text))



                        {



                            int puan = (100 -(hak*15));



                            listBox1.Items.Add(("Tebrikler " + hak + " hakda Bildiniz --> Puanınız :" + puan));



                         



                            button1.Enabled = false;



                        }



            }



            catch



            {



                MessageBox.Show("Lütfen Tahmin Yerine Tahmin Ettiğiniz Sayıyı Giriniz");



            }



            //Son Uyarının Belli Olması İçin



            listBox1.SelectedIndex = listBox1.Items.Count - 1;



        }



Ve düşündüm ki, kullanıcıya bir hak olayı verelim, yani 3 defadan fazla girdiğinde sistem bloke olsun ve tekrara başlasın..

O bakımdan kodlarımın içinde int tipinde bir hak aldım. Tabi bunu byte almak daha mantıklıdır.

Vazgeçilmeyen kontrol yapılarımdan olan Try-Catch blogunu kullandım ki, kullanıcı rakam gireceği textBox'a sayı dışında karakter giremesin.

Hak veya doğru cevaptan sonra oyunun tekrar başlaması için Başlat butonumun içine:


private void btnBaslat_Click(object sender, EventArgs e)



        {



            listBox1.Items.Clear();



            textBox1.Clear();



            textBox2.Text = "0";



            button1.Enabled = true;



        }



Başlat butonununa tıklandığında listBox ve textBox'ımı temizledim ve tahmin değerime 0 atayıp "Tahmin Et" butonumu aktif yaptım.

Kolay gelsin.
  • Etiketler;
Aztucomputer Aztucomputer
Bilgiyi Paylasmak Kayıp Deil Kazanmanı Max Noktası
Yorum Yaz

Yorum yazabilmek için üye girişi yapmanız gerekiyor!

Yukarı Git