Anasayfa / Yazılım / C# / C# Bilge Adam Introduction Ödevleri – Slot Oyunu

C# Bilge Adam Introduction Ödevleri – Slot Oyunu

C# intro seviyesini geçtikten sonra yaptığımız ödevlerden.. Slot Oyunu..

İstenen : Slot makinesi için bizden istenen programda müşterinin değil bizim kazanmamız. Bunu da şu şekilde yapıyoruz, kullanıcılar oynamak için kasaya 1 jeton atmak zorundalar. Kasanın içindeki jeton sayısı 10’dan küçükse asla müşteri kazanmayacak. 10’dan fazla ise daha önceden para verip vermediğimiz kontrol edilecek, eğer para vermemişse müşterinin kazanma şansı %20 olacak, vermişse %5 olacak..

Ben birde ekstradan kazanmayı görmek için 23 jeton var iken kesin kazandırdım..

Kodları kopyalamaktan ziyade, bir fikir edinmenizi öneririm. :)

Proje Açık kaynak kodlarını istiyor iseniz lütfen gursoyismail@yahoo.com adresine isteğinizi belirtir mail atınız.

Ya da aşağıdaki linkten indirebilirsiniz..

{filelink=6}

Visual Studio 2012 kullananlar aşağıdaki linki tercih etsinler.

