Anasayfa / Yazılım / C# / C# Bilge Adam Introduction Ödevleri – Poker Kart Dağıtımı

C# Bilge Adam Introduction Ödevleri – Poker Kart Dağıtımı

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

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

İstenen : Elimizde bir iskambil destesinin tüm kağıtlarını tutan 52 elemanlı bir dizi var. Bizden istenen bu kağıtlardan 4 oyuncuya beşerli olarak dağıtmak. Aynı kağıttan bir elde iki tane olmayacak.

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=5}

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

Kodlar ve açıklamar :

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;
using System.Collections;

namespace POKER_OYUNU
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        ArrayList kartlar = new ArrayList();
        string[] kartTur = new string[] { "Maça","Karo", "Sinek", "Kupa" };
        string[] kartNo = new string[] { "As", "2", "3", "4", "5", "6", "7", "8", "9", "10", "Vale", "Kız", "Papaz" };
        Random rasgele = new Random();

        ArrayList oyuncu1deger = new ArrayList();
        ArrayList oyuncu2deger = new ArrayList();
        ArrayList oyuncu3deger = new ArrayList();
        ArrayList oyuncu4deger = new ArrayList();
        int sayac = 0;
        string yazi;

        void yazdirma()
        {
            // Sayaç durumuna göre oyuncuların ellerindeki kartların durumu yazdırılıyor..

            if (sayac == 0)
            {
                yazi = "Elinizde bir Şey yok";
            }
            if (sayac == 1)
            {
                yazi = "Elinizde ikili var";
            }
            if (sayac == 2)
            {
                yazi = "Elinizde üçlü var";
            }
            if (sayac == 3)
            {
                yazi = "Elinizde dörtlü var";
            }
            if (sayac == 4)
            {
                yazi = "Elinizde beşli var";
            }
        }
      
        private void button1_Click(object sender, EventArgs e)

        {
            // listboxlar temizleniyor..
            
            listBox1.Items.Clear();
            listBox2.Items.Clear();
            listBox3.Items.Clear();
            listBox4.Items.Clear();

            label5.Text = "";
            label6.Text = "";
            label7.Text = "";
            label8.Text = "";

            kartlar.Clear();

            //kartlar oluşturuluyor..

            for (int i = 0; i < kartTur.Length; i++)
            {
                for (int x = 0; x < kartNo.Length; x++)
                {
                    string gelenkart = kartTur[i] + "-" + kartNo[x];
                    kartlar.Add(gelenkart);
                }
            }

            // oyuncu 1 için kartlar oluşturuluyor, remove AT ile gelen kart bir daha gelmesin diye kaldırılıyor..

            for (int i = 0; i < 5; i++)
            {
                int gidenkart = rasgele.Next(0, kartlar.Count);
                listBox1.Items.Add(kartlar[gidenkart]);
                kartlar.RemoveAt(gidenkart);
            }

            // oyuncu 2 için kartlar oluşturuluyor, remove AT ile gelen kart bir daha gelmesin diye kaldırılıyor..

            for (int i = 0; i < 5; i++)
            {
                int gidenkart = rasgele.Next(0, kartlar.Count);
                listBox2.Items.Add(kartlar[gidenkart]);
                kartlar.RemoveAt(gidenkart);
            }

            // oyuncu 3 için kartlar oluşturuluyor, remove AT ile gelen kart bir daha gelmesin diye kaldırılıyor..

            for (int i = 0; i < 5; i++)
            {
                int gidenkart = rasgele.Next(0, kartlar.Count);
                listBox3.Items.Add(kartlar[gidenkart]);
                kartlar.RemoveAt(gidenkart);
            }

            // oyuncu 4 için kartlar oluşturuluyor, remove AT ile gelen kart bir daha gelmesin diye kaldırılıyor..

            for (int i = 0; i < 5; i++)
            {
                int gidenkart = rasgele.Next(0, kartlar.Count);
                listBox4.Items.Add(kartlar[gidenkart]);
                kartlar.RemoveAt(gidenkart);
            }            
                      
        }



        private void button2_Click(object sender, EventArgs e)
        {
            DialogResult sonuc;
            sonuc = MessageBox.Show("Çıkmak İstediğinizden Eminmisiniz?", "Uyarı", MessageBoxButtons.OKCancel);
            {
                if (sonuc == DialogResult.OK)
                {
                    Application.Exit();
                }
            }
        }
        

        private void button3_Click(object sender, EventArgs e)
        {
            // Oyuncunun ellerindeki kartlar kontrol ediliyor..
            {
                foreach (string item in listBox1.Items)  // oyuncu 1 için;
                {
                    string[] dizi = item.Split('-');     // kartları - işaretine göre ayırıyorum, ikinci kısmı index 1 oluyor, ayrı bir diziye alıyorum.
                    if (oyuncu1deger.Contains(dizi[1]))  // dizideki elemanı önceden tanımladığım dizi içinde arıyorum, burada ilk elemanı hemen diziye atmıyorum, çünkü kendisinden sonraki ile kıyaslanması gerekiyor.
                    {
                        sayac++;                         // eğer içeriyor ise sayaç++
                    }
                    oyuncu1deger.Add(dizi[1]);           // dizinin elemanının, kıyaslayacağım diziye eklenmesi..
                }
                yazdirma();                              //methodumu çağırıyorum..
                label5.Text = yazi;                      // methodumdaki yapıya göre yazı değişkenine ne geldi ise, ilgili alana yazdırıyorum.

                sayac = 0;                               // yeni dağıtım için sıfırlama işlemim, hem dizi hem sayaç.. Aynı şekilde diğer oyuncular içinde aşağıdaki işlemler bu şekilde yapılıyor.
                oyuncu1deger.Clear();
            }

            {

                foreach (string item in listBox2.Items)
                {
                    string[] dizi = item.Split('-');
                    if (oyuncu2deger.Contains(dizi[1]))
                    {
                        sayac++;
                    }

                    oyuncu2deger.Add(dizi[1]);

                }
                yazdirma();
                label6.Text = yazi;

                sayac = 0;
                oyuncu2deger.Clear();
            }

            {

                foreach (string item in listBox3.Items)
                {
                    string[] dizi = item.Split('-');
                    if (oyuncu3deger.Contains(dizi[1]))
                    {
                        sayac++;
                    }

                    oyuncu3deger.Add(dizi[1]);

                }
                yazdirma();
                label7.Text = yazi;


                sayac = 0;
                oyuncu3deger.Clear();
            }

            {

                foreach (string item in listBox4.Items)
                {
                    string[] dizi = item.Split('-');
                    if (oyuncu4deger.Contains(dizi[1]))
                    {
                        sayac++;
                    }

                    oyuncu4deger.Add(dizi[1]);

                }
                yazdirma();
                label8.Text = yazi;

                sayac = 0;
                oyuncu4deger.Clear();
            }


        }

       

    }
}


