17 Şubat 2014 Pazartesi

Veritabanı Ders Uygulamaları - 8

Vizyondaki filmleri gösteren ve onlar üzerinde kayıt yapabilen bir program yapacağız... Bu program ile birlikte bilgi girişi yaparken parametre kullanımı hakkında bilgi sahibi olacağız... Bilgi girişlerinin tamamında parametre kullanmakta fayda vardır...

1 - Aşağıdaki form tasarımını yapınız...
2 - Bu form tasarımından sonra kod kısmına doğru geçelim... Ama öncelikle form tasarımı sırasında label5 yazan labelların textlerini silelim ve comboboxın içerisine aşağıdaki başlıkları ekleyelim...
Komedi
Aksiyon
Dram
Bilim Kurgu

Bunlar bizim filmlerimiz için tür seçimlerinde kullanacağımız başlıklar olacak...

3 - Buradaki en önemli buton şu anda kayıt butonudur... Formun genel değişken kısmına baglan ve komut değişkenlerini tanımladıktan sonra kayıt butonunun içerisine aşağıdaki parametre ekleyen komutları yazalım...
string Sorgu = "INSERT INTO vizyon ([FilmAdı], [VizyonTarih], [Tur], [Konu]) VALUES (@FilmAd, @Tarih, @Tur, @Konu)";
komut = new OleDbCommand(Sorgu, baglan);
komut.Parameters.AddWithValue("@FilmAd",textBox1.Text.ToUpper() );   
komut.Parameters.AddWithValue("@Tarih", dateTimePicker1.Value.ToShortDateString());
// @tur ve @konu parametrelerini de siz yazınız... 
komut.ExecuteNonQuery(); // 

Parametre işlemlerinde öncelikle sorgu yazılır daha sonra sorgu içerisinde kullanılan parametrelere değer gönderilir... Parametrelerin başında @ işareti kullanılır ve parametrelere değer atanırken Add.WithValue kullanılır... 

4 - Yukarıdaki parametre işlemlerini buton içerisinde yaparken bağlantıyı açıp kapamayı unutmayınız...

5 - Geriye kalan işlemi bir metod üzerinden yapacağız... bu metodu aşağıdaki gibi tanımlayınız... 
void listele(string durum, string sorgu)

6 - Bu metod içerisinde veritabanından değerleri okuma işlemi yaptıracağız... durum adındaki parametreye iki değer göndereceğiz... 
  • Eğer "listekle" değerini gönderirsek girilmiş olan filmin adını listboxa ekleyecek... Unutmadan her kayıt sonunda bu metodu çağırarak listboxa film adını eklemeyi unutmayalım... Tabii bu durumda her kayıt sonunda film adı eklemeden listboxı temizleyeceğiz... 
  • Eğer "listgoster" değerini gönderirsek listboxda seçilmiş olan film adının diğer bilgilerini labellar da göstereceğiz... Tabii bu işlemi siz while (oku.Read()) döngüsünün içerisinde kontrol edeceğiniz bir if şartı ile yapacaksınız... Eğer "listekle" gönderilmişse listboxa film isimleri eklenecek, yok "listgoster" gönderilmişse labellar da bilgiler gözükecek...
7 - Bu metodun diğer parametresi ise sorgudur... Sql sorgusunu bu parametreye göndereceğiz... Eğer listboxa eklemeye yapıyorsak bütün tabloyu okuyacak olan bir sorgu yazmamız da bir mahsur yok... Ama seçili olan film ile ilgili bilgileri görmek istiyorsak o zaman bütün tablo yerine sadece seçili olan filmi göstermek daha iyi olacaktır... Bu durumda bir Where ifadesi kullanmalıyız... Aşağıdakine benzer bir ifade ile listboxın seçili olan elemanını kontrol ettirebiliriz... 
Select * From bilsay Where Ad = ' " + listbox1.items[listbox1.selectedindex]+ " ' ";


8 - Goster butonuna tıklandığı anda listboxda seçim yapıldı ise film bilgilerini labellarda göstereceğiz... Ama burada bir kontrol daha yapmalıyız... Eğer listboxda seçim yapılmadı ise bu durumda seçim yap diye uyarmalıyız... Bir kontrol nesnesinde seçim yapılıp yapılmadığını nasıl anlarız... Çok basit... C# daki bütün kontrol nesnelerinin Selectedindex özelliklerinde seçim yapılmadıysa değer olarak -1 geriye döner... Bu durumda buton içerisinde kuracağımız bir if şartı ile seçim -1 ise uyarı mesajı verdirmeliyiz... 

9 - Bu arada formun girişinde de film isimlerini yine listele metodu ile listboxa eklemeyi unutmayalım... 

Şimdi çalışan programdan bir kaç görüntü verelim... Daha önceden veri girilen formun açılışı...
Her hangi bir filmin gösterimi ve seçim yapılmadı ise uyarı mesajı verilmesi...



Bir film ile kayıt eklenmesi... 
Son olarak kayıt işleminden sonra yapılacak olan bir temizle metodu da eklenebilir... Bu kadar... 

14 Şubat 2014 Cuma

Veritabanı Ders Uygulamaları - 7

1 - Aşağıdaki veri tablosunu oluşturunuz. Veritabanı adı olarak bilsay tanımlayınız. Tablo adı da stok olacaktır.









2 - Form tasarımı olarak ekrana bir tane tabcontrol nesnesi yerleştiriniz. Tabcontrol nesnesinin tabpage özelliğinin içine giriniz. Açılan pencerede 0 numaralı tabpage ismini text özelliği ile Ana Ürünler, 1 numaralı tabpage ismini text özelliği ile Alt Ürünler olarak değiştiriniz.


3 - Sonuçta aşağıdaki gibi bir form tasarımı olacaktır.

4 - Her bir tabpage in içerisine bir tane datagridview yerleştiriniz. Bunun için form sayfasında Ana Ürünler seçili iken datagridview i getirip yerleştiriniz. Aynı şekilde Alt Ürünler seçili iken de datagridview i seçip yerleştiriniz. Bu durumda iki adet datagirdview i ekrana yerleştirmiş olduk. 

5 - Datagridvewlerin AutoSizeColumns özelliğini Fill olarak değiştiriniz. Bu sayede tablonun datagridview in içerisini tamamen kaplayacaktır. 

6 - Yine datagridviewin MultiSelect özelliğini False olarak değiştiriniz. Bu sayede datagridview üzerinde aynı anda ikinci bir seçim yapılması engellenecektir.

7 - Datagridiview üzerinde font özelliklerini değiştirmek için DefaultCellStyle özelliğine girip Yazı rengini mavi, yazı boyutunu 10 olarak değiştiriniz. Bunu her iki datagridview içinde gerçekleştiriniz.

8 - Kod kısmına geçelim... Aşağıdaki gibi bir metod ile datagridview i dolduralım...
void doldurdatagridview(DataGridView gelendgw, string sorgu, string tabloadi)
{
       // Bu kısma gelecek olan içeriği siz doldurunuz... Datagridview içerisine bilgiler gelecek kodu yazınız...
}
Metodumuzda tabloadı olarak tanımladığımız parametre ile biz da.Fill kısmında belirlenen tablo ismini vermiş oluyoruz... İki tane datagridview olduğu için de gelendgw adında bir parametre kullanıyoruz... 

9 - Formun load olayında Ana Ürünlerin görülebilmesi için aşağıdaki kodu yazınız...
doldurdatagridview(dataGridView1, "Select [Adı], Sum(Miktar) AS TOPLAM, Sum(Y_Miktar) AS KULLANIM, Sum(Kalan) AS KALAN From Stok Group By [Adı]", "anatablo");

İki tane datagridviewimiz olduğu için datagridviewlerin tablo isimlerini farklı kullandık... 1. de "anatablo", 2. de "alttablo" olacak şekilde kullanmış olduk. 

10 - TabControl nesnemizinde Selectindexchanged olayına aşağıdaki kodları yazıyoruz... Eğer Ana Ürünler tabpage mizde ise ona ait olan datagridview gösteriliyor. Yok eğer Alt Ürünler tabpagemizde ise bu durumda ona ait olan datagridview gösteriliyor... 
        private void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
        {
if (tabControl1.SelectedIndex == 0)
    doldurdatagridview(dataGridView1, "Select [Adı], Sum(Miktar) AS TOPLAM, Sum(Y_Miktar) AS KULLANIM, Sum(Kalan) AS KALAN From Stok Group By [Adı]", "anatablo");
else if (tabControl1.SelectedIndex == 1)
       // Buraya gelmesi gereken kodları siz yazınız. Burada Tanım alanı üzerinden bilgiler verilecektir...
        }

11 - Sonuçta program çalıştığı zaman aşağıdaki görüntüler alınacaktır...










Örneğimizi bitirmiş olduk...

13 Şubat 2014 Perşembe

Veritabanı Ders Uygulamaları - 6

DataGridView içerisinde seçilmiş olan ürünün istediğimiz bilgilerini anında labellar üzerinde gösteren bir veritabanı uygulaması gerçekleştireceğiz... Uygulama sürecinde datagridview in üzerinde verilerin gösterilmesi olayının yanında aynı zamanda datagridview üzerinde seçim yapıldığında olan değişiklikleri de göreceğiz...

1 - Öncelikle bilsay adında aşağıdaki veritabanımızı hazırlıyoruz... Bunun içerisinde stok adında bir tablo oluşturuyoruz...









2 - Bu veritabanımızda kimlik alanı otomatik sayı olarak tanımlanacaktır... Bunun dışında diğer bilgilerin tanımlamaları zaten bellidir...

3 - Kullanacağımız veritabanını bin/debug klasörünün altına yerleştiriyoruz...

4 - Aşağıdaki form tasarımını gerçekleştiriyoruz...

















5 - Sağ taraftaki labelların içeriklerini de silerek her hangi bir şekilde uygulama açıldığında görünmesini engelliyoruz...

6 - Uygulamamız açıldığı zaman otomatik olarak ilk verinin içeriğini sağ tarafta göstermeyecektir. Ondan sonra datagridview üzerinde tıklanan her hangi bir verinin içeriğini de göstermeye başlayacaktır... RowEnter olayını kullansaydık otomatik olarak veriyi gösterecekti...

7 - Kod kısmına geçelim... baglanti ve komut değişkenlerimizi aşağıdaki örneğe benzer şekilde tanımlıyoruz...
OleDbConnection baglanti = new OleDbConnection("Provider=Microsoft.Jet.Oledb.4.0; Data Source=okul.mdb");
OleDbCommand komut  = new OleDbCommand();

8 - Aynı zamanda datagridview de kullanacağımız dataset ve dataadapter değişkenlerimizi de tanımlıyoruz...
OleDbDataAdapter da; DataSet ds = new DataSet();

9 - Datagridviewde bilgilerin görünmesini sağlayacak olan bir metod tanımlıyoruz... Bu işlemi yaparken bir metoda sorgu işlemini gönderebileceğimiz bir string türünde bir parametre tanımlıyoruz... Aşağıdaki örneğe benzer bir yapıyı metod içerisinde oluşturuyoruz...
         baglanti.Open();
            komut.CommandText = "Select * From ogrenci Where Adı = 'CPU'";
            komut.Connection = baglanti;

            da = new OleDbDataAdapter(komut);

            da.Fill(ds,"Tablo");
            dataGridView1.DataSource = ds;
            dataGridView1.DataMember = "Tablo";
            baglanti.Close();

10 - Datagridview de değerler gösterilirken görünmesini istemediğimiz bazı alanlar var... Görünmesini istemediğimiz alanların aşağıdakine benzer bir örnekle metod içerisinde gizliyoruz...Kimlik, Kalan ve Dipnot alanlarını gizleyiniz...
dataGridView1.Columns["Ad"].Visible = false;

11 - Form load olayında datagridview i dolduracak olan sql komutunu metoda yolluyoruz... Bu sayede form açıldığı anda veritabanındaki bütün bilgiler datagridview içerisinde dolmuş olacaktır...

12 - Aşağıdaki datagridview olayını aktif hale getiriyoruz... Bundan sonra yazacaklarımızı bu kısmın içerisine yazacağız...
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)