Kodlar ve açıklamaları :

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace SLOT
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        } 

       // Tanımlamalarım..

        int jetonsayisi = 0;
        int kasadakipara = 0;
        Random rnd = new Random();
        int index = 0;
        int kesinkazan;
        int resim1, resim2, resim3 = 0;
        int kazanilanpara = 0;
        int harcanilanpara = 0;
        
        System.Media.SoundPlayer ses = new System.Media.SoundPlayer();

        void sonuckontrol()
            {

            /* Sonuç kontrol kısmım eğer tek resim geldi ise uzun kahkaha, iki resim aynı geldi ise kısa kahkaha, hepsi aynı ise alkış karar
             * mekanizmasını burada tanımlıyorum.
             */
          
                
            if (resim1 == resim2 && resim2 == resim3)
            {
                ses.SoundLocation = Application.StartupPath + "\\ALKIS.wav";
                ses.Play();
                label6.Text = "Kasadaki " + kasadakipara.ToString() + "TL'yi kazandınız";
                kazanilanpara = kazanilanpara + kasadakipara;
                label12.Text = kazanilanpara.ToString();
                kasadakipara = 0;
                Refresh();
            }            

            else if (resim1 == resim2 || resim2 == resim3 || resim3 == resim1)
            {
                ses.SoundLocation = Application.StartupPath + "\\kisakahkaha.wav";
                ses.Play();
                label6.Text = "Az kaldı, bir daha şansınızı deneyiniz..";
            }

            
            else
            {
                ses.SoundLocation = Application.StartupPath + "\\uzunkahkaha.wav";
                ses.Play();
                label6.Text = "Üzülme aşkta kazanırsın :))))";
            }
        }

        void bip()
        {
            ses.SoundLocation = Application.StartupPath + "\\bip.wav";
            ses.Play();
        } 
  



        private void button1_Click(object sender, EventArgs e)
        {
            /* oyna denildiğinde jeton sayısı arttırılıyor, timer 1 çalıştırılıyor, label bilgileri yazdırılıyor */


            jetonsayisi = jetonsayisi + 1;
            timer1.Enabled = true;
            label2.Text = jetonsayisi.ToString();
            kasadakipara = kasadakipara + 10;
            label4.Text = kasadakipara.ToString();
            ses.Stop();
            label6.Text = "";
            harcanilanpara = jetonsayisi * 10;
            label8.Text = harcanilanpara.ToString();
            
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            // Eğer jeton sayısı 10 dan az ise, birinci resim ilk 10 resim alanında dönüyor, ilk 10 içinden seçiliyor. Diğerleri ise 30 resim içinde dönüyor.

            if (jetonsayisi < 10)
            {
                int resim1deger = rnd.Next(0, 10);
                int resim2deger = rnd.Next(0, 30);
                int resim3deger = rnd.Next(0, 30);

                pictureBox1.Image = ımageList1.Images[resim1deger];
                pictureBox2.Image = ımageList1.Images[resim2deger];
                pictureBox3.Image = ımageList1.Images[resim3deger];

                index += 1;
                resim1 = resim1deger;   // Gelen resmi birinci resim olarak ayarladım, kontrol için..             

                // Tüm hepsinden sonra timer 1 durduruluyor.

                if (index == 29)
                {
                    timer1.Stop();
                    bip();
                    timer2.Start();
                    index = 0;
                }

            }

                /* Eğer jeton sayısı 10 dan fazla ise ve kasadaki para - ise kazanma şansını bir miktar arttırıyoruz, 
            resim 1. kısımdan 0-30 arasında gelecek */

            else if (kasadakipara < 0 && jetonsayisi >= 10)
            {
                int resim1deger = rnd.Next(0, 30);
                int resim2deger = rnd.Next(0, 30);
                int resim3deger = rnd.Next(0, 30);

                pictureBox1.Image = ımageList1.Images[resim1deger];
                pictureBox2.Image = ımageList1.Images[resim2deger];
                pictureBox3.Image = ımageList1.Images[resim3deger];

                index += 1;
                resim1 = resim1deger;

                // timer 2 durduruluyor..

                if (index == 29)
                {
                    timer1.Stop();
                    bip();
                    timer2.Start();
                    index = 0;
                }
            }

              /* Eğer jeton sayısı 10 dan fazla ise ve 20 den az ise ayrıca kasadaki para + ise kazanma şansını daha fazla arttırıyoruz, 
            resim 1. kısımdan 0-30 arasında gelecek */

            else if (kasadakipara > 0 && jetonsayisi >= 10 && jetonsayisi<=20)
            {
                int resim1deger = rnd.Next(0, 30);
                int resim2deger = rnd.Next(0, 30);
                int resim3deger = rnd.Next(0, 30);

                pictureBox1.Image = ımageList1.Images[resim1deger];
                pictureBox2.Image = ımageList1.Images[resim2deger];
                pictureBox3.Image = ımageList1.Images[resim3deger];
                index += 1;
                resim1 = resim1deger;

                // timer 1 durduruluyor.

                if (index == 29)
                {
                    timer1.Stop();
                    bip();
                    timer2.Start();
                    index = 0;
                }
            }

              /* Eğer jeton sayısı 20 dan fazla ise kazanma şansını çok çok fazla arttırıyoruz, yalnız 23'de bu durum hariç 
            resim 1. kısımdan 0-5 arasında gelecek */

            else if (jetonsayisi > 20 && jetonsayisi != 23)
            {
                int resim1deger = rnd.Next(0, 5);
                int resim2deger = rnd.Next(0, 5);
                int resim3deger = rnd.Next(0, 5);              

                pictureBox1.Image = ımageList1.Images[resim1deger];
                pictureBox2.Image = ımageList1.Images[resim2deger];
                pictureBox3.Image = ımageList1.Images[resim3deger];

                index += 1;

                resim1 = resim1deger;

                // timer 1 durdurulur.
                              
                if (index == 29)
                {
                    timer1.Stop();
                    bip();
                    timer2.Start();                    
                    index = 0;
                }
            }

                  /* Eğer jeton sayısı 23 ise direk kazandırma kısmım.. Burada kesinkazanan diye bir değere resim1 değerini atadım */

            else if (jetonsayisi == 23)
            {
                int resim1deger = rnd.Next(0, 30);
                int resim2deger = rnd.Next(0, 30);
                int resim3deger = rnd.Next(0, 30);

                pictureBox1.Image = ımageList1.Images[resim1deger];
                pictureBox2.Image = ımageList1.Images[resim2deger];
                pictureBox3.Image = ımageList1.Images[resim3deger];

                index += 1;

                resim1 = resim1deger;

                kesinkazan = resim1deger;

                if (index == 29)
                {
                    timer1.Stop();
                    bip();
                    timer2.Start();
                    index = 0;
                }
            }



            
        }

        private void timer2_Tick(object sender, EventArgs e)
        {
            if (jetonsayisi < 10)

                // Jeton sayısı 10 dan küçükse ikinci resim bu sefer 10 ile 30 indeks nolular arasından seçiliyor. İlki ilk 10 dan seçildiği için kazanma şansı sıfır..
            {

                int resim2deger = rnd.Next(10, 30);
                int resim3deger = rnd.Next(0, 30);


                pictureBox2.Image = ımageList1.Images[resim2deger];
                pictureBox3.Image = ımageList1.Images[resim3deger];
                index += 1;
                resim2 = resim2deger;

                if (index == 29)
                {
                    timer2.Stop();
                    bip();
                    timer3.Start();
                    index = 0;
                }
            }

                /* Kasadaki para - ise jeton sayısı 10 ve üzeri ise şansı biraz daha artırmıştım.. 
                 */

            else if (kasadakipara<0 && jetonsayisi>=10)
            {
               
                int resim2deger= rnd.Next (0,30);
                int resim3deger = rnd.Next (0,30);

                
                pictureBox2.Image = ımageList1.Images[resim2deger];
                pictureBox3.Image = ımageList1.Images[resim3deger];

                index+=1;
                resim2 = resim2deger;

                 if (index == 29)
                {
                    timer2.Stop();
                    bip();
                    timer3.Start();
                    index = 0;
                }
                
            }

                /* Kasadaki para + ise jeton sayısı 10 - 20 ise çalışacak karar mekanizmam
                 */

            else if (kasadakipara > 0 && jetonsayisi >= 10 && jetonsayisi <= 20)
            {

                int resim2deger = rnd.Next(0, 30);
                int resim3deger = rnd.Next(0, 30);


                pictureBox2.Image = ımageList1.Images[resim2deger];
                pictureBox3.Image = ımageList1.Images[resim3deger];
                index += 1;
                resim2 = resim2deger;

                if (index == 29)
                {
                    timer2.Stop();
                    bip();
                    timer3.Start();
                    index = 0;
                }
            }
                /*  Jeton sayısı 20 den fazla ise 23 hariç kazanma şansını çok fazla arttırdım  sadece 5 resim içinde dönüyor, değer
                 * 0-5 arasu gelecek
                 */

            else if (jetonsayisi >20 && jetonsayisi!=23)
            {
                
                int resim2deger = rnd.Next(0, 5);
                int resim3deger = rnd.Next(0, 5); 
                             
                       
                pictureBox2.Image = ımageList1.Images[resim2deger];
                pictureBox3.Image = ımageList1.Images[resim3deger];
                index += 1;

                resim2 = resim2deger;

               
                                          
               

                if (index == 29)
                {
                    timer2.Stop();
                    bip();
                    timer3.Start();                   
                    index = 0;
                }
            }

                /* Eğer jeton 23 ise değerşer 30 resim içinde dönsede ilk resim ne geldi ise ikinci resim o gelecek
                 */
            else if (jetonsayisi == 23)
            {
                
                int resim2deger = rnd.Next(0, 30);
                int resim3deger = rnd.Next(0, 30);

                
                pictureBox2.Image = ımageList1.Images[resim2deger];
                pictureBox3.Image = ımageList1.Images[resim3deger];

                index += 1;

                pictureBox2.Image = ımageList1.Images[kesinkazan];
                resim2deger = kesinkazan;
                resim2 = resim2deger;

                

                if (index == 29)
                {
                    timer2.Stop();
                    bip();
                    timer3.Start();
                    index = 0;
                }
            }
        
        }

        private void timer3_Tick(object sender, EventArgs e)
        {
            /* Jeton sayısı 10 dan küçükse üçüncü resim bu sefer 0 ile 30 indeks nolular arasından seçiliyor. 
            İlki ilk 10 dan seçildiği için, ikinci de 10 ile 30 arasından seçildiği içinm 3. ne olursa olsun
            kazanma şansı sıfır.. */

            if (jetonsayisi < 10)
            {
                               
                int resim3deger = rnd.Next(0, 30);
                
                pictureBox3.Image = ımageList1.Images[resim3deger];
                index += 1;
                resim3 = resim3deger;

                if (index == 29)
                {
                    timer3.Stop();
                    sonuckontrol();
                    index = 0;
                }
            }

                /* Kasadaki para - ise jeton 10 ve üzeri ise şansı biraz daha arttırdım.. Gelen resim kısmını bir nebze daralttım
                 */

            else if (kasadakipara < 0 && jetonsayisi >= 10)
            {

                int resim3deger = rnd.Next(20, 30);

             
                pictureBox3.Image = ımageList1.Images[resim3deger];

                index += 1;
                resim3 = resim3deger;

                if (index == 29)
                {
                    timer3.Stop();
                    sonuckontrol();
                    index = 0;
                }
            }
/* Kasa + ise jeton 10 ile 20 arası ise şans biraz daha arttırılıyor */


            else if (kasadakipara > 0 && jetonsayisi >= 10 && jetonsayisi <= 20)
            {                
                int resim3deger = rnd.Next(3, 30);
                               
                pictureBox3.Image = ımageList1.Images[resim3deger];
                index += 1;
                resim3 = resim3deger;

                if (index == 29)
                {
                    timer3.Stop();
                    sonuckontrol();
                    index = 0;
                }
            }

                /* Jeton sayısı 20 den fazla 23 hariç ise kazanma şansı en üst düzeyde oluyor.. */

            else if (jetonsayisi > 20 && jetonsayisi != 23)
            {
                
                int resim3deger = rnd.Next(0, 5);                
                pictureBox3.Image = ımageList1.Images[resim3deger];
                index += 1;

                resim3 = resim3deger;

                
               

                if (index == 29)
                {
                    timer3.Stop();
                    sonuckontrol();
                    index = 0;
                }
                
                
            }

                /* jeton sayısı 23 ise 3. resime ne gelirse gelsin (random değer) 1. resimdeki değer atanıyor. */

            else if (jetonsayisi == 23)
            {

               
                int resim3deger = rnd.Next(0, 30);


                
                pictureBox3.Image = ımageList1.Images[resim3deger];

                index += 1;

                pictureBox3.Image = ımageList1.Images[kesinkazan];
                resim3deger = kesinkazan;
                resim3 = resim3deger;



                if (index == 29)
                {
                    timer3.Stop();
                    sonuckontrol();
                    index = 0;
                }
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            // bilgileri yazdırma..

            jetonsayisi = 0;
            kasadakipara = 0;
            label2.Text = jetonsayisi.ToString();
            label4.Text = kasadakipara.ToString();
        }

        private void button3_Click(object sender, EventArgs e)
        {
             // Kapatma işlemi, uyarı..

            DialogResult sonuc;
            sonuc = MessageBox.Show("Çıkmak istiyor musunuz?", "Uyarı", MessageBoxButtons.OKCancel);
            if (sonuc == DialogResult.OK)
            {
                this.Close();
            }
            
              
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            
        }
    }
}


