25 Ocak 2013

C#'la Random Resim Seçme Oyunu

Merhaba arkadaşlar;

Bu yazımda kodladığım ufak bir oyunu sizlerle paylaşacağım. C#'a benim gibi yeni başlayanlar için bu tarz programlar yazmak meşhurdur. Ben de yardımcı olabileceğini düşündüm uygulamamın.

Oyunun içeriği şöyle; 3 tane resim kutusu olacak ve kullanıcı "Play" butonuna tıklayınca bu kutular içindeki resimler sürekli değişmeye başlayacak. Kullanıcı "Stop" butonuna tıkladığında resimler duracak ve 3'ü de aynıysa kullanıcı kazanacak. Eğer farklılarsa kaybedecek. Önce formumu nasıl oluşturduğuma dair kısa bir açıklama yapıp kodlara geçeceğim.


Yukarıda görüldüğü gibi bir Label içinde oyunun kurallarını belirledim kısaca. Altında 3 tane PictureBox var ve de 2 tane butonum var. Butonların biri oyunu başlatacak, diğeri dönen resimleri durduracak. Ek olarak bir de Timer ekledim, çünkü resimler dönerken işimize yarayacak.

Kodlara geçecek olursam, Timer'ın Tick olayını aşağıdaki gibi kodladım. Önce resimleri tutacak bir ArrayList tanımı ve random değişecek resimler için random türden bir tanımlama yapıyoruz. Tanımladığımız ArrayList türden images adlı nesneye Add methodu ile resimleri ekliyoruz. ImageLocation'lara da bu listenin elemanlarından random olarak atama yapıyoruz.

        private void timer1_Tick(object sender, EventArgs e)
        {
            ArrayList images = new ArrayList();
            Random r = new Random();

            images.Add(@"caıllou.jpg");
            images.Add(@"cedric.jpg");
            images.Add(@"pepee.jpg");

            pictureBox1.ImageLocation = (string)images[r.Next(0, 3)];
            pictureBox2.ImageLocation = (string)images[r.Next(0, 3)];
            pictureBox3.ImageLocation = (string)images[r.Next(0, 3)];
        }

Timer her çalıştığında bu görevi yerine getirecek. Şimdi ise "Play" butonuna tıklandığında neler olacağını yazalım. Timer'a aralık verelim ve butona tıklandığında çalışmaya başlasın.

        private void buttonPlay_Click(object sender, EventArgs e)
        {
            timer1.Interval = 100;
            timer1.Start();
        }

Böylelikle eklenen resimler dönmeye başlar yani saniyede 10 defa resimler değişir.

Aşağıda da "Stop" butonuna basıldığında yapılacaklar var. Timer durur ve dolayısıyla resimlerin sürekli değiştirilmesi işlemi de durur. Resimlerin 3'ü de aynıysa kullanıcı kazanıyor ve kazandı mesajı veriliyor ve ayrıca hangi resimle kazandığını belirtiyoruz. Eğer farklılarsa kaybetme mesajı ile birlikte sırayla hangi resimlerin geldiğini de belirtiyoruz. Kodlar: 

        private void buttonStop_Click(object sender, EventArgs e)
        {
            timer1.Stop();

            if (pictureBox1.ImageLocation == pictureBox2.ImageLocation &&                    pictureBox1.ImageLocation == pictureBox3.ImageLocation)
            {
                MessageBox.Show("Congratulations. You won! " + " -- " +   pictureBox1.ImageLocation);
            }

            else
                MessageBox.Show("Sorry. You did not win! -- " + pictureBox1.ImageLocation + " -- " + pictureBox2.ImageLocation + " -- " + pictureBox3.ImageLocation);
        }



Ben oynadığımda bu geldi :)  Umarım bu yazının yararının dokunacağı birileri vardır.

İyi kodlamalar.


Hiç yorum yok:

Yorum Gönder