13 - Bu olayı kullanmamızdaki amaç tıklamış olduğumuz satıra ait olan kimlik numarasını bulmak... Çünkü kimlik numaralarını otomatik sayı olarak atadık ve hiçbir ürünün kimlik numarası bir diğeri ile aynı değil. Aşağıdaki komutu bu olayın içerisine ekliyoruz... 
kimlik= int.Parse(ds.Tables["Tablo"].Rows[e.RowIndex]["Kimlik"].ToString());

Yine aynı zamanda bilgileri labellar içerisinde görmek için birazdan tanımlayacağımız bilgileri goster metodunu da aşağıdaki gibi burada kullanıyoruz... 
bilgilerigoster(// Buradaki kısma alınan kimlik bilgisine ait veriyi  gönderecek olan bir sorgu yazınız);

14 - bilgilerigoster metodu ise sorguyu alacak olan bir parametre ile birlikte aşağıdakine benzer bir şekilde tanımlanacaktır...
baglanti.Open();
komut.CommandText = sorgu;
komut.Connection = baglanti;
OleDbDataReader oku = komut.ExecuteReader();
while (oku.Read())
            {
              label1.Text = oku["Adı"].ToString();
            }
oku.Close();
baglanti.Close();

15 - Programı çalıştırdığımızda aşağıdaki gibi bir çıktı oluşacaktır. Başlangıçta ekranda her hangi bir bilgi gözükmez iken daha sonra seçim yaparak labelları doldurmuş oluruz...











16 - Bu metod ile birlikte programı çalıştırdığımız zaman problem datagridview deki alan başlıklarına tıkladığımızda oluşan aşağıdaki hatadır.

Bu hatayı çözmek için farklı yöntemler vardır... Biz datagridview deki alan başlıklarının üzerine tıklama olayını cellclick olayına yazacağımız try-catch komutları ile önledik... Hata durumunda mesaj verdirmeden yoluna devam ettirmek için kodları try kısmına yazdık... Catch kısmına ise her hangi bir sıkıntı oluşmadığı için her hangi bir ekleme yapmadık...

17 - Form üzerinde her hangi bir alan başlığına tıklama yapıldığında ve daha sonra seçim yapıldığında da programda başka bir veriyi gösteriyor... Aşağıda görüldüğü gibi....











Bu sıkıntıdan kurtulmak için Form Load olayına aşağıdaki kodları ekledik... Bu sayede alan başlıklarına tıklama olayını ortadan kaldırmış oluyoruz... Tabii farklı yöntemler ile de bu sorun çözülebilirdi...
foreach (DataGridViewColumn x in this.dataGridView1.Columns)
                x.SortMode = DataGridViewColumnSortMode.NotSortable;

Bu haliyle programı bitirmiş olduk... 

26 Ocak 2014 Pazar

Dört İşlem Oyunu...

Yeni bir oyun daha. Dört işlem üzerinde zeka geliştirici bir uygulama. Oyunumuzda rastgele dört işlemden bir tanesi geliyor. Sayılar da rastgele geliyor. Oyunumuzda levellar var. Önce basit işlemler geliyor. Daha sonra iki basamaklı sayılarla yavaş yavaş zorlaşıyor. Oyun için 5 Level tasarladık. Çok basit bir şekilde istenirse bu level sayıları artırılabilir. 

Yine oyunumuzda can hakları var. 3 can ile oyuncu oyuna başlıyor. Her Leveli geçtiğinde bir can alıyor. Aynı zamanda her 100 Puanda bir can alıyor. Her yanlış bilmede 1 can gidiyor. Aynı zamanda süre kısıtlamamız var. Zaman dolmadan cevap vermek gerekiyor. Zaman dolarsa bir can hakkı gidiyor. 

Leveller ilerledikçe sorular zorlaştığı gibi aynı zaman da her soruya verilen puan artırıyor. Bir soruya verilen zaman süresi de artıyor. Çarpım işlemleri daha zor olduğu için iki katı zaman verdik.

Oyuna ara vermek istersek bir tane de durdurma ve tekrar başlatma butonumuz var. Dört işlemin hepsini yaptırıyoruz. Yalnız bölme işlemlerinde virgülden sonraki sayılarla uğraşmamak için tam kısmını cevap olarak aldık. Örneğin 9 /4 için cevap 2 olacaktır... 

Programın çalışmasından bir kaç örnek görüntü verelim... 

































Bölme işleminden bir örnek.

Seviye geçişlerinden bir örnek gösterim.

Açıkcasını itiraf etmek gerekirse özellikle 4. ve 5. levellerdeki işlemler gerçekten zor... Tabii bu oyuna daha kolay veya daha zor olacak şekilde ilaveler yapılabilir.

Şimdi gelelim kod kısmına... İlk olarak kullandığımız global değişkenlere bakalım...
        public int islem; // +-*/ için kullanılacak operatör...
        public int ilk_sayi;
        public int ikinci_sayi;
        public int can = 3;
        public int sure = 15;
        public int gecis = 0; // Bir sonraki levele geçmek için lazım olan değişken...
        public bool cevap = false; // Doğru cevap kontrolü...
        public int skor = 0;
        public int sonuc = 0; // İşlem sonuçlarını saklayacağımız değişkenimiz.

        // Aşagıdaki değişkenler 1. Level değerlerini alıyorlar...
        public int oyunsuresi = 15;
        public int oyunpuani = 7;
        public int seviyeatla=1;
        public int a1 = 5, a2 = 10, b1 = 1, b2 = 10;
        public int canvermepuani = 100;

Değişkenlerin yanlarında gerekli açıklamalar yapılmakta... Arayüz kısmına her hangi bir açıklama getirmedim. Çünkü onu zaten resimlerden çok rahat bir şekilde nasıl tasarlayacağınızı anlamışsınızdır.

Formun girişindeki kodlardan itibaren başlayalım açıklamaları yapmaya...
private void Form2_Load(object sender, EventArgs e)
        {
            timer1.Start(); // Zamanlama için kullandığımız Timer ı başlatıyoruz... 
            label7.Text = "Kalan Süre = " + sure.ToString(); // Süreyi yarışmacıya gösteriyoruz... 
            degergoster();
        }

Formun hemen girişinde zamanlamayı başlatıyoruz. Çünkü oyuncu verilen sürede soruya cevap vermeye bilir. Yukarıda kullandığımız bir tane metod var.  degergoster() metodu aşağıdaki gibidir.
void degergoster()
        {
            textBox1.Clear();
            sure = oyunsuresi;
            label4.Text = "Kalan Can = " + can.ToString();
            label8.Text = "Skorunuz : " + skor.ToString();
            label7.Text = "Kalan Süre  = " + sure.ToString();
            sayiatama();
        }

Şimdi degergoster() metodu her çağrıldığında neler yapılıyor bir bakalım.

  • Öncelikle textbox1 in içeriği temizleniyor.
  • Sure değişkenimize oyunsuresi değişkeninden gelen değer aktarılıyor. oyunsuresi değişkeni levellera göre değişiklik gösteriyor. bu sebeple her dogru veya yanlış cevaptan sonra kendini yenilemesinde fayda var.
  • Label 4,7 ve 8 de oyun ile ilgili genel durum bilgileri veriliyor.
  • En son olarak sayiatama() metoduna gidiliyor. Bu şu demek. Metod içerisinden başka bir metodun içerisine yönlendirme yapılıyor ve program dallanıyor. Peki sayiatama() metodunda ne var. Tahmin edeceğiniz gibi sayılar ve yapılacak olan işlem belirleniyor. Bu metoda bakalım.

void sayiatama()
        {
            char[] aritmetik = {'+', '-','*','/'};//4 İşlem Değişken Tanımı

            Random rnd = new Random();
            //İşlem seçimi yapılıyor...
            islem = rnd.Next(0, 4);
            label2.Text = aritmetik[islem].ToString();
            if (islem == 2) // Çarpma işleminin zorluğundan dolayı süreyi uzun tutuyoruz...
                sure = sure * 2;
         
            // Sayı atamaları yapılıyor...
            ilk_sayi = rnd.Next(a1, a2);//ilk sayı
            label1.Text = ilk_sayi.ToString();
            ikinci_sayi = rnd.Next(b1, b2);//ikinci sayi
            label3.Text = ikinci_sayi.ToString();
        }
Bu metod ile ilgili söylenebilecek çok bir şey yok. Fark ettiğiniz gibi işlem seçimi yapılıyor ve rastgele sayılar atanıyor. Tek farklı durum burada çarpma işlemi seçim olarak gelirse süreyi iki katı vermek oluyor.

Peki ilk bu işlemden sonra ne yapılması gerekiyor. Artık oyun başladı ve sayı atamaları yapıldı demektir. Oyuncunun cevabı yazması ve butona basması artık rahatlıkla beklenebilir. Peki oyuncu doğru cevabı verip butona basarsa ne olacak. Cevapla butonunun içerisine bakalım.
private void button1_Click(object sender, EventArgs e)
        {
            timer1.Stop();
            sonucukontrolet();
        }

İlk bakışta belli oluyor. Çok kısave net. Timer durduruluyor hemen ve sonucukontrolet() adındaki metod çalıştırılıyor. Çünkü girilen sayı ile bilgisayarın sonucu kontrol edilmesi lazım. Bakalım sonucukontrolet() metodunda neler oluyor.
void sonucukontrolet()
        {  // Madde1:
            if (can!=0 && textBox1.Text !="") //can 0'a eşit olmadığı sürece Yapacağı İşlemler
            {
                // Madde2:
                //İslem işarete göre yapılıyor... Sonuc ile Giris kıyaslanıyor...
                int giris = int.Parse(textBox1.Text);
                if (islem == 0)
                    sonuc = (ilk_sayi + ikinci_sayi);
                else if (islem == 1)
                    sonuc = (ilk_sayi - ikinci_sayi);
                else if (islem == 2)
                    sonuc = (ilk_sayi * ikinci_sayi);
                else if (islem == 3)
                    sonuc = (ilk_sayi / ikinci_sayi);
                if (sonuc == giris) cevap = true; //  Cevabın doğru olup olmadığını bu if ile anlıyoruz.

                // Madde3:
                if (cevap == true) // Doğru cevap verildiyse
                {
                    gecis++; // Bir level da toplam 7 soru sorduruyoruz. Bu değişken toplam soru sayısını tutuyor.
                    MessageBox.Show("Doğru Cevap Verdiniz... Sıradaki Sorunuz Geliyor...");
                    timer1.Start();
                    skor = skor + oyunpuani; // Oyuncuya puanı ekleniyor.

                    // Madde4:// Bir sonraki seviyeye geçiş kontrol ediliyor...
                    if (gecis>=7)
                    {
                        timer1.Stop();
                        seviyeatla++;
                        if (seviyeatla >= 6) // Son level ise oyunda toplanan skor oyuncuya gösteriliyor.
                        {
                            MessageBox.Show("Oyun Bitti Tebrikler... Skorunuz:" + skor);
                            Application.Restart(); // Her şey bitirilip tekrar program başlatılıyor.
                        }
                        MessageBox.Show(seviyeatla + ". Seviyeye Geçmeye Hak Kazandınız...\n"+(seviyeatla-1).ToString()+". Seviye Skorunuz : "+skor.ToString());
                        MessageBox.Show("+1 Can Geldiiiii..."); //Her level geçişinde 1 can veriliyor.
                        can++;
                        gecisyap(seviyeatla);
                        gecis = 0;

                    }
                    puankontrolet(); // Bu metod her 100 puanda bir can vermek için skoru kontrol eden bir metoddur.
                    degergoster(); // Son durumlar gösteriliyor aynı zamanda yeni sayılar atanıyor...
                }
                // Madde5:
                else if (cevap==false) // Cevap yanlışsa bu kısım işliyor.
                {
                    gecis++;
                    MessageBox.Show("Yanlış Cevap Verdiniz. 1 Canınız Eksiliyor. Dogru Cevap " + sonuc.ToString() + "olmalıydı");
                    surekontrolvecanazalt();
                    timer1.Start();
                }
                cevap = false;
            }
         
            else if (can==0)//can 0'a eşit olduğunda yapacağı İşlem... Oyun bitiyor...
            {
                MessageBox.Show("Hakkınız Tükenmiştir... Oyun Skorunuz:" + skor);
                Application.Restart();
            }
        }

Sizinde tahmin edeceğiniz gibi programın can alıcı noktası geldi. Burayı biraz irdeleyelim.
Madde1: Şimdi can yoksa ve kutuya değer girilmediyse kesinlikle cevap kontrolü yaptırmıyoruz. bu durumda can==0 if satırı ile oyunu bitiyoruz.
Madde2: İşlemleri yaptırdığımız kısım burası. Önce hangi dört işlem var ise onu belirleyip sayılara işlemleri yaptırıyoruz. Sonrada oyuncunun girdiği ile doğru olup olmadığını kontrol ediyoruz.
Madde3: Cevap doğru ise mesaj verdiriyoruz. Skoru ve soru sayısını artırıyoruz. Aynı zamanda her doğru cevapdan sonra toplam soru sayısı 7 yi geçti ise bir sonraki levela geçiş yaptırıyoruz.
Madde4: Geçiş içinözel bir şey demeye gerek yok. Sadece her geçişte  gecisyap(seviyeatla) adındaki metoda gitmemiz gerekiyor. Bu metoda seviye sayısını gönderiyoruz ve o bize yeni değerleri belirleyip oyuna devam ettiriyor. Bir de bu maddenin içeriğinin tamamı cevap yanlış ise de olması lazım. Ama biz eklemedik. Niye eklemedik. Bilmiyorum:)
Madde5: Şimdi burada da kullanılan bir metod var. O da  surekontrolvecanazalt(); metodu. Birazdan buna da bakacağız.

Şimdi yukarıdaki metodlara tek tek bakalım. gecisyap(seviyeatla); metodu:
void gecisyap(int seviye)
        {
            if (seviye ==2)
            {
                oyunsuresi = 20; // Leveldeki sorular için verilen süre...
                oyunpuani = 12; // Leveldeki her doğru cevap için verilen süre...
                a1 = 10; a2 = 99; b1 = 10; b2 = 20; // Sayı aralıkları burada belirleniyor...
                label6.Text = "Level 2";
            }
            else if (seviye == 3)
            {
                oyunsuresi = 25;
                oyunpuani = 18;
                a1 = 50; a2 = 150; b1 = 20; b2 = 50;
                label6.Text = "Level 3";
            }
            else if (seviye == 4)
            {
                oyunsuresi = 30;
                oyunpuani = 24;
                a1 = 50; a2 = 200; b1 = 20; b2 = 100;
                label6.Text = "Level 4";
            }
            else if (seviye == 35)
            {
                oyunsuresi = 30;
                oyunpuani = 30;
                a1 = 100; a2 = 250; b1 = 50; b2 = 100;
                label6.Text = "Level 5";
            }
            timer1.Start(); // Seviye geçişlerinden sonra süreyi tekrar başlatıyoruz...
        }
Bu metodun tek yaptığı iş gelen seviye değerine göre yeni kuralları belirlemek. Yeni level de oyun süresi ne kadar olacak, her doğru soruya kaç puan verilecek. Aynı zamanda sayı aralıkları ne kadar olacak.

Bir diğer metod. puankontrolet(); metodu:
void puankontrolet()
        {
            if (skor>=canvermepuani)
            {
                MessageBox.Show("+1 Can Geldiiiii...");
                can++;
                canvermepuani += 100;
            }
        }
Evet. Her 100 puana bir can veriyoruz. Bunun için skora bakıyoruz. Önce 100 puanı geçince bir can veriyoruz. Bir sonrakinde 200 puanı geçince bir can veriyoruz. Bu şekilde devam ediyor.

Son ve ne önemli metodlarımızdan birisi: surekontrolvecanazalt();
void surekontrolvecanazalt()
        {
            timer1.Stop();  // buraya geldiysek zaman durmalı.
            can = can - 1; // can muhakkak bir azalmalı. Çünkü ya zaman doldu, ya yanlış cevap verildi.
            sure = oyunsuresi; // Süre baştan yazılmalı. 
            skor = skor - 4; // Her hataya 4 puan düşüyoruz.
            degergoster(); // Değerleri yazdırdığımız gibi yeni soruyu da gönderiyoruz...
        }

Bu sayede cevapla butonun içerisinde olanlar yani sonucukontrolet metodunda olanları açıklamış olduk. Dikkatli bir takip ile buraya kadar anlattığımız her şey gayet rahat bir şekilde anlaşılmış olmalı dersek inanmayın. Hakikaten biraz karmaşık. Ama anlaşılmayacak bir durum değil. :)

Peki zaman azalacak, zamana bakılacak diyoruz da timer_tick de kod olarak ne yazılacak. bir de bu kısma bakalım. Burada timerın intervalini 1000 olarak ayarlamayı arayüzde özellikler kısmında unutmayalım.
private void timer1_Tick(object sender, EventArgs e)
        {
            sure--; // Verilen süreyi her seferinde bir azaltıyor...
            label7.Text = "Kalan Süre  = " + sure.ToString();
            if (sure == 0) // Süre sıfır oluncada dananın kuyruğu kopuyor... 
            {
                surekontrolvecanazalt();
                MessageBox.Show("Cevap Verme Süreniz Doldu. \n1 Can Kaybettiniz.");
                timer1.Start();
            }
        }

En son olarak da durdur butonunun kodlarına bakalım. Oyunun istediğimiz yerinde ara verebiliyoruz. Bir de ipucu. Soru çok zor ise durdurun ve yeniden başlayın. Ne de olsa bir kontrol yapmadık. Her durdurmada da soru değiştiğine göre :):)

        int baslatbutonu = 1; // Bu global değişken... Sakın unutmayın...
        private void button2_Click(object sender, EventArgs e)
        {
            baslatbutonu++; // Her butona basıldığında bir artırıyoruz... 
            if (baslatbutonu % 2 == 1)
            {
                button1.Enabled = true;
                timer1.Start();
                button2.Text = "DURDUR";
            }
            else if (baslatbutonu % 2 == 0)
            {
                timer1.Stop();
                button1.Enabled = false;
                button2.Text = "BAŞLAT";
            }

            degergoster();
        }

Buradaki amaç aynı buton üzerinde hem oyunu durdurmak, hem de yeniden başlatabilmek. Bunun için birbirinin tersi işlemini yapan iki if var burada. Eğer durdurmak istiyorsak, timerı durduruyoruz, cevapla butonunu pasif hale getiyoruz, butonun üzerindeki yazıyı Başlat olarak değiştiriyoruz. Başlatmak istiyorsak da bunların tam tersini yapıyoruz. Son olarak baslatbutonu değişkeni tek sayılarda başlatıyor, çift sayılarda durduruyor. Bu son yazdığım cümleyi anladıysanız programı anladınız demektir.

Bu oyuna o kadar çok ekleme yapılabilir ki... Onları da size bırakıyoruz... 

22 Ocak 2014 Çarşamba

Direnç Değeri Hesaplama - Renk Kodları

Direnç değerlerini hesaplama programımız. Renk değerlerini girdikten sonra direnç hesaplamasını yaptırıyoruz. tolerans hesabına kadar yapabiliyoruz... Tabii tolerans seçilmezse her hangi bir tolerans hesaplaması yaptırmıyoruz. Aynı zamanda tersi işlemleri de yaptırıyoruz. Yani direnç değerinden renk kodlarını bulma işlemini de yaptırıyoruz. Bu işlemleri yaptırırken direnç renklerini de resim üzerinde gösteriyoruz.

Programın ilk ekranından bir görüntü. Burada direnç resminin üzerinde 4 adet button var. 3,4,5,6 numaralı butonları getirdiğimiz direnç resminin üzerine yerleştireceğiz.















Değerler girildikten sonra bir ekran görüntüsü. Örnekte fark ettiyseniz renk değerleri comboboxdan seçildikten sonra direnç değeri aşağıda gözüktüğü gibi aynı zamanda seçilen renk değerleri de direnç resmi üzerinde gösterilmektedir. 















Yapılan işlemde tolerans seçilmeseydi aşağıdaki gibi bir ekran sonucu olacaktı.
















Sağdaki text kutusuna değer girdiğimizde ise biz renkleri veriyor. Burada bulunan renk kodları aynı zamanda direnç resmi üzerinde de gösteriliyor. Buradaki bir ayrıntı direnç birim değerinin girilmesinde. 
















Peki kod kısmında neler gerçekleşiyor. Bir de onlara bakalım. Kullandığımız dört tane metod var. Bunlar aşağıdaki gibi tanımlanmıştır. Yanlarında açıklamaları da vardır. 








Önce metodlarımız yerine bu sefer buttonlarımızın kodlarını gösterelim. Formun girişinde Load olayında çevir butonunu kapatıyoruz.
private void Form1_Load(object sender, EventArgs e)
        {
            button2.Enabled = false; // OHM değerini çevirmek için kullanılan butonu pasif duruma getiriyoruz... 
        }

Textbox a her hangi bir değer girişi yapıldığın da çevir butonunu açmak içinde aşağıdaki kodları textboxın changed olayına yazıyoruz.
private void textBox1_TextChanged(object sender, EventArgs e)
        {
            button2.Enabled = true; // Her hangi bir değer girildiği anda aktif hale getiriyoruz...
        }

Ayrı bir sayfada renk tablosunu göstermek için aşağıdaki kodları yazalım.
private void button7_Click(object sender, EventArgs e)
        {
            // Renk tablosunu göstermek için ayrı bir sayfaya yönlendiriyoruz... 
            Form ekle = new Form2();
            ekle.Show();
        }
Form2 ye tablomuzu hazırlamalıyız. Bu renk kodlarını gösteren bir tablo olacak. Aşağıdaki gibi hazırlayabiliriz.

































Basit olan button olaylarımızdan sonra tekrar yukarıdaki metodlarımıza geri dönelim. İlk metodumuz ile başlayalım. Gelecek olan renk ismine göre bize sayısal karşılığını verecek olan bir metod tasarlamış oluyoruz. return deger ile de geriye dönüş yapmış oluyoruz. 
public string renkdeger(string renky)
        {
            string deger = "";
            if (renky == "Siyah")
                deger = "0";
            else if (renky == "Kahverengi")
                deger = "1";
            else if (renky == "Kırmızı")
                deger = "2";
            else if (renky == "Turuncu")
                deger = "3";
            else if (renky == "Sarı")
                deger = "4";
            else if (renky == "Yeşil")
                deger = "5";
            else if (renky == "Mavi")
                deger = "6";
            else if (renky == "Mor")
                deger = "7";
            else if (renky == "Gri")
                deger = "8";
            else if (renky == "Beyaz")
                deger = "9";

            return deger;
 }

İkinci metod da ise sayısal verilen değeri renk karşılığına dönüştürmektedir. 
public string renkysayi(string renky)
        {
            string deger = "";
            if (renky == "0")
                deger = "Siyah";
            else if (renky == "1")
                deger = "Kahverengi";
            else if (renky == "2")
                deger = "Kırmızı";
            else if (renky == "3")
                deger = "Turuncu";
            else if (renky == "4")
                deger = "Sarı";
            else if (renky == "5")
                deger = "Yeşil";
            else if (renky == "6")
                deger = "Mavi";
            else if (renky == "7")
                deger = "Mor";
            else if (renky == "8")
                deger = "Gri";
            else if (renky == "9")
                deger = "Beyaz";

            return deger;
        }

Direnç resminin üzerinde renklerin gözükebilmesi için aşağıdaki metodumuzu kullanacağız. Direnç resminin üzerine yerleştirmiş olduğumuz butonlar ile renk değişimlerini yapacağız. Daha öncede söylediğimiz gibi direnç resminin üzerinde 4 tane butonumuz var. Burada butonların backcolor özelliği ile renklerini değiştireceğiz. 

Renklerimiz için 4 tane comboboxımızı var. Birden fazla combobox olduğu için aynı metodda kullanmak amacı ile metodumuz da combokutusu adında Combobox türünde bir parametre tanımlıyoruz. Aynı şekilde 4 tane butonumuz olduğu için butonum adında Button türünde de bir parametre tanımlıyoruz. 

Buradaki son parametre olan deger parametresi ise ayrım yapmak için kullanılıyor. Deger eğer boş olursa renklerden direnç değeri hesaplama yapıldığı anlaşılıyor. Eğer direnç değeri verilip renkler bulunacaksa deger dolu olarak geliyor. Aşağıdaki ilk if bunun için kullanılmaktadır. renkkontrolet değişkenine ya comboboxdan yada deger parametresinden bulunmak istenen renk ataması yapılmaktadır. 
void direncrenkleri(ComboBox combokutusu, Button butonum,string deger)
        {
            // Bu metoda değer gelirken combobox ve button isimlerini gönderiyoruz... 
            string renkkontrolet = "";
            if (deger == "")
                renkkontrolet = combokutusu.Text;
            else
                renkkontrolet = deger;

            if (renkkontrolet == "Siyah")
                butonum.BackColor = Color.Black;
            else if (renkkontrolet == "Kahverengi")
                butonum.BackColor = Color.Brown;
            else if (renkkontrolet == "Kırmızı")
                butonum.BackColor = Color.Red;
            else if (renkkontrolet == "Turuncu")
                butonum.BackColor = Color.Orange;
            else if (renkkontrolet == "Sarı")
                butonum.BackColor = Color.Yellow;
            else if (renkkontrolet == "Yeşil")
                butonum.BackColor = Color.Green;
            else if (renkkontrolet == "Mavi")
                butonum.BackColor = Color.Blue;
            else if (renkkontrolet == "Mor")
                butonum.BackColor = Color.Purple;
            else if (renkkontrolet == "Gri")
                butonum.BackColor = Color.Gray;
            else if (renkkontrolet == "Beyaz")
                butonum.BackColor = Color.White;
        }

Tolerans değerinin hesaplanması 4. comboboxda olacaktır. Eğer comboboxda her hangi bir seçim olmadı ise bu durumda tolerans değer hesaplaması yapılmayacaktır. Burada parametre olarak gelen deger direnc değerini, renky combobox4 de olan tolerans rengini, cins ise direnc birimini göstermektedir.
void toleranshesapla(string renky, double deger, string cins)
        {
            if (renky == "Siyah")
                label10.Text = "Tolerans =  +/- " + (deger * 0.2).ToString() +" " + cins;
            else if (renky == "Kahverengi")
                label10.Text = "Tolerans =  +/- " + (deger * 0.01).ToString() + " " + cins;
            else if (renky == "Kırmızı")
                label10.Text = "Tolerans =  +/- " + (deger * 0.002).ToString() + " " + cins;
            else if (renky == "Yeşil")
                label10.Text = "Tolerans =  +/- " + (deger * 0.005).ToString() + " " + cins;
            else if (renky == "Beyaz")
                label10.Text = "Tolerans =  +/- " + (deger * 0.1).ToString() + " " + cins;
            else if (renky == "Altın")
                label10.Text = "Tolerans =  +/- " + (deger * 0.05).ToString() + " " + cins;
            else if (renky == "Gümüş")
                label10.Text = "Tolerans =  +/- " + (deger * 0.1).ToString() + " " + cins;
        }

Gelelim direnç değeri hesapla butonumuzun içeriğindeki kodlara.
Madde 1: İlk aşamada combobox1,2,3 değerlerinin dolu olması gerekiyor.
Madde 2: renkdeger adındaki metodumuza comboboxda seçilen renkleri gönderip sayısal karşılıklarını alırız. Madde 3: Direnç hesaplamasını yapıp sonuc adındaki değişkenimize aktarıyoruz.
Madde 4: Direnç birimlerinin hesaplatıyoruz. Ohm, Kohm, Mohm olmasını belirliyoruz.
Madde 5: Tolerans hesaplamasını yaptırıyoruz.
Madde 6: Direnç resminin üzerindeki buttonlara renkler aktarılıyor.

private void button1_Click(object sender, EventArgs e)
        {
            //Madde 1:
            if (comboBox1.Text != "" && comboBox2.Text != "" && comboBox3.Text != "")
            {
                double sonuc = 0;
             
                // Madde 2:
                string a = renkdeger(comboBox1.Text); // 1. Renk değeri...
                string b = renkdeger(comboBox2.Text); // 2. Renk değeri...
                string c = renkdeger(comboBox3.Text); // 3. Renk değeri...
                string d = renkdeger(comboBox4.Text); // Bu tolerans değeri için...

                // Madde 3:
                double c2 = Convert.ToDouble(c); // Bu kısımda çarpan olan 3. renk değeri hesaplanıyor...
                c2 = Math.Pow(10, c2);

                string ab = (a).ToString() + (b).ToString(); // İlk iki renk değeri birleştiriliyor...
                double ab2 = Convert.ToDouble(ab);
                sonuc = ab2 * c2; // Bu kısımda renk değeri sayısal olarak bulunuyor...

                // Madde 4: 
                // Bu kısım Mohm, Kohm yada Ohm olduğunu algılamak için kullanılıyor...
                string cins = ""; // Tolerans işleminin sonunda birimi göstermek için...
                if (sonuc > 1000000)
                {
                    sonuc = sonuc / 1000000;
                    label5.Text = sonuc.ToString() + "  Mohm";
                    cins = "Mohm";
                }
                else if (sonuc > 1000)
                {
                    sonuc = sonuc / 1000;
                    label5.Text = sonuc.ToString() + "  Kohm";
                    cins = "Kohm";
                }
                else
                {
                    label5.Text = sonuc.ToString() + " ohm";
                    cins = "ohm";
                }

                // Madde 5:
                if (comboBox4.Text != "")
                    toleranshesapla(comboBox4.Text, sonuc,cins);

                // Dirençin üzerinde yapacağımız renklendirme kısmı burada yapılıyor... 
          // direncrenkleri metodunun 3. degeri olan boşluk kısmını sayıdan renge çevirmek istediğimizde kullanıyoruz... 
                // Madde 6:
                direncrenkleri(comboBox1, button3, "");
                direncrenkleri(comboBox2, button4, "");
                direncrenkleri(comboBox3, button5, "");
                direncrenkleri(comboBox4, button6, "");

                // Comboboxların içeriğini boşaltmak için aşağıdaki komutlar kullanılabilir... 
                //foreach (Control item in this.Controls)
                //{
                //    if (item is ComboBox)
                //        item.ResetText();
                //}
            }
            else
                MessageBox.Show("Eksik Seçim... Hata...");
        } 

Çevir butonun içerisindeki kodlarımız ise aşağıdaki gibi olacaktır.

  • Radiobuttonlardan 1. nin checked özelliğini arayüz kısmında true olarak tanımlayalım. Bu sayede muhhakkah bir seçim yapılmış olacaktır. Direnç birimleri için bir seçim olmalıdır. 
  • Direnç hesaplaması için substring komutunu kullandık. sonuc değişkeninin içerisinde bulunan ilk rakam bizim 1. rengimizi, ikinci rakam bizim 2. rengimizi, geriye kalan sıfırlar ise 3. rengimizi göstermektedir.
  • Direnc resminin üzerinde buttonlara renkleri vermek için direncrenkleri(comboBox1, button3, label6.Text); metodunu kullanıyoruz. Burada comboboxlar aslında kullanılmıyor. Burada asıl önemli olan labelların içerisindeki renklerin gönderilmesi. 

private void button2_Click(object sender, EventArgs e)
        {
            string deger = "";
            // ohm, kohm, mohm durumunun algılanması...
            if (radioButton1.Checked == true)
                deger = textBox1.Text;
            else if (radioButton2.Checked == true)
                deger = (int.Parse(textBox1.Text) * 1000).ToString();
            else if (radioButton3.Checked == true)
                deger = (int.Parse(textBox1.Text) * 1000000).ToString();

            // Direnç renklerinin hesaplanması...
            string ilkdeger = deger.Substring(0, 1);
            label6.Text = renkysayi(ilkdeger);
            string ikincideger = deger.Substring(1, 1);
            label7.Text = renkysayi(ikincideger);
            string sondeger = renkysayi((deger.Length - 2).ToString());
            label8.Text = sondeger;

            // Direncin üzerinde yapacağımız renklendirme kısmı burada yapılıyor...
            direncrenkleri(comboBox1, button3, label6.Text);
            direncrenkleri(comboBox2, button4, label7.Text);
            direncrenkleri(comboBox3, button5, label8.Text);

            // Ekranda gözükmeleri için true yapıyoruz...
            label6.Visible = true;
            label7.Visible = true;
            label8.Visible = true;
        }

Direnç hesaplaması için güzel bir çalışma oldu. 

21 Ocak 2014 Salı

Kim Milyoner Olmak İster...

C# uygulamalarında kim milyoner olmak ister yarışmasını yapacağız... Yarışmada telefon jokerini ve seyirci jokerini yapamıyoruz... Ama %50 jokeri ve Yarı Yarıya jokerlerini yapabiliyoruz... 

Projemiz içerisinde en çok kullandığımız özellik diziler oldu. Çünkü veritabanı kayıt işlemleri yapmadığımız için soruları, cevapları ve cevap şıklarını tutabileceğimiz bir alan olması gerekiyordu. Bu işlemi de dizileri kullanarak yaptık. Zamanlama işlemi için Timer kullandık. Soruları iki kısım olarak ayırdık. 1. Kısımdaki 7 sorunun her biri için 30 saniye süre verdik. Soruları da iki kısım olarak ayarladık. Zor sorular için ikinci diziyi kullandık. 

Yarışma içerisinde paraağacı ile yarışmacının kazandığı para arttırıldı. Programı yaparken bol bol metodları kullandık. Dogrucevapverince metodu burada iki soru türü için kullanılıyor. Sorular dizisi  ve Sorular1 dizisi. Soru sayısı 1 ise direkt sorular geliyor. Soru sayısı 2 ile 6 arasında Sorular dizisinden gelirken, 7 ile 11 arasında ise Sorular1 dizisinden yarışma soruları geliyor.

Şimdi programın arayüzüne bakalım... Program ilk açıldığında aşağıdaki arayüz geliyor... Oyuna başla butonu ile başlıyoruz...



















Programın tasarımı aşağıdaki gibi olacaktır.

















Buradaki button3 yazılı olanlar cevap şıkları olacaktır. Yukarıda Zaman adında bir labelımız var... Süreyi göstermesi için kullanacağız... Paraağacı içinde sırası ile labelları dolduracağız... 

Programın kod kısmına bakalım... Öncelikle kullanmış olduğumuz değişkenleri tanıyalım...
        int zaman = 30;
        int paraagaci = 0;
        int sorusayisi = 1; // Soru sayacımız... Her soruda artıracağız...
        string[] sorular1 = new string[51]; // 1. Kısım soruların olduğu dizi... 
        string[] dogrucevap1 = new string[51];
        string[] buton11 = new string[51]; // Her cevap şıkkı içinde bir dizi tanımladık...
        string[] buton22 = new string[51];
        string[] buton33 = new string[51];
        string[] buton44 = new string[51];

        string[] sorular = new string[49]; // 2. Kısım soruların olduğu dizi... 
        string[] dogrucevap = new string[49];
        string[] buton1 = new string[49];
        string[] buton2 = new string[49];
        string[] buton3 = new string[49];
        string[] buton4 = new string[49];
        string[] para = new string[12]; // Para ağacı için kullanacağımız dizi elemanı...

Program içerisinde ilk aşamada tanımlayacağımız değişkenlerimiz yukarıdakiler... Bunlar global değişkenler olacaktır... 

Soru seçimi için sayı ataması yapacağımız rastgele iki tane değişkenimiz olacak...
        int y = 0; // Rastgele soru gelmesi için atanan değişkenler... 1. Kısım sorular için...
        Random x = new Random();
        int y1 = 0; // 2. Kısım sorular için...
        Random x1 = new Random();

Kullandığımız metodlar aşağıdaki gibidir...







Buradaki metodları sırası ile açıklayalım ve kodlarını görelim... buttongetir() metodu ile başlayalım... Ekranda oyun başladığı zaman kullandığımız metodtur... Cevap şıklarını göstermek için kullanıyoruz...
        void buttongetir()
        {
            button3.Visible = true;
            button4.Visible = true;
            button5.Visible = true;
            button6.Visible = true;
        }

paraagacı() metodumuz kazanılan ödülü göstermek için kullandığımız metoddur... Sorular sıralı olarak geldiği için her soruda bir tane seçeneği göstermemiz yeterli olacaktır... Sırası ile paraagacı seçenekleri gelmektedir. Burada elseif yapısı da kullanılabilir... Her soruya verilen doğru cevapdan sonra paraagacı() metoduna bir defa uğrayıp kazanılan ödül gösterilmektedir...
void paraagacı()
        {
            paraagaci++;
            if (paraagaci == 1) label3.Visible = true;
            if (paraagaci == 2) label4.Visible = true;
            if (paraagaci == 3) label5.Visible = true;
            if (paraagaci == 4) label6.Visible = true;
            if (paraagaci == 5) label7.Visible = true;
            if (paraagaci == 6) label8.Visible = true;
            if (paraagaci == 7) label9.Visible = true;
            if (paraagaci == 8) label10.Visible = true;
            if (paraagaci == 9) label11.Visible = true;
            if (paraagaci == 10) label12.Visible = true;
            if (paraagaci == 11) label13.Visible = true;
        }

Çekil butonu ilk soruya doğru cevap verilmeden aktif olmayacaktır. Bu metod bunu sağlamaktadır.
void cekilbutonugorunum()
        {
            if (sorusayisi >=1 && sorusayisi <= 11)
                button8.Visible = true;
        }

Yeni her soru geldiğinde aşağıdaki metod ile sorusayısı bir artırılmaktadır... sorusayisiniartir() metodu ile bu artış sağlanmaktadır. Soru sayısı 12 ise yarışma bitmiş ve ödül kazanılmıştır...
void sorusayisiniartir()
        {
            sorusayisi++;
            
            if (sorusayisi == 12)
            {
                MessageBox.Show("Tebrikler 1.000.000 TL Kazandınız");
                Application.Restart();
            }
        } 

Bir de yarışmada yanlış cevap verme durumu vardır... Bu durumda ise oyunukaybedince() metodu ile kazanılan ödül gösterilmekte ve doğru cevap gösterilmektedir... Yalnız yanlış cevap durumunda soru sayısına bakılmaktadır... 
Soru sayısı 2 ye kadar ise ödül verilmemektedir... 
Soru sayısı 7 ye kadar ise 1000 TL kazanılmaktadır... 
Soru sayısı 11 e kadar ise 15000 TL kazanılmaktadır... 

void oyunukaybedince()
        {
            if (sorusayisi == 1 || sorusayisi == 2)
            {
                MessageBox.Show("Malesef Yanlış Cevap Verdiniz Oyundan Elendiniz"+"Doğru cevap "    +dogrucevap[y].ToUpper()+   "   Şıkkı Olacaktı");
                Application.Restart();
            }
            else if (sorusayisi == 3 || sorusayisi == 4 || sorusayisi == 5 || sorusayisi == 6 || sorusayisi == 7)
            {
                MessageBox.Show("Malesef Yanlış Cevap Verdiniz Ve 1000 TL Kazandınız" + "Doğru cevap " + dogrucevap[y].ToUpper() + "   Şıkkı Olacaktı");
                Application.Restart();
            }
            else if (sorusayisi == 8 || sorusayisi == 9 || sorusayisi == 10 || sorusayisi == 11)
            {
                MessageBox.Show("Malesef Yanlış Cevap Verdiniz Ve 15.000 TL Kazandınız"+"Doğru Cevap   "    +dogrucevap1[y1].ToUpper()+"    Şıkkı Olacaktı");
                Application.Restart();
            }
        }

dogrucevapverince() metodumuz adından da anlaşılacağı gibi doğru cevap verildiğinde çalışmaktadır... Amaç yeni soru getirmektir... 
void dogrucevapverince()
        {
            buttongetir();
            if (sorusayisi == 1)
            {
                y = x.Next(0, 48); // Sadece ilk soru için böyle bir durum vardır... 
                label2.Text = sorular[y];
                button3.Text = buton1[y];
                button4.Text = buton2[y];
                button5.Text = buton3[y];
                button6.Text = buton4[y];
            }
            else if (sorusayisi>=7 && sorusayisi<=11)
            {
                y1 = x1.Next(0, 50); // 2. Kısım sorular gelmektedir... 7 ve 7 den sonraki sorular için bu kısım çalışacaktır...
                label2.Text = sorular1[y1];
                button3.Text = buton11[y1];
                button4.Text = buton22[y1];
                button5.Text = buton33[y1];
                button6.Text = buton44[y1];
            }
            else if (sorusayisi >= 2 && sorusayisi <= 6)
            {   // normalde sorusayisi <= 7 olması lazım... ama soru sayısından bir fazla olan soru sorulacağı için
                // yani yeni soru sorulacağı için sorusayisi <= 6 aldık...
                y = x.Next(0, 48); // Soru sayısı 7 ye kadar olanlar için bu kısım kullanılmaktadır...
                label2.Text = sorular[y];
                button3.Text = buton1[y];
                button4.Text = buton2[y];
                button5.Text = buton3[y];
                button6.Text = buton4[y];
            }
        }

ciftcevap(string gelensecenek) metodumuz adı üstünde çift cevap jokeri kullanıldığında ve yanlış cevap verildiğinde aktif olacaktır... Hangi yanlış seçeneğe basıldı ise o cevap şıkkı kapatılacaktır... Bu kısma doğru cevap verilmediği takdirde gelecektir... 
void ciftcevap(string gelensecenek)
        {
            //Burada çift cevap jokeri kullanıldığında ve soru yanlış cevaplandığında ne yapılmasını istiyorsak onu yapıyoruz;
            //Ben tıklanan buttonu gizleyeceğim;
            if (gelensecenek == "a")
                button3.Hide();
            else if (gelensecenek == "b")
                button4.Hide();
            else if (gelensecenek == "c")
                button5.Hide();
            else if (gelensecenek == "d")
                button6.Hide();
            cjkulln = true; // Çift joker butonu kullanıldı...
            cjaktif = false; // Çift cevap jokeri kullanılmış oldu...
        }

Yarışmacının gelen cevabını kontrol etmek için aşağıdaki metod kullanılmaktadır... Programın ana ve en önemli kısmı burasıdır... Bu metod ile gelen cevap şıkkı alınmakta ve dogrucevap şıkkı ile kıyaslanmaktadır... Dogru cevap şıkları ayrı bir dizi içerisinde tutulmaktadır... 
1. Kısım sorular için cevaplar dogrucevap[y] dizi değişkeninde,
2. Kısım sorular için cevaplar dogrucevap1[y1] dizi değişkeninde tutulmaktadır... 

void buttonsorularkontrol(string harfgelen)
        {
            if (sorusayisi >= 1 && sorusayisi <= 7)
            {
                if (dogrucevap[y] == harfgelen)
                { // Burası doğru cevap verildiğinde yapılacakların olduğu kısımdır...
                    cekilbutonugorunum();   // Çekil butonu ilk doğru cevaptan sonra gözüküyor... 
                    zaman = 30;             // Zamanlama tekrar 30 sn ye geliyor... 
                    MessageBox.Show("Tebrikler Doğru Cevap Verdiniz...!");
                    dogrucevapverince();    // Yeni soru getiriliyor.. 
                    paraagacı();            // Kazanılan para ağaçta gösteriliyor...
                }
                else
                {
                    if (cjaktif && !cjkulln) // Çift joker hakkı kullanılıyorsa burada kontrol ediliyor...
                        ciftcevap(harfgelen);
                    else
                        oyunukaybedince();   // Cevap yanlış... Oyun kaybedildi...
                }
            }

            else if (sorusayisi >= 8 && sorusayisi <= 12)
            {
                if (dogrucevap1[y1] == harfgelen)
                {
                    cekilbutonugorunum();
                    MessageBox.Show("Tebrikler Doğru Cevap Verdiniz...!");
                    dogrucevapverince();
                    paraagacı();
                }
                else
                {
                    if (cjaktif && !cjkulln)
                        ciftcevap(harfgelen);
                    else
                        oyunukaybedince();
                }
            }
            sorusayisiniartir();
        }

Şimdi de butonlara tıklandığında neler yapılacağını görelim... İlk olarak çıkış butonuna bakalım... Tıklandığında tamamen programdan çıkılmaktadır...
private void button2_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }

Şimdi de form açıldığında ilk yapılmasını istediğimiz işlemleri yapalım. İlk açılış sırasında oyuna başla butonuna basılana kadar diğer kısımları göstermeyeceğiz... Bu sebeple butonları kapatıyoruz...
private void Form1_Load(object sender, EventArgs e)
        {
            int sayi =30;// Yarışmada sorular için verilen zamanlama...
            label15.Text=sayi.ToString();
            button7.Visible = false; // %50 jokeri
            button9.Visible = false; // Çift joker
            label13.Visible = false;
            label14.Visible = false;
            label5.Visible = false;
            label6.Visible = false;
            label7.Visible = false;
            label8.Visible = false;
            label9.Visible = false;
            label10.Visible = false;
            label11.Visible = false;
            label12.Visible = false;
            label13.Visible = false;
            label14.Visible = false;
        }

Cevap şıkları butonu ise aşağıdaki gibi olacaktır. Burada hangi şık işaretlendi ise o seçenek gönderilerek buttonsorularkontrol() metodu çalıştırılmaktadır. Şık kontrolü bu metod üzerinden yapılmaktadır.
private void button3_Click(object sender, EventArgs e)
        {
            buttonsorularkontrol("a");
        } // a şıkkı butonu
        private void button4_Click(object sender, EventArgs e)
        {
            buttonsorularkontrol("b");
        } // b şıkkı butonu
        private void button5_Click(object sender, EventArgs e)
        {
            buttonsorularkontrol("c");
        } // c şıkkı butonu
        private void button6_Click(object sender, EventArgs e)
        {
            buttonsorularkontrol("d");
        } // d şıkkı butonu

Yarı yarıya joker butonunun kodlaması ise aşağıdaki gibidir. Burada joker seçildikten sonra dogru cevap hangisi ise onun dışındaki iki seçenek butonu gizli hale gelmektedir.
private void button7_Click(object sender, EventArgs e)
        {
            if (dogrucevap[y]=="a") // Doğru cevap a ise, a seçeneği dışında iki tane cevap kapatılıyor...
            {
                button4.Visible = false;
                button5.Visible = false;
            }
            if (dogrucevap[y] == "b")
            {
                button3.Visible = false;
                button6.Visible = false;
            }
            if (dogrucevap[y] == "c")
            {
                button4.Visible = false;
                button6.Visible = false;
            }
            if (dogrucevap[y] == "d")
            {
                button3.Visible = false;
                button5.Visible = false;
            }
            button7.Visible = false; // Yarıyarıya jokeri kaldırılıyor... 
        }

Her hangi bir soruda oyundan çekilmek istenilebilir. Bu durumda kazanılan ödül gösterilip oyundan çekilmelidir. Çekil butonu aşağıdaki gibi bu işlemi yapmaktadır. Çekil butonu için önemli olan kaç soruya doğru cevap verildiğidir.
private void button8_Click(object sender, EventArgs e)
        {
            if (sorusayisi==2)
                MessageBox.Show("Oyundan çekildiniz ve 1.000 TL Kazandınız");
            else if (sorusayisi == 3)
                MessageBox.Show("Oyundan çekildiniz ve 2.000 TL Kazandınız");
            else if (sorusayisi == 4)
                MessageBox.Show("Oyundan çekildiniz ve 3.000 TL Kazandınız");
            else if (sorusayisi == 5)
                MessageBox.Show("Oyundan çekildiniz ve 5.000 TL Kazandınız");
            else if (sorusayisi == 6)
                MessageBox.Show("Oyundan çekildiniz ve 7.500 TL Kazandınız");
            else if (sorusayisi==7)
                MessageBox.Show("Oyundan çekildiniz ve 15.000 TL Kazandınız");
            else if (sorusayisi == 8)
                MessageBox.Show("Oyundan çekildiniz ve 30.000 TL Kazandınız");
            else if (sorusayisi == 9)
                MessageBox.Show("Oyundan çekildiniz ve 60.000 TL Kazandınız");
            else if (sorusayisi == 10)
                MessageBox.Show("Oyundan çekildiniz ve 125.000 TL Kazandınız");
            else if (sorusayisi == 11)
                MessageBox.Show("Oyundan çekildiniz ve 250.000 TL Kazandınız");
            Application.Restart();
        }

Yarışmacılara zaman olarak 30 saniye verdik. Timer ın interval değerini 1000 olarak yani 1 sn olarak verelim. Bu sayede her timer olayı gerçekleştiğinde zaman bir saniye açılacaktır. Ama bu süre kısıtlaması 7. soruya kadar yapılacaktır. 7. sorudan sonra süre kısıtlaması kaldırılacaktır. Bunun için timer durdurulacaktır.
private void timer1_Tick(object sender, EventArgs e)
        {
            zaman--;
            label15.Text=zaman.ToString();
            if (zaman == 0)
            {
                MessageBox.Show("Süreniz Bitti Ve Oyundan Elendiniz");
                Application.Restart();
            }
            if (sorusayisi==7)
            {
                timer1.Stop();
                label15.Visible = false;
            }
        }

En son olarak da çift joker hakkı için bir butonumuz var. Bu butonumuz da yarışmacı çift joker hakkını kullanmak istiyorsa karşısına çıkıyor. Burada iki tane değişken tanımlıyoruz. cjaktif değişkeni çift joker hakkının kullanılması durumunda butonu gizliyor. cjkulln ise çift cevabın 1. hakkı için kullanılıyor. Yani 1. cevap yanlış ise bir daha ciftcevap(string gelensecenek) metoduna gitmeyi engelliyor.
bool cjaktif = false, cjkulln = false;
        private void button9_Click(object sender, EventArgs e)
        {
            if (!cjaktif && !cjkulln)
            {
                cjaktif = true;
                button9.Hide();
            }
        }

Şimdi ise soruları ve cevapları tutacağımız dizini ayarlayalım... Bunun için bütün yükleme işlemlerini oyuna başla butonunun içerisinde yapacağız... Bu buton çok uzun olduğu için farklı göstermek amacı ile kırmızı renkli yazı ile gösterdik...
private void button1_Click(object sender, EventArgs e)
        {
            
            sorular1[0] = "2010’da yapılacak olan Dünya Münazara Yarışması’na ev sahipliği yapacak olan ülke aşağıdakilerden hangisidir?";
            sorular1[1] = " Avrupa Birliğinin en fazla önemsediği, her alanda geleceğin teknolojisi olarak adlandırılan bilim dalının adı nedir?";
            sorular1[2] = " UEFA Kupasını alan ilk Türk takımı hangisidir?";
            sorular1[3] = "Dünyanın ilk haritasını çizen ünlü Türk denizcisi kimdir?";
            sorular1[4] = " Şu an görev yapmakta olan Genelkurmay Başkanımızın adı nedir?";
            sorular1[5] = " Tarihte Türk adıyla kurulan ilk Türk devleti hangisidir?";
            sorular1[6] = "Telefonun mucidi kimdir?";
            sorular1[7] = " Amerika Kıtası’nı ikiye ayıran önemli su geçitinin adı nedir?";
            sorular1[8] = " Cumhurbaşkanlığı seçimi kaç yılda bir yapılır?";
            sorular1[9] = "Kuzey Atlantik Paktı’nın kısa yazılışı nedir?";
            sorular1[10] = "Nobel ödülleri hangi ülkede verilmektedir?";
            sorular1[11] = " İlk atom bombası hangi şehre atılmıştır?";
            sorular1[12] = "2010 Kültür Başkenti seçilen ilimiz hangisidir?";
            sorular1[13] = "Türkiye’nin uluslar arası telefon kodu aşağıdakilerden hangisidir?";
            sorular1[14] = "  2003 Eurovision yarışmasında birinci olan sanatçımız kimdir?";
            sorular1[15] = " İstiklal Marşı’mızın bestecisi kimdir?";
            sorular1[16] = "Şuanda görev yapmakta olan Cumhurbaşkanımızın ismi nedir?";
            sorular1[17] = "Altın Palmiye Sinema Ödülü hangi film festivalinde verilmektedir?";
            sorular1[18] = "Türkiye’de erozyonla mücadele amacıyla kurulan vakfın kısa adı nedir?";
            sorular1[19] = " Türk tarihinin en ünlü mimarı kimdir?";
            sorular1[20] = "Türk Medeni Kanunu hangi ülkenin medeni kanunundan esinlenerek hazırlanmıştır?";
            sorular1[21] = " Hababam Sınıfı Filminde “İnek Şaban” karakterini canlandıran sanatçı kimdir?";
            sorular1[22] = "Bulgaristan’ın başkenti neresidir?";
            sorular1[23] = " Devlet Su İşleri Genel Müdürlüğü hangi bakanlığımıza bağlıdır?";
            sorular1[24] = "Mimar Sinan’ın Ustalık Dönemi eseri sayılan Edirne’deki eserinin adı nedir?";
            sorular1[25] = "Yeni Türk Lira’sındaki “Yeni” sözcüğü hangi tarihte atılmıştır?";
            sorular1[26] = " Dünya Ekonomik Forumu yıllık olağan toplantısı hangi ülkede yapılmıştır?";
            sorular1[27] = "turizm ve Kültür Bakanlığı ve UNESCO’nun işbirliği ile  2009 yılını ne yılı ilan edilmiştir?";
            sorular1[28] = "“Sinekli Bakkal” Romanının Yazarı Aşağıdakilerden Hangisidir? ";
            sorular1[29] = " Aşağıda Verilen İlk Çağ Uygarlıklarından Hangisi Yazıyı İcat Etmiştir? ";
            sorular1[30] = "Tsunami Felaketinde En Fazla Zarar Gören Güney Asya Ülkesi Aşağıdakilerden Hangisidir? ";
            sorular1[31] = "Mustafa Kemal Atatürk’ün Nüfusa Kayıtlı Olduğu İl Hangisidir? ";
            sorular1[32] = "Aşağıdakilerden Hangisi Dünya Sağlık Örgütünün Kısaltılmış İsmidir? ";
            sorular1[33] = "Romen Rakamında Hangi Sayı Yoktur? ";
            sorular1[34] = "Bir Gün Kaç Saniyedir? ";
            sorular1[35] = "Üç Büyük Dince Kutsal Sayılan Şehir Hangisidir? ";
            sorular1[36] = "Hangi İlimizde Demiryolu Yoktur? ";
            sorular1[37] = "Hangi Ülkenin İki Tane Başkenti Vardır? ";
            sorular1[38] = "Cevdet Bey Ve Oğulları Eseri Kime Aittir? ";
            sorular1[39] = "Bir Sebepten Dolayı Tek Kulağına Küpe Takan Osmanlı Padişahı Kimdir? ";
            sorular1[40] = "Aşağıdaki Ülkelerden Hangisinin Nüfusu Daha Fazladır ?";
            sorular1[41] = "Aspirinin Hammaddesi Nedir? ";
            sorular1[42] = " 1. Eğitim şuarası hangi yıl, nerede yapıldı?";
            sorular1[43] = "2006 Yılın’da Almanya’da Dünya Futbol Kupası’nda hangi ülke şampiyon oldu?";
            sorular1[44] = "Töreler, topraklar, su davaları, öç almalar gibi gerçek hayata ait yansımaların görüldüğü öyküsü ’’Susuz Yaz‘‘ dışında ’’Yenilmeyen‘‘, “Dağlı ve Muharrem”, “Gülsüm Kıza Ağıt” gibi öykülerinde de yaşadığı dönemin sosyal panoramasını, mozaik işlercesine bütünleyen öykücümüz kimdir?";
            sorular1[45] = "Aşağıdaki isimlerden hangisi Başbakanlık görevi üstlenmiş kişilerden değildir?";
            sorular1[46] = "Türkiye’nin Gümrük Birliği’ne katılımı hangi tarihte gerçekleşmiştir?";
            sorular1[47] = "Churchill ve Roosevelt’in de katıldığı Kahire Konferansı’na (1943) Türkiye Cumhuriyeti adına katılan devlet adamı kimdir?";
            sorular1[48] = "Aşağıdakilerden hangisi “Ulusal Bayram ve Genel Tatiller Hakkında Kanun” a göre Ulusal Bayram’dır?";
            sorular1[49] = "Aşağıdakilerden hangisi İçişleri Bakanlığı’na bağlı değildir?";
            sorular1[50] = "Polis Meslek Eğitim Merkezleri hangi kanuna istinaden açılabilir?";

            dogrucevap1[0] = "d";
            dogrucevap1[1] = "b";
            dogrucevap1[2] = "d";
            dogrucevap1[3] = "a";
            dogrucevap1[4] = "a";
            dogrucevap1[5] = "c";
            dogrucevap1[6] = "b";
            dogrucevap1[7] = "d";
            dogrucevap1[8] = "c";
            dogrucevap1[9] = "a";
            dogrucevap1[10] = "a";
            dogrucevap1[11] = "c";
            dogrucevap1[12] = "d";
            dogrucevap1[13] = "a";
            dogrucevap1[14] = "c";
            dogrucevap1[15] = "c";
            dogrucevap1[16] = "b";
            dogrucevap1[17] = "a";
            dogrucevap1[18] = "d";
            dogrucevap1[19] = "a";
            dogrucevap1[20] = "c";
            dogrucevap1[21] = "b";
            dogrucevap1[22] = "a";
            dogrucevap1[23] = "c";
            dogrucevap1[24] = "a";
            dogrucevap1[25] = "d";
            dogrucevap1[26] = "d";
            dogrucevap1[27] = "c";
            dogrucevap1[28] = "b";
            dogrucevap1[29] = "d";
            dogrucevap1[30] = "b";
            dogrucevap1[31] = "d";
            dogrucevap1[32] = "c";
            dogrucevap1[33] = "a";
            dogrucevap1[34] = "d";
            dogrucevap1[35] = "a";
            dogrucevap1[36] = "d";
            dogrucevap1[37] = "b";
            dogrucevap1[38] = "c";
            dogrucevap1[39] = "d";
            dogrucevap1[40] = "b";
            dogrucevap1[41] = "a";
            dogrucevap1[42] = "c";
            dogrucevap1[43] = "b";
            dogrucevap1[44] = "c";
            dogrucevap1[45] = "c";
            dogrucevap1[46] = "d";
            dogrucevap1[47] = "a";
            dogrucevap1[48] = "c";
            dogrucevap1[49] = "c";
            dogrucevap1[50] = "b";

            buton11[0] = "a) Almanya";
            buton22[0] = "b) İngiltere";
            buton33[0] = "c) Türkiye";
            buton44[0] = "d) Yunanistan";

            buton11[1] = "a) Nükleer Enerji";
            buton22[1] = "b) Nano Teknoloji";
            buton33[1] = "c) Güneş enejisi";
            buton44[1] = "d) Yunanistan";

            buton11[2] = "a) Fenerbahçe";
            buton22[2] = "b) Trabzonspor";
            buton33[2] = "c) Beşiktaş";
            buton44[2] = "d) Galatasaray";

            buton11[3] = "a) Piri reis";
            buton22[3] = "b) Çaka Bei";
            buton33[3] = "c) Fatih Sultan Mehmet";
            buton44[3] = "d) Picasso";

            buton11[4] = "a) Necdet Özel";
            buton22[4] = "b) İlker Başbuğ";
            buton33[4] = "c) Kenan evren";
            buton44[4] = "d) Turgut Özal";

            buton11[5] = "a) Hun Devleti";
            buton22[5] = "b) Osmanlı devleti";
            buton33[5] = "c) Göktürkler";
            buton44[5] = "d) Hazarlar";

            buton11[6] = "a) Erikson";
            buton22[6] = "b) Graham Bell";
            buton33[6] = "c) Freud";
            buton44[6] = "d) Einstein";

            buton11[7] = "a) Cebeli Tarık";
            buton22[7] = "b) Ümit Burnu";
            buton33[7] = "c) Süveyş Kanalı";
            buton44[7] = "d) Panama";

            buton11[8] = "a) 3";
            buton22[8] = "b) 5";
            buton33[8] = "c) 7";
            buton44[8] = "d) 8 ";

            buton11[9] = "a)NATO ";
            buton22[9] = "b)Unicef ";
            buton33[9] = "c)WHO ";
            buton44[9] = "d)UNESCO ";

            buton11[10] = "a)İsveç ";
            buton22[10] = "b)Almana ";
            buton33[10] = "c)Amerika";
            buton44[10] = "d)İNGİLTERE ";

            buton11[11] = "a)Nagazaki ";
            buton22[11] = "b)Iwate ";
            buton33[11] = "c)Hiroşima ";
            buton44[11] = "d)Kyoto ";

            buton11[12] = "a)İzmir ";
            buton22[12] = "b)Ankara ";
            buton33[12] = "c)Adana";
            buton44[12] = "d)İstanbul ";

            buton11[13] = "a)90 ";
            buton22[13] = "b)01 ";
            buton33[13] = "c)49 ";
            buton44[13] = "d)32";

            buton11[14] = "a)Athena ";
            buton22[14] = "b)Kenan Dogulu ";
            buton33[14] = "c)Sertab Erener ";
            buton44[14] = "d)Hadise ";

            buton11[15] = "a)Mehmet Akif ERSOY ";
            buton22[15] = "b)Orhan kemal ";
            buton33[15] = "c)Zeki üngör ";
            buton44[15] = "d)Yahya Kemal ";

            buton11[16] = "a)Recep tayyip erdoğan ";
            buton22[16] = "b)Abdullah gül ";
            buton33[16] = "c)Celal bayar ";
            buton44[16] = "d)Süleyman demirel ";

            buton11[17] = "a)cannes ";
            buton22[17] = "b)berlin ";
            buton33[17] = "c)altın portakal ";
            buton44[17] = "d)auston ";

            buton11[18] = "a)TEV ";
            buton22[18] = "b)AKUT ";
            buton33[18] = "c)AÇEV";
            buton44[18] = "d)TEMA ";

            buton11[19] = "a)mimar sinan";
            buton22[19] = "b)necip dinç";
            buton33[19] = "c)mimar hayrettin";
            buton44[19] = "d)zaha hadid";

            buton11[20] = "a)Almanya";
            buton22[20] = "b) Fransa";
            buton33[20] = "c) İsveç";
            buton44[20] = "d)İngiltere";

            buton11[21] = "a)Şener şen";
            buton22[21] = "b) Kemal sunal";
            buton33[21] = "c) tarık akan";
            buton44[21] = "d)ediz hun";

            buton11[22] = "a) sofya";
            buton22[22] = "b) tahran";
            buton33[22] = "c)atina";
            buton44[22] = "d) erivan";

            buton11[23] = "a) Truizm bakanlığı";
            buton22[23] = "b) İç işleri bakanlı";
            buton33[23] = "c) Çevre ve orman bakanlğı";
            buton44[23] = "d) Bayındırlık ve iskan bakanlğı";

            buton11[24] = "a) selimiye";
            buton22[24] = "b) sultan ahmet";
            buton33[24] = "c) ayasofya";
            buton44[24] = "d) topkapı sarayı";

            buton11[25] = "a) 01.01.2006";
            buton22[25] = "b) 01.01.2007";
            buton33[25] = "c) 12.12.2008";
            buton44[25] = "d) 01.01.2009";

            buton11[26] = "a) İngiltere";
            buton22[26] = "b) Fransa";
            buton33[26] = "c) Almanya";
            buton44[26] = "d) İsveç";

            buton11[27] = "a) Kaşkarlı mahmut";
            buton22[27] = "b) mevlana";
            buton33[27] = "c) katip çelebi-hacı bektaşi veli";
            buton44[27] = "d) mimar sinan";

            buton11[28] = "a) resat nuri";
            buton22[28] = "b) halide edip adıvar";
            buton33[28] = "c)ziya Gökalp";
            buton44[28] = "d) ömer seyfetin";

            buton11[29] = "a) hititler";
            buton22[29] = "b) asurlular";
            buton33[29] = "c) urartular";
            buton44[29] = "d) sümerliler";

            buton11[30] = "a) çin";
            buton22[30] = "b) endonezye";
            buton33[30] = "c) japonya";
            buton44[30] = "d) tayland";

            buton11[31] = "a) selanik";
            buton22[31] = "b) istabul";
            buton33[31] = "c) ankara";
            buton44[31] = "d) gaziantep";

            buton11[32] = "a) UHW";
            buton22[32] = "b) UNİCEf";
            buton33[32] = "c) WHO";
            buton44[32] = "d) Nato";

            buton11[33] = "a) 0";
            buton22[33] = "b) 50";
            buton33[33] = "c) 100";
            buton44[33] = "d) 1000";

            buton11[34] = "a) 86600";
            buton22[34] = "b) 88600";
            buton33[34] = "c) 86000";
            buton44[34] = "d) 86400";

            buton11[35] = "a) kudüs";
            buton22[35] = "b) mekke";
            buton33[35] = "c) istanbul";
            buton44[35] = "d) roma";

            buton11[36] = "a) batman";
            buton22[36] = "b) kütahya";
            buton33[36] = "c) aydın";
            buton44[36] = "d) muğla";

            buton11[37] = "a) senegal";
            buton22[37] = "b) güney afrika";
            buton33[37] = "c) san marino";
            buton44[37] = "d) el salvador";

            buton11[38] = "a) yahya kemal";
            buton22[38] = "b) atilla ilhan";
            buton33[38] = "c) orhan pamuk";
            buton44[38] = "d) ahmet haşim";

            buton11[39] = "a) kanuni sultan süleyman";
            buton22[39] = "b) 4.Murat";
            buton33[39] = "c) 2.Abdülhamit";
            buton44[39] = "d) yavuz sultan selim";

            buton11[40] = "a) fransa";
            buton22[40] = "b) almanya";
            buton33[40] = "c) ispanya";
            buton44[40] = "d) Türkiye";

            buton11[41] = "a) söğüt";
            buton22[41] = "b) köknar";
            buton33[41] = "c) kavak";
            buton44[41] = "d) meşe";

            buton11[42] = "a) 1923-izmir";
            buton22[42] = "b) 1920-izmir";
            buton33[42] = "c) 1921-ankara";
            buton44[42] = "d) 1924-istanbul ";

            buton11[43] = "a) fransa";
            buton22[43] = "b) italya";
            buton33[43] = "c) ingiltere";
            buton44[43] = "d) ispanya";

            buton11[44] = "a) reşat nuri güntekin";
            buton22[44] = "b) hüseyin rahmi gürpınar";
            buton33[44] = "c) necati cumalı";
            buton44[44] = "d) peyami safa";

            buton11[45] = "a) celal bayar";
            buton22[45] = "b) nihat erim";
            buton33[45] = "c) erdal inönü";
            buton44[45] = "d) abdullah gül";

            buton11[46] = "a) 1997";
            buton22[46] = "b) 1994";
            buton33[46] = "c) 1991";
            buton44[46] = "d) 1995";

            buton11[47] = "a) ismet inönü";
            buton22[47] = "b) celal bayar";
            buton33[47] = "c) şükrü saraçoğlu";
            buton44[47] = "d) fethi okyar";

            buton11[48] = "a) 23 nisan";
            buton22[48] = "b) 19 mayıs ";
            buton33[48] = "c) 29 ekim";
            buton44[48] = "d) 30 agustos";

            buton11[49] = "a) jandarma";
            buton22[49] = "b) emniyet genel mudurlugu";
            buton33[49] = "c) gumruk musteşarlıgı";
            buton44[49] = "d) sahil guvenlik";

            buton11[50] = "a) PVSK";
            buton22[50] = "b) ETK";
            buton33[50] = "c) PYÖK";
            buton44[50] = "d) İİK";

           
                sorular[0] = "Aşağıdakilerden hangisi milli bir maçta 4 gol atan futbolcularımızdan değildir?";
                sorular[1] = "Aşağıdakilerden hangisi en fazla milli olan futbolcumuzdur?";
                sorular[2] = "Aşağıdakilerden hangisi Avrupa Birliği’ne üye devletler arasında yer almaz?";
                sorular[3] = "Birleşmiş Milletler Güvenlik Konseyi’nin daimi üyesi olan ülkeler aşağıdakilerden hangisidir?";
                sorular[4] = "Dünya İnsan Hakları Günü hangi gün kutlanır?";
                sorular[5] = "Aşağıdakilerden hangi ikisi 1 Ocak 2007 tarihi itibari ile Avrupa Birliği’ne tam üye olan ülkelerdendir?";
                sorular[6] = "FIFA tarafından 2006 yılının en iyi futbolcusu kim seçilmiştir?";
                sorular[7] = "2006-2007 UEFA Kupasını hangi takım kazanmıştır?";
                sorular[8] = "Amerika Basketbol Liginde (NBA) oynayan ilk Türk oyuncu kimdir";
                sorular[9] = "Mehmet OKUR hangi takımın formasını giymektedir?";
                sorular[10] = "Aşağıdaki takımlardan hangisi 2006-2007 sezonu sonunda Süper Lige yükselen takımlardan değildir?";
                sorular[11] = "Aşağıdakilerden hangisi 2008 Avrupa Eleme Grubu’ndaki rakiplerimizden değildir?";
                sorular[12] = "2007 yılında yapılan 60. Cannes Film Festivali “Altın Palmiye” ödülünü kazanan film hangisidir?";
                sorular[13] = "“Yaşamın Kıyısında” filmi ile 2007 yılında düzenlenen 60. Cannes Film Festivalinde en iyi senaryo ödülü kazanan filmin yönetmeni kimdir?";
                sorular[14] = "23 Mayıs 2007 günü Atina’da oynanan Milan-Liverpol maçı sonucu Şampiyonlar Ligi Kupasını kazanan Milanın gollerini atan futbolcu kimdir?";
                sorular[15] = "2007 yılı Mayıs ayında İstanbulda düzenlenen Sony Ericsson WTA Tour İstanbul Cup 2007 Uluslar arası Bayanlar Tenis Turnuvası’nı kazanan bayan tenisçi kimdir ?";
                sorular[16] = "2006 yılı Kültür Bakanlığı “Kültür ve Sanat Büyük Ödülü”nü alan, özellikle “Mona Roza” isimle şiiri ile tanınan şair, yazar ve düşünce adamı kimdir?";
                sorular[17] = "14. Altın Koza Film Festivalinde (2007) en iyi film ödülü alan sinema filimi aşağıdakilerden hangisidir?";
                sorular[18] = "Türkiye de kaç tane büyük şehir belediyesi vardır?";
                sorular[19] = "Gerekli önlemleri alıp sonra Allah’a güvenmek hangi kavramla ifade edilir?";
                sorular[20] = "İslam dininde karşılık  beklemeden yapılan her güzel davranışa ne ad verilir?";
                sorular[21] = "Abdesti olmayan bir kişi  aşağıdakilerden hangisini yapamaz?";
                sorular[22] = "BBC hangi ülkenin TV kanalıdır?";
                sorular[23] = "Bilgisayar çalışırken bilgilerin geçici olarak üzerine kayıt edildiği birime ne ad verilir?";
                sorular[24] = "Çini işlemeciliğiyle ünlü ilimiz hangisidir?";
                sorular[25] = "Xbox 360 oyun konsolu hangi firmaya ait bir üründür?";
                sorular[26] = "Vücuttaki en küçük yapı taşına ne denir?";
                sorular[27] = "Blok terimi hangi spor dalına aittir?";
                sorular[28] = "Sinüs boşluklarının iltihaplanmasından kaynaklı oluşan hastalık?";
                sorular[29] = "Seçeneklerde sunulanlardan hangisi kanda bulunmaz?";
                sorular[30] = "Plankton adı verilen canlılar nerede yaşar?";
                sorular[31] = "Pisagor Teoremi hangi bilim dalıyla ilgili teoremdir?";
                sorular[32] = "Pearl harbor baskınında hangi ülke amerika ya saldırmıştır?";
                sorular[33] = "Meryem ana evi hangi ilimizde bulunmaktadır?";
                sorular[34] = "LG markasının açılımı nedir?";
                sorular[35] = "Kutan adıyla bilinen kuş hangisidir?";
                sorular[36] = "Kuran-ı Kerimin kalbi olarak zikredilen sure hangisidir?";
                sorular[37] = "Kilis ilinin plaka kodu nedir?";
                sorular[38] = "Kışlalarda hafif hastaların tedavi edildiği yer?";
                sorular[39] = "Kanı kalbe götüren damarlara ne denir?";
                sorular[40] = "Japon alfabesinde kaç harf vardır?";
                sorular[41] = "Isıyı en çok çeken reank hangisidir?";
                sorular[42] = "İnsan vücudunda iki farklı damar sistemi ile beslenen tek organ hangisidir?";
                sorular[43] = "insan kafasinda kac kemik vardir ?";
                sorular[44] = "İngiliz ölçü birimi olan inç kaç cm'ye tekabül etmektedir?";
                sorular[45] = "İmam bayıldı yemeğinin ana malzemesi nedir?";
                sorular[46] = "İç organların hastalıklarıyla cerrahi müdahaleye başvurmadan ilaç ile tedavi eden bilim dalı hangisidir?";
                sorular[47] = "en çok komşusu olan ülke hangisidir?";
                sorular[48] = "Elektrik akımının voltajını değiştiren aygıtlara ne ad verilir?";
                // Zor sorular burada bitiyor... 49 dan itibaren kolay sorular başlıyor...

                dogrucevap[0] = "b";
                dogrucevap[1] = "d";
                dogrucevap[2] = "c";
                dogrucevap[3] = "d";
                dogrucevap[4] = "b";
                dogrucevap[5] = "c";
                dogrucevap[6] = "a";
                dogrucevap[7] = "b";
                dogrucevap[8] = "d";
                dogrucevap[9] = "b";
                dogrucevap[10] = "b";
                dogrucevap[11] = "d";
                dogrucevap[12] = "d";
                dogrucevap[13] = "d";
                dogrucevap[14] = "c";
                dogrucevap[15] = "a";
                dogrucevap[16] = "b";
                dogrucevap[17] = "d";
                dogrucevap[18] = "c";
                dogrucevap[19] = "a";
                dogrucevap[20] = "b";
                dogrucevap[21] = "d";
                dogrucevap[22] = "c";
                dogrucevap[23] = "b";
                dogrucevap[24] = "a";
                dogrucevap[25] = "c";
                dogrucevap[26] = "d";
                dogrucevap[27] = "a";
                dogrucevap[28] = "b";
                dogrucevap[29] = "c";
                dogrucevap[30] = "a";
                dogrucevap[31] = "b";
                dogrucevap[32] = "a";
                dogrucevap[33] = "b";
                dogrucevap[34] = "c";
                dogrucevap[35] = "a";
                dogrucevap[36] = "c";
                dogrucevap[37] = "d";
                dogrucevap[38] = "c";
                dogrucevap[39] = "b";
                dogrucevap[40] = "d";
                dogrucevap[41] = "a";
                dogrucevap[42] = "c";
                dogrucevap[43] = "d";
                dogrucevap[44] = "b";
                dogrucevap[45] = "a";
                dogrucevap[46] = "a";
                dogrucevap[47] = "c";
                dogrucevap[48] = "a";

                buton1[0] = "a) hakan sukur";
                buton2[0] = "b) tanju çolak";
                buton3[0] = "c) Rıza Saporel";
                buton4[0] = "d) Oktay Dereli";

                buton1[1] = "a) Hakan Şükür";
                buton2[1] = "b) Tugay KErimoğlu";
                buton3[1] = "c) Alpay Ozalan";
                buton4[1] = "d) Rüştü Recper";

                buton1[2] = "a) Almanya";
                buton2[2] = "b) Belçika";
                buton3[2] = "c) Norveç";
                buton4[2] = "d) Malta";

                buton1[3] = "a) Almanya";
                buton2[3] = "b) Fransa";
                buton3[3] = "c) Çin";
                buton4[3] = "d) Fransa ve Çin";

                buton1[4] = "a) 27 Aralık";
                buton2[4] = "b) 10 Aralık";
                buton3[4] = "c) 27 Nisan";
                buton4[4] = "d) 1 Eylül";

                buton1[5] = "a) Macaristan-Yunanistan";
                buton2[5] = "b) Polonya-Macaristan";
                buton3[5] = "c) Bulgaristan-Romanya";
                buton4[5] = "d) Romanya-Malta";

                buton1[6] = "a) Zidane";
                buton2[6] = "b) Carnovara";
                buton3[6] = "c) Nedvet";
                buton4[6] = "d) Ronaldinho";

                buton1[7] = "a) Barcelona";
                buton2[7] = "b) Sevilla";
                buton3[7] = "c) Espanyol";
                buton4[7] = "d) Real Madrid";

                buton1[8] = "a) Mehmet OKUR";
                buton2[8] = "b) İbrahim KUTLU AY";
                buton3[8] = "c) Hidayet TÜRKOĞLU";
                buton4[8] = "d) Mirsad TÜRKCAN";

                buton1[9] = "a) Miami Heat";
                buton2[9] = "b) Utah Jazz";
                buton3[9] = "c) Chichago Bulls";
                buton4[9] = "d) Detroid Pistons";

                buton1[10] = "a) Gençlerbirliği";
                buton2[10] = "b) İstanbulspor";
                buton3[10] = "c) İstanbul B.B Spor";
                buton4[10] = "d) Kasımpaşa";

                buton1[11] = "a) Yunanistan";
                buton2[11] = "b) Norveç";
                buton3[11] = "c) Moldova";
                buton4[11] = "d) İsveç";

                buton1[12] = "a) Yasamın Kıyısında";
                buton2[12] = "b) Tarantiono";
                buton3[12] = "c) Coen Biraderler";
                buton4[12] = "d) 4 Ay 3 Hafta 2 Gün";

                buton1[13] = "a) Yüksel Aksu";
                buton2[13] = "b) Julian Schabel";
                buton3[13] = "c) Osman Sınav";
                buton4[13] = "d) Fatih Akın";

                buton1[14] = "a) Kaka";
                buton2[14] = "b) Pirlo";
                buton3[14] = "c) İnzaghi";
                buton4[14] = "d) gattuso";

                buton1[15] = "a) Elena Demetieve";
                buton2[15] = "b) Aravane Reazi";
                buton3[15] = "c) Maria Sharapova";
                buton4[15] = "d) Venüs Williams";

                buton1[16] = "a) Hilmi Yavuz";
                buton2[16] = "b) Sezai KArakoç";
                buton3[16] = "c) Gülten Dayıoğlu";
                buton4[16] = "d) Fazıl Hüsnü Dağlarca";

                buton1[17] = "a) Cenneti Beklerken";
                buton2[17] = "b) Dondurmam Gaymak";
                buton3[17] = "c) Takva";
                buton4[17] = "d) Beyneminel";

                buton1[18] = "a) 14";
                buton2[18] = "b) 15";
                buton3[18] = "c) 16";
                buton4[18] = "d) 18";

                buton1[19] = "a) Tevekkül";
                buton2[19] = "b) Tefekkül";
                buton3[19] = "c) Teesür";
                buton4[19] = "d) Tedbir";

                buton1[20] = "a) Zekat";
                buton2[20] = "b) Sadaka";
                buton3[20] = "c) Fidye";
                buton4[20] = "d) Hosgörü";

                buton1[21] = "a) Namaz Kılamaz";
                buton2[21] = "b) Habeyi Tavaf Edemez";
                buton3[21] = "c) Kuranı Tutamaz";
                buton4[21] = "d) Hepsi";

                buton1[22] = "a) Almanya";
                buton2[22] = "b) Fransa";
                buton3[22] = "c) İngiltere";
                buton4[22] = "d) İtalya";

                buton1[23] = "a) Harddisk";
                buton2[23] = "b) Ram";
                buton3[23] = "c) Anakart";
                buton4[23] = "d) İşlemci";

                buton1[24] = "a) Kütahya";
                buton2[24] = "b) Bursa";
                buton3[24] = "c) Ankara";
                buton4[24] = "d) İzmit";

                buton1[25] = "a) Sony";
                buton2[25] = "b) Windows";
                buton3[25] = "c) Microsoft";
                buton4[25] = "d) Wii";

                buton1[26] = "a) Atom";
                buton2[26] = "b) Organ";
                buton3[26] = "c) Doku";
                buton4[26] = "d) Hücre";

                buton1[27] = "a) Basketbol";
                buton2[27] = "b) Futbol";
                buton3[27] = "c) Tenis";
                buton4[27] = "d) Voleybol";

                buton1[28] = "a) Faranjit";
                buton2[28] = "b) Sünizit";
                buton3[28] = "c) Grip";
                buton4[28] = "d) Nezle";

                buton1[29] = "a) Alyuvar";
                buton2[29] = "b) Akyuvar";
                buton3[29] = "c) Fosfat";
                buton4[29] = "d) Hemoglobin";

                buton1[30] = "a) Denizde";
                buton2[30] = "b) Karada";
                buton3[30] = "c) Hayvan Vücudunda";
                buton4[30] = "d) İnsan Vücudunda";

                buton1[31] = "a) Tarih";
                buton2[31] = "b) Matematik";
                buton3[31] = "c) Biyoloji";
                buton4[31] = "d) Kimya";

                buton1[32] = "a) Japonya";
                buton2[32] = "b) Çin";
                buton3[32] = "c) Kore";
                buton4[32] = "d) Almanya";

                buton1[33] = "a) Balıkesir";
                buton2[33] = "b) İzmir";
                buton3[33] = "c) Ankara";
                buton4[33] = "d) Konya";

                buton1[34] = "a) Line Good";
                buton2[34] = "b) Like Good";
                buton3[34] = "c) Life is Good";
                buton4[34] = "d) Line Great";

                buton1[35] = "a) Saka";
                buton2[35] = "b) Bülbül";
                buton3[35] = "c) Kanarya";
                buton4[35] = "d) Papağan";

                buton1[36] = "a) Bakara Suresi";
                buton2[36] = "b) Fatiha Suresi";
                buton3[36] = "c) Yasin Suresi";
                buton4[36] = "d) Nas Suresi";

                buton1[37] = "a) 49";
                buton2[37] = "b) 59";
                buton3[37] = "c) 69";
                buton4[37] = "d) 79";

                buton1[38] = "a) Klinik";
                buton2[38] = "b) Poliklinik";
                buton3[38] = "c) Revir";
                buton4[38] = "d) Muayehane";

                buton1[39] = "a) Atar Damar";
                buton2[39] = "b) Toplar Damar";
                buton3[39] = "c) Aort Damarı";
                buton4[39] = "d) Toplayan Damar";

                buton1[40] = "a) 16";
                buton2[40] = "b) 26";
                buton3[40] = "c) 36";
                buton4[40] = "d) 46";

                buton1[41] = "a) Siyah";
                buton2[41] = "b) Beyaz";
                buton3[41] = "c) Kırmızı";
                buton4[41] = "d) Yeşil";

                buton1[42] = "a) Kalp";
                buton2[42] = "b) Böbrek";
                buton3[42] = "c) Karaciğer";
                buton4[42] = "d) Akciğer";

                buton1[43] = "a) 19";
                buton2[43] = "b) 29";
                buton3[43] = "c) 39";
                buton4[43] = "d) 49";

                buton1[44] = "a) 2,34";
                buton2[44] = "b) 2,54";
                buton3[44] = "c) 2,74";
                buton4[44] = "d) 2,44";

                buton1[45] = "a) Patlıcan";
                buton2[45] = "b) Patates";
                buton3[45] = "c) Soğan";
                buton4[45] = "d) Pırasa";

                buton1[46] = "a) Dahiliye";
                buton2[46] = "b) Kardiyoloji";
                buton3[46] = "c) Nüroloji";
                buton4[46] = "d) Onkoloji";

                buton1[47] = "a) Amerika";
                buton2[47] = "b) Kore";
                buton3[47] = "c) Çin";
                buton4[47] = "d) Japonya";

                buton1[48] = "a) Translatör";
                buton2[48] = "b) Transistör";
                buton3[48] = "c) Diyot";
                buton4[48] = "d) Bobin";
                
                label1.Visible = false;
                button1.Visible = false;
                button2.Visible = false;
                button3.Visible = true;
                button4.Visible = true;
                button5.Visible = true;
                button6.Visible = true;
                button7.Visible = true;
                button9.Visible = true;
                label2.Visible = true;

                dogrucevapverince(); // ilk soru gelmesi için...
        }

Programın çalışması sırasında oluşan bazı ekran görüntüleri aşağıdaki gibidir. 1. soruya doğru cevap verildikten sonraki bir görüntü.



















İlerleyen sorulardan bir görüntü. Hala zaman kısıtlaması var.




















İlerleyen sorulardan bir örnek görüntü. 30000 TL kazanılmış durumda.