Merhabalar, C# İsim Şehir Hayvan Oyunu Uygulaması yazım ile C# eğitim setime devam ediyorum. Can sıkıntısından ne yapsam ne yapsam diye düşünürken aklıma bu oyun geldi. Benim yaşımdaki arkadaşlar bilirler. Eskiden bir evde toplanıldığında çocuklar bir kenara çekilir bu oyunu oynardık. Şahsen çok sevdiğim oyunlar arasında gelir. Durum böyleyken bende bu oyunu C# ile program olarak yapayım dedim. Elbette 45, 50 dakika da yaptığım bu oyun çok kapsamlı değil. Buna oyun bile denemez belki ama maksat kod yazmak olsun. :)
C# İsim Şehir Hayvan Oyunu Uygulaması
Öncelikle bu oyunu bilmeyenler için açıklayayım.
Kurallar: (Gerçek oyunun)
1 – Yazılan şeyler istenen şeye uymalıdır.
2 – Yazılan şeylerin ilk harfi belirlenen harf olmalıdır.
3 – Kimse kimsenin kağıdına bakamaz.
4 – Dışarıdan destek alınamaz. (Herkes aynı şeyi bilemez ise destek istenir.)
5 – 60 Saniye süre vardır.
6 – İki veya daha fazla kişi aynı şeyi yazdıysa puanın yarısını alırlar. Herkes aynı şeyi yazdıysa puan verilmez.
Bu şekilde bir oyun işte. Aslında çok eğlenceli oluyor. :)
Bu oyunun kodlarını yazarken, 3 button, 6 textbox, 15 label 1 timer ve 1 panel kullandım. Form tasarımı aşağıdaki gibi.
Program Akışı
Kodları vermeden önce neler yaptığımı açıklayayım.
- Harf Ver butonu ile harfler dizisinden random bir harf seçilir.
- Harf seçildikten sonra zaman başlatılır.
- Timer çalışmaya başlar ve 60 saniye sayar.
- İstenen şey yazılır
- Yazım bittiğinde Kontol Et butonuna tıklanır.
- Yazılan şeyler, textboxların altlarında yazan min karakter sayısına ve ilgili harf ile başlıyor mu kontrol edilir ve puan hesaplanır.
- NOT: Görseldeki nota istinaden sadece A harf ile başlayan isimler için bir dizi yaptım ve harf A ise, isim bu diziden kontrol ediliyor. Eğer dizide ilgili isim var ise doğru kabul ediliyor.
Şimdi program akışını verdiğimize göre kodlara geçebiliriz.
Kodlama
Aşağıda kullandığım diziler ve değişkenler yer alıyor.
string[] harfler = new string[] { "A", "B", "C", "D", "E", "F", "G", "H", "I", "İ", "Ç", "J", "K", "L", "M", "N", "O", "Ö", "P", "R", "S", "Ş", "T", "U", "Ü", "V", "Y", "Z" }; //string[] harfler = new string[] { "A" }; // A harfi seçildiğinde isimlerin, isimler dizisinden kontrolü için deneme amacı ile string[] isimler = new string[] { "Ali", "Ahmet", "Ayhan", "Ayşe", "Aynur", "Ayşenur", "Abdullah", "Açelya","Adalet","Adile" ,"Ahsen","Ajda","Alev","Anıl","Arife","arzu","asena","asiye","aslı","aslıhan","asu","asude","asya","asuman","ayben","ayfer","aybike" ,"ayça","aydoğan","aygün","ayla","ayperi","aysel","aysu","aysun","ayşegül","ayten","azize","azra","abbas","abulaziz","abdulhamit" ,"abdulkerim","Abdurrahman","Abidin","Abuzer","adal","adil","ayhan","adnan","alp","alper","akif","akman","aktan","alaaddin","aladdin" ,"alican","alişan","alperen","altay","anıl","arda","arif","akif"}; int saniye = 0;
NOT: Burada deneme amacı ile isimleri manuel yazdım. Görselde belirttiğim gibi database kullanmayı pek mantıklı bulmadığım için bilgileri metin belgelerinde saklayarak, program başlangıcında okuyup dizilere alabiliriz. Böylece ilgili harfle başlayan rastgele yazımlar doğru kabul edilmesinin önüne geçebiliriz.
private void Form1_Load(object sender, EventArgs e) { pnl_txt.Enabled = false; timer1.Interval = 1000; }
Form Load eventinde Timer nesnesinin intervalini 1000 ms yani 1 sn olarka ayarlıyoruz ve textboxları saran paneli pasiy yapıyoruz.
private void btn_harf_Click(object sender, EventArgs e) { Random rnd = new Random(); int sayi = rnd.Next(harfler.Count()); lbl_harf.Text = harfler[sayi]; }
Harf Ver butonunun Click eventinde, 0 ile harfler dizisinin eleman sayısı arasında random bir sayı üreterek harf seçiyoruz ve labele yazıyoruz.
private void btn_basla_Click(object sender, EventArgs e) { if (lbl_harf.Text.Length > 0) { timer1.Enabled = true; timer1.Start(); } else { MessageBox.Show("Harf seçilmedi"); } }
Başla butonunun click eventinde, eğer harf seçildi ise timer nesnesini başlatıyoruz. Harf seçilmedi ise uyarı veriyoruz.
private void timer1_Tick(object sender, EventArgs e) { saniye++; pnl_txt.Enabled = true; lbl_zaman.Text = "Zaman : " + saniye.ToString(); if (saniye == 60) { timer1.Enabled = false; pnl_txt.Enabled = false; lbl_harf.Text = ""; saniye = 0; MessageBox.Show("Zaman Bitti!"); } }
Timer nesnemizin Tick eventinde, dışarıda oluşturduğumuz saniye değişkenini sürekli arttırıyoruz. Textboxları saran paneli aktif ediyoruz. Zamanın ilerlemesini labele yazıyoruz. Eğer zaman dolduysa timeri durduruyoruz, harfi siliyoruz, saniye değişkenini sıfırlıyoruz ve uyarı veriyoruz.
private void brn_kontrol_Click(object sender, EventArgs e) { if (timer1.Enabled == true) { if (lbl_harf.Text.Length > 0) { timer1.Enabled = false; pnl_txt.Enabled = false; string harf = lbl_harf.Text; int kontrol = 0; int puan = 0; // Harf bazlı, diziden arama. Eğer Harf A ise belirlediğimiz Dizide olup olmadığını kontrol edecek. // bir arraylist'e tüm harfler için isimler yazarsanız ilk if şartına gerek kalmaz. if (harf == "A") { // varsayılan olarak XXX == True kontrolü yapar. Yani if(XXX == True) yazmaya gerek yok. if (isimler.Contains(txt_isim.Text)) { kontrol = 2; puan += 10; }; } else { if (txt_isim.Text.ToUpper().Substring(0, 1) == harf && txt_isim.Text.Length >= 2) { kontrol = 1; puan += 10; } } if (txt_sehir.Text.ToUpper().Substring(0, 1) == harf && txt_sehir.Text.Length >= 3) { kontrol = 2; puan += 10; } if (txt_hayvan.Text.ToUpper().Substring(0, 1) == harf && txt_hayvan.Text.Length >= 2) { kontrol = 3; puan += 10; } if (txt_bitki.Text.ToUpper().Substring(0, 1) == harf && txt_bitki.Text.Length >= 3) { kontrol = 4; puan += 10; } if (txt_esya.Text.ToUpper().Substring(0, 1) == harf && txt_esya.Text.Length >= 3) { kontrol = 5; puan += 10; } if (txt_unlu.Text.ToUpper().Substring(0, 1) == harf && txt_unlu.Text.Length >= 5) { kontrol = 6; puan += 10; } if (kontrol == 6) { MessageBox.Show("Tebrikler!. :) Hepsi Doğru" + Environment.NewLine + "Puanınız: " + puan.ToString()); } else { MessageBox.Show("Üzgünüm. :( Hepsi doğru değildi." + Environment.NewLine + "Puanınız: " + puan.ToString()); } lbl_puan.Text = "Puan : " + puan.ToString(); } else { MessageBox.Show("Harf seçilmedi"); } } else { MessageBox.Show("Zamanı başlatmadınız."); } }
Kontrol Et butonumuzun click eventinde, Timer ‘in durumunu ve harfin seçilip seçilmediğine bakıyoruz. Zaman başlatılmamış ve harf seçilmemiş ise uyarı veriyoruz.
Timer’i durduryoruz, paneli pasif ediyoruz. Kontrol edebilmek için seçilen harfi değişkene alıyoruz. Kontrol ve puan değişkenlerini oluşturuyoruz.
Bu nokta da yukarıda bahsettiğim diziden kontrol etme işlemini görebiliyorsunuz. Ben örnek olması amacı ile sadece A harfi ile bağlayan isimlerden oluşan bir dizi hazırlamıştım. Eğer harf A ise isimler bu dizide arama yapacak. Eğer yazılan isim dizide var ise doğru kabul edilecek.
Diğer yolun kontrolü ise, ilk olarak ilk harfine bakıyoruz. sonrasında yazılan şeylerin min karakter sayısına uyup uymadığına bakıyoruz. Eğer bu şartlara uyulmuş ise doğru kabul ediyoruz.
Eğer kontrol değişkenimiz 6 ise yani tüm kontroller başarılı ise Tebrikler mesajı veriyoruz. Değil ise Üzgünüz mesajını veriyoruz. Aynı zamanda puanı da gösteriyoruz.
C# İsim Şehir Hayvan Oyunu Uygulaması yazım da bu kadarı arkadaşlar. Diğer yazılarımızda görüşmek üzere…
C Sharp Eğitim Seti eğitimi sayfasına gitmek için tıklayınız.
Derslerime özel olarak hazırladığım Github Projeme buradan ulaşabilirsiniz… Bu dersimde Github ‘da yerini almıştır. Linke tıklayarak Github sayfasına gidebilir ve indirebilirsiniz.
Sağlıcakla ve takipte kalın.
Tamda bugün, facebookta bir videosunu görmüştüm. Üstüne bunu gördüm. :D