30 yorum

  1. gerçekten çok guzel bir çalışma olmuş. tşkr ederim çok istifade ettik.

  2. İbrahim Bey yorumunuz için teşekkür ederim..

  3. ibrahime katılıyorum. arkadaşım bu tarz bir ödev hazırlıyordu. onada supriz yapayım bari:) tşkrler…

  4. Ben teşekkür ederim umarım faydası olur. 🙂

  5. Çok saol bende bilge adam antalyada okuyorum hoca bize sql e geçince verdi bunu ama saol genede çok yardımcı oldu 🙂

  6. Rica ederim, yardımcı oldu ise ne mutlu 🙂

  7. merhabalar,yukaridaki ornege baktimda elde 2 tane ikili oldugunda sanirim 3lu varmis gibi davranicak.iki tane ikili olma durumu ayriyetten incelenmemis sanirim.

  8. Bilgi için teşekkürler.. Gözden kaçırmışım, kontrol edip vakit bulduğumda düzenleyeceğim.. 🙂

  9. Çok teşekkür ederim çalışmanızı yayınladığınız için.

  10. Ben teşekkür ederim, ilginize..

  11. iki tane ikili dışında renk, kent, yüksek kent, full gibi bir çok ihtimal de incelenmemiş. poker el değerlendirmesi yapmak o kadar da kolay bir iş değil. kaldı ki oyuncu sayısı belli bile olmayabilir.

  12. Verilen ödevin orjinalinde, renk kontrolü, kent, yüksek kent ve full durumlarının kontrolü istenmemektedir. Buradaki tek hata iki tane ikili gelme durumu.. O durumda rahatlıkla düzeltilebilir hata, yoksa elbette sizin dediğiniz gibi, bu gerçek bir poker el dağıtımı değil. Sadece istenen projedeki şartlara göre yapılmış bir kodlama.

  13. Admin bey gerçekten çok yardımcı oldu bu çalışmanız size minnettarım, fakat bu kodların düzeltilmiş hali yani elde 2 adet 2’li olduğunda 3’lü varmış gibi davranması konusunun giderilmiş hali var mıdır ? yada nasıl yapabiliriz bilgi verirseniz memnun oluruz.Teşekkürler

  14. Teşekkürler yorumunuz için. İlgili hatadan sonra düzenleme yapmıştım kodlarda şimdi aynı şekilde kart gelmiyor yani istenen durum olarak aşağıdaki şart sağlanıyor.

    “Elimizde bir iskambil destesinin tüm kağıtlarını tutan 52 elemanlı bir dizi var. Bizden istenen bu kağıtlardan 4 oyuncuya beşerli olarak dağıtmak. Aynı kağıttan bir elde iki tane olmayacak.”

    İyi çalışmalar.

  15. bilgisayar öğrencisiyim hocamız verdi bu ödevi . aynısını yaptım fakat karlar berede ??

  16. Selamlar, ben bu uygulamada kartlar için image kullanmadım, direkt olarak string veri olarak bir dizi içinde kullandım. Siz bir picturebox vasıtası ile kartlar için image kullanabilirsiniz, bunu da slot örneğindeki picturebox kullanımından örnekleyerek yapabilirsiniz.

  17. Ellerinize sağlık. Benim farklı ödevlerim var yardımcı olur musunuz onlarda bana?

  18. Teşekkürler, nasıl bir ödev ve hangi noktaya kadar geldiniz?

  19. Bunlar dışında kayan yazı ödevim vardı bunlara başlamadım daha umarım yapabilirim

  20. Hangi noktaya kadar geldiniz?

  21. Pokeri ve satrancı yaptım fakat hoca internettekileri yapıp getiriyo bazıları öyle yapmayın dedi bunları kastediyo sanırım

  22. gece gece nasıl duamı aldınız nasıl duamı aldınız anlatamam kara kara düşünüyordum gecenin üçünde bir mucize olsada şu yarına yetişmesi gereken ödevlerimi biri açıklasa diye google’a yazdıkça çıktı yazdıkça çıktı mutluluktan ağlayabilirim 😀

  23. İşinize yaradı ise ne mutlu.. Fakat mutlaka neyin nasıl yapıldığını inceleyin ve ödevinizi teslim etseniz dahi yine kendiniz de tekrardan farklı yollar ile yapmayı deneyin, çok faydası olacak 🙂

  24. Nesli hanım hocanız doğru söylüyordur burası veya bir başka siteden yapılıp herhangi bir değişiklik yapmadan sunmak aslında kişinin kendisi için kötü. Yayınlayan tüm arkadaşlarımız herkesin belli bir fikir edinebilmesi için yayınlamaktadır. Ayrıca bir kaç yere de referans olması açısından. Bu nedenle burda yayınlanan ödevleri kendi geliştirmiş olduğunuz metot ve yöntemlerle mutlaka yapmayı deneyin. 🙂

  25. Teşekkürler bende yapamadığım için araştırıyordum burdanda artık yapıcaz bi şekilde 🙂

  26. merhaba benim bir ödevim var hastane randevu sistemi yapıyorum ve randevu saatini alırken başka bir kişininde bu saati almaması için yani randevuların çakışmaması için kod yazmam gerekiyor ama bir türlü yazamadım bana yardımcı olabilir misiniz?

  27. Aysu Hanım uygulamanız veritabanı uygulaması mı? Yardımcı olabilmemiz için uygulamanızı görmemiz gerekiyor.

  28. Hocam çok temiz bir anlatım ve güzel bir paylaşım emeğinize sağlık

  29. ben bu programı nesnesel yaptım fakat oyuncunun elındekı kartların durumunu cozemedım pıcture box dan nasıl kontrol ettırecegimi cozemedım yardımcı olurmusunuz?

  30. Kodlarınızı gönderebilirseniz ve tam olarak nerede yardım istediğinizi belirtebilirseniz daha net yardımcı olmaya çalışabiliriz.

Bir Cevap Yazın

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