17 yorum

  1. Yaptiginiz Slot Makinasi Otomasyonunda ki sorun 10-21,22-23 cu denemelerde durmasidir … Iyi Gunler

  2. Muhtemelen kodlarda bir hatanız olabilir.. Belirttiğiniz şekilde, bir hatası yok..

  3. Üstadım mrb, senin bu yaptığın slotu bende yaptım ama bende resim1deger, ImageList1, Images kısımlarının altı hata çizgili oldu, başka yerden resimde yükledim ama hata aynı, bu resimleri projeye tanımlamak için ne yapmak gerekiyor.
    tşk.

  4. Merhaba, muhtemelen forma imagelist (ToolBox Componentlerin altında) kontrolü eklemediniz.. bunu ekledikten sonra başka bir hata yok ise düzeleceğine inanıyorum.

  5. Merhaba ben programlardan anlamam ama kumarciyim rusyada yaşıyorum kumara çok para verdim balada veriyorum bu makinelerin facasini bozacak bir formül yada uygulamaci arıyorum!!!!!!!

  6. tek hata burada pictureBox1.Image = ımageList1.Images[resim1deger]; formun içine ımageList i ekldm ama hata werior neden acaba ? bilgnz war mı eklediim halde hata alıyorum

  7. hata olarak hangi uyarıyı alıyorsunuz?

  8. button1 click e kadar sorun yok f5 diyip oyna diince para falan artıyor orada sıkıntı yok ama timer 1 i yazmya başlynca direk ımglist hata werior :S bununla tam 4 saattir uğraşıyorum artk pes etcem

  9. InvalidArgument=Value of ‘1’ is not valid for ‘index’.
    Parameter name: index böle bişey yazıyor s:

  10. Bu hatayı boş bir listbox temizleme işlemlerinde alırsınız. Döngünüzü bir kontrol edin..

  11. Ayrıca imagelist içeriğiniz resimlerde dolu değil mi? Resim yoksa bu hatayı almanız yine muhtemel.

  12. Çok işime yaramıştı bu oyun teşekkürler..

  13. ben hata almıyorum fakat programı çalıştıramadım hatasız başlıyor fakat hiç birşey yapılmıyor :/ yardım lütfen

  14. pictureBox2.Image = ımageList1.Images[resim2deger]; SATIRINDA HATA ALIYORUMMMM

  15. kodlarınızı tekrar kontrol ediniz muhtemelen yanlış yazmış olabilirsiniz.

  16. Visual Studio 2012 kullanıyorsunuz başta bir uyarı mesajı verir ancak daha sonra program çalışır.

  17. Merhaba slot oyunlari için bana 05300858974 ulaşılmasınız,

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir