コード例 #1
0
ファイル: Form1.cs プロジェクト: oguzhanmavii/TetrisGame
        // Yenile butonuna bastığımızda buradaki olaylar gerçekleşir
        private void button2_Click(object sender, EventArgs e)
        {
            // timer1 tekrarlama değeri 300ms'e ayarlanır
            timer1.Interval = Alan.Interval;

            // Eğer oyun bitmişse, bu değişken true olacaktır
            if (oyunBitti)
            {
                // timer1_Tick eventine update() metodu tekrar eklenir
                timer1.Tick += new EventHandler(update);
                // bu değişken false olur ve bu sayede oyunun tekrar başladığı anlaşılabilir
                oyunBitti = false;
            }

            // Alan üzerindeki tüm şekiller temizlenir
            Alan.AlanTemizle();
            // Tüm timerlar başlatılır
            timer1.Start();
            puanSay.Start();
            tusKontrol.Start();
            // Oyunu başlatan fonksiyon tekrar çağırılır
            Init();
            // OnPaint() eventi tekrar çalışmasın istiyoruz, bu yüzden Invalidate() metodunu çağırdık
            Invalidate();
        }
コード例 #2
0
ファイル: Form1.cs プロジェクト: oguzhanmavii/TetrisGame
 // Arayüz ekrana ilk çizdirildiğinde bu event çalışmaktadır
 private void OnPaint(object sender, PaintEventArgs e)
 {
     // Öncelikle (16,8)'lik alan çalışır
     Alan.AlanCiz(e.Graphics);
     // Bu alana ızgaraları çizdiriyoruz
     Alan.IzgaraCiz(e.Graphics);
     // Ve bir sonraki şekli çizdir
     Alan.sonrakiSekil(e.Graphics);
 }
コード例 #3
0
ファイル: Form1.cs プロジェクト: oguzhanmavii/TetrisGame
        // timer1 her çalıştığında yani normal durumda 300ms'de bir
        // bu fonksiyon çalışacaktır
        private void update(object sender, EventArgs e)
        {
            // Şekil her hareket ettiğinde önceki kareler eski haline gelmeli
            // ve şeklin bulunduğu kareler tekrar renklendirilmelidir
            // bu fonksiyon ile bu işlemi sağlıyoruz
            Alan.AlanSifirla();

            // Eğer şekil yer veya başka bir şekil ile çarpışmadıysa
            if (!Alan.Carpisma())
            {
                // Şekil aşağı yönde harekete devam eder
                Alan.suankiSekil.Asagi();
            }
            // Eğer şekil yer veya başka bir şekil ile çarpıştıysa
            else
            {
                // Şuanki şekli haritanın bütünü ile birleştir ve kaldığı konuma kaydet
                Alan.Birlestir();
                // Tetris yapılmış mı? diye kontrol et
                Alan.TetrisKontrol();
                // timer1 tekrar 300ms'e ayarlansın
                timer1.Interval = Alan.Interval;
                // Inıt() kısmında zaten şekli tanımlamıştık,
                // Şekli sıfırlıyoruz, rastgele yeni bir şekil atıyoruz
                // X = 3 ve Y = 0, konumlarına yerleştiriyoruz
                Alan.suankiSekil.SekilSifirla(3, 0);

                // Eğer hala çarpışma var ise
                if (Alan.Carpisma())
                {
                    // timer1.Tick eventinden update() fonksiyonunu kaldır.
                    timer1.Tick -= new EventHandler(update);
                    // Bütün timerları durdur
                    timer1.Stop();
                    puanSay.Stop();
                    tusKontrol.Stop();

                    // 'kontrolTusu' değişkenine de ESC tuşunu atıyoruz ki, bir sonraki başlatma son bastığımız
                    // tuş çalışmasın
                    kontrolTusu = Keys.Escape;
                    // oyun bittiği için bu değişken true oluyor
                    oyunBitti = true;
                }
            }
            // Eğer hiç bir sıkıntı yoksa şeklimiz ve mevcut alan birleşir
            Alan.Birlestir();

            // OnPaint() eventi tekrar çalışmasın istiyoruz, bu yüzden Invalidate() metodunu çağırdık
            Invalidate();
        }
コード例 #4
0
ファイル: Form1.cs プロジェクト: oguzhanmavii/TetrisGame
 // Başlat butonuna bastığımızda buradaki olaylar gerçekleşir
 private void button1_Click(object sender, EventArgs e)
 {
     // Alan üzerindeki tüm şekiller temizlenir
     Alan.AlanTemizle();
     // timer1 tekrarlama değeri 300ms'e alınır
     timer1.Interval = Alan.Interval;
     // timer1.Tick eventine update() fonksiyonunu ekle.
     timer1.Tick += new EventHandler(update);
     // tüm timerlar çalışır
     timer1.Start();
     puanSay.Start();
     tusKontrol.Start();
     // Başlat butonu kapanır
     button1.Enabled = false;
     // Yenile butonu açılır
     button2.Enabled = true;
     // Oyunu başlatan fonksiyon tekrar çağırılır
     Init();
     // OnPaint() eventi tekrar çalışmasın istiyoruz, bu yüzden Invalidate() metodunu çağırdık
     Invalidate();
 }
コード例 #5
0
ファイル: Form1.cs プロジェクト: oguzhanmavii/TetrisGame
        // Tuşların kontrol edildiği Timer, 100ms'de bir basılan tuşları kontrol eder
        private void tusKontrol_Tick(object sender, EventArgs e)
        {
            // Eğer oyun başladıysa yani Başlat butonu çalışmıyorsa
            if (button1.Enabled == false)
            {
                // kontrolTusu kontrol metoduna alınır
                switch (kontrolTusu)
                {
                // İleri yön tuşuna basıldıysa
                case Keys.Up:

                    // ve etrafında dönmesine engel olacak bir şekil yok ise
                    if (!Alan.Kesisim())
                    {
                        // Şekil her hareket ettiğinde önceki kareler eski haline gelmeli
                        // ve şeklin bulunduğu kareler tekrar renklendirilmelidir
                        // bu fonksiyon ile bu işlemi sağlıyoruz
                        Alan.AlanSifirla();
                        // Şekli döndürüyoruz
                        Alan.suankiSekil.SekilCevir();
                        // Mevcut harita ile şekli birleştiriyoruz
                        Alan.Birlestir();
                        // OnPaint() eventi tekrar çalışmasın istiyoruz, bu yüzden Invalidate() metodunu çağırdık
                        Invalidate();
                        // Tuş işlemini tamamladı artık bu işlemden çıkabiliriz
                        break;
                    }
                    break;

                // Geri yön tuşuna basıldıyse
                case Keys.Down:
                    // timer1 tekrarlama değeri 10ms olur,
                    // ve update() metodu 10ms'de 1 tekrarladığı için
                    // biz müdahale edemeden
                    // şekil hızlıca aşağıya düşer
                    timer1.Interval = 10;
                    break;

                // Eğer sağ yön tuşuna basıldıysa
                case Keys.Right:
                    // Şeklin sağında çarpacağı bir nesne yok ise
                    if (!Alan.CarpismaYatay(1))
                    {
                        // Şekil sağa gider
                        Alan.AlanSifirla();
                        Alan.suankiSekil.Saga();
                        Alan.Birlestir();
                        Invalidate();
                        break;
                    }
                    break;

                case Keys.Left:
                    // Şeklin solunda çarpacağı bir nesne yok ise
                    if (!Alan.CarpismaYatay(-1))
                    {
                        // Şekil sola gider
                        Alan.AlanSifirla();
                        Alan.suankiSekil.Sola();
                        Alan.Birlestir();
                        Invalidate();
                        break;
                    }
                    break;
                }
                // 'kontrolTusu' değişkeni herhangi bir tuşa bir kere basıldıktan sonra
                // Esc tuşuna ayarlanır, bunun sebebi ise program tuşa basılı kalmış gibi davranmamalı
                kontrolTusu = Keys.Escape;
            }
        }