c# Desktop

Tetris Oyununu C# Dilini Kullanarak Form Sayfasında Kodlama6

Artık yön tuşlarının kodlarını yazmaya sıra geldi. Daha önce yön tuşlarının çalıştırıldığı frmTetris_KeyDown(...) yordamını oluşturmuş ve test kodları yazıp çalıştırmıştık. İşimiz bitince bu kodları sildik. Şimdi tetris şekillerini sağa - sola kaydıran sağ ve sol tuşları, döndüren yukarı tuşu ve onları hızla aşağı indiren aşağı tuşu ile ilgili kodları yazacağız. 

Adım 1: Tetris şekilleri 4 kareden oluştuğu için sağ yada sol kontrolu yaparken her karenin tek tek sağ veya sola gitme durumunu saklayan 4 değerli iki dizi değişkene, ayrıca da şekillerin bütün olarak sağa ya da sola gitme durumlarını saklayan iki değişkene gerek vardır. Aynı şekilde aşağı inme olayında da devam(3) ve devamet değişkenleri tanımlamıştık. Buradaki değişkenlerimiz de evet yada hayır durumunu saklayacağı için boolean tipinde olmalıdır. Bu değişkenlerimizi de daha önceden yazdığımız değişkenlerin altına şu şekilde tanımlayalım. 

        bool[] sola = new bool[4];
        bool[] saga = new bool[4];
        bool solaGit, sagaGit;
 
Adım 2: Daha önce frmTetris_KeyDown(...) metotu altında tanımladığımız deneme kodlarını açıklama satırı haline getirelim. Şimdi KeyDown() metodunu yazalım. Burada bitir değişkeninin değerini kontrol edelim. 
 
        if (bitir == false) {
 
        }
 
Adım 3: Klavyedeki sol yön tuşuna basılıp basılmadığını kontrol edelim.
            if (bitir == false)
            {
                if (e.KeyCode == Keys.Left)
                {
                }
            }
Adım 4: Burada hangi tuşa basılıp basılmadığını kontrol etmek için if karar kontrol deyimi kullanıldı. Siz swtich - case deyimini kullanabilirsiniz.
 
Adım 5: İlk şeklin solundaki şekli kontrol etmesini sağlayalım. Eğer solundaki resim gizli ise sola dizisinin ilk elemanını true yapalım. Aksi takdirde false olacaktır.
                    if (!(aktifSekil[0] % 10 == 1))
                    {
                        if (kare[aktifSekil[0] - 1].Visible == false)
                        {
                            sola[0] = true;
                        }
                        else
                        {
                            sola[0] = false;
                        }
                     }
Adım 6: İkinci şeklin solundaki şekli kontrol etmesini sağlayalım. Eğer solundaki resim gizli ise sola dizisinin ilk elemanını true yapalım. Aksi takdirde false olacaktır. Burada ikinci şeklin birinci şeklin devamı olup olmadığını da kontrol etmemiz gerekir.
                    if (!(aktifSekil[0] % 10 == 1))
                    {
                        if (kare[aktifSekil[0] - 1].Visible == false)
                        {
                            sola[0] = true;
                        }
                        else
                        {
                            sola[0] = false;
                        }
                        if (aktifSekil[1] - 1 == aktifSekil[0])
                        {
                            sola[1] = true;
                        }
                        else
                        {
                            if (kare[aktifSekil[1] - 1].Visible == false)
                            {
                                sola[1] = true;
                            }
                            else
                            {
                                sola[1] = false;
                            }
                        }
                    }
Adım 7: Üçüncü şeklin solundaki şekli kontrol etmesini sağlayalım. Eğer solundaki resim gizli ise sola dizisinin ilk elemanını true yapalım. Aksi takdirde false olacaktır. Burada üçüncü şeklin hem birinci hem de ikinci şeklin devamı olup olmadığını da kontrol etmemiz gerekir.
                    if (!(aktifSekil[0] % 10 == 1))
                    {
                        if (kare[aktifSekil[0] - 1].Visible == false)
                        {
                            sola[0] = true;
                        }
                        else
                        {
                            sola[0] = false;
                        }
                        if (aktifSekil[1] - 1 == aktifSekil[0])
                        {
                            sola[1] = true;
                        }
                        else
                        {
                            if (kare[aktifSekil[1] - 1].Visible == false)
                            {
                                sola[1] = true;
                            }
                            else
                            {
                                sola[1] = false;
                            }
                        }
 
                        if (((aktifSekil[2] - 1 == aktifSekil[0]) || (aktifSekil[2] - 1 == aktifSekil[1])))
                        {
                            sola[2] = true;
                        }
                        else
                        {
                            if (kare[aktifSekil[2] - 1].Visible == false)
                            {
                                sola[2] = true;
                            }
                            else
                            {
                                sola[2] = false;
                            }
                        }
                    }
Adım 8: Dördüncü şeklin solundaki şekli kontrol etmesini sağlayalım. Eğer solundaki resim gizli ise sola dizisinin ilk elemanını true yapalım. Aksi takdirde false olacaktır. Burada dördüncü şeklin hem birinci hem ikinci hem de üçüncü şeklin devamı olup olmadığını da kontrol etmemiz gerekir.
                    if (!(aktifSekil[0] % 10 == 1))
                    {
                        if (kare[aktifSekil[0] - 1].Visible == false)
                        {
                            sola[0] = true;
                        }
                        else
                        {
                            sola[0] = false;
                        }
                        if (aktifSekil[1] - 1 == aktifSekil[0])
                        {
                            sola[1] = true;
                        }
                        else
                        {
                            if (kare[aktifSekil[1] - 1].Visible == false)
                            {
                                sola[1] = true;
                            }
                            else
                            {
                                sola[1] = false;
                            }
                        }
 
                        if (((aktifSekil[2] - 1 == aktifSekil[0]) || (aktifSekil[2] - 1 == aktifSekil[1])))
                        {
                            sola[2] = true;
                        }
                        else
                        {
                            if (kare[aktifSekil[2] - 1].Visible == false)
                            {
                                sola[2] = true;
                            }
                            else
                            {
                                sola[2] = false;
                            }
                        }
                        if (((aktifSekil[3] - 1 == aktifSekil[0]) || (aktifSekil[3] - 1 == aktifSekil[1]) || (aktifSekil[3] - 1 == aktifSekil[2])))
                        {
                            sola[3] = true;
                        }
                        else
                        {
                            if (kare[aktifSekil[3] - 1].Visible == false)
                            {
                                sola[3] = true;
                            }
                            else
                            {
                                sola[3] = true;
                            }
                        }
                    }
Adım 9: sola dizi elemanının içeriğine göre solagit değişkeninin değerini true ya da false yapalım.
                    if (!(aktifSekil[0] % 10 == 1))
                    {
                        if (kare[aktifSekil[0] - 1].Visible == false)
                        {
                            sola[0] = true;
                        }
                        else
                        {
                            sola[0] = false;
                        }
                        if (aktifSekil[1] - 1 == aktifSekil[0])
                        {
                            sola[1] = true;
                        }
                        else
                        {
                            if (kare[aktifSekil[1] - 1].Visible == false)
                            {
                                sola[1] = true;
                            }
                            else
                            {
                                sola[1] = false;
                            }
                        }
 
                        if (((aktifSekil[2] - 1 == aktifSekil[0]) || (aktifSekil[2] - 1 == aktifSekil[1])))
                        {
                            sola[2] = true;
                        }
                        else
                        {
                            if (kare[aktifSekil[2] - 1].Visible == false)
                            {
                                sola[2] = true;
                            }
                            else
                            {
                                sola[2] = false;
                            }
                        }
                        if (((aktifSekil[3] - 1 == aktifSekil[0]) || (aktifSekil[3] - 1 == aktifSekil[1]) || (aktifSekil[3] - 1 == aktifSekil[2])))
                        {
                            sola[3] = true;
                        }
                        else
                        {
                            if (kare[aktifSekil[3] - 1].Visible == false)
                            {
                                sola[3] = true;
                            }
                            else
                            {
                                sola[3] = true;
                            }
                        }
                        for (int i = 0; i < 4; i++)
                        {
                            if (sola[i] == true)
                            {
                                solaGit = true;
                            }
                            else
                            {
                                solaGit = false;
                                break;
                            }
                        }
                    }
Adım 10: solagit değişkeninin değeri true ise önceki şekli gizleyeleim. Yeni şeklin konumunu belirleyelim.
                    if (!(aktifSekil[0] % 10 == 1))
                    {
                        if (kare[aktifSekil[0] - 1].Visible == false)
                        {
                            sola[0] = true;
                        }
                        else
                        {
                            sola[0] = false;
                        }
                        if (aktifSekil[1] - 1 == aktifSekil[0])
                        {
                            sola[1] = true;
                        }
                        else
                        {
                            if (kare[aktifSekil[1] - 1].Visible == false)
                            {
                                sola[1] = true;
                            }
                            else
                            {
                                sola[1] = false;
                            }
                        }
 
                        if (((aktifSekil[2] - 1 == aktifSekil[0]) || (aktifSekil[2] - 1 == aktifSekil[1])))
                        {
                            sola[2] = true;
                        }
                        else
                        {
                            if (kare[aktifSekil[2] - 1].Visible == false)
                            {
                                sola[2] = true;
                            }
                            else
                            {
                                sola[2] = false;
                            }
                        }
                        if (((aktifSekil[3] - 1 == aktifSekil[0]) || (aktifSekil[3] - 1 == aktifSekil[1]) || (aktifSekil[3] - 1 == aktifSekil[2])))
                        {
                            sola[3] = true;
                        }
                        else
                        {
                            if (kare[aktifSekil[3] - 1].Visible == false)
                            {
                                sola[3] = true;
                            }
                            else
                            {
                                sola[3] = true;
                            }
                        }
                        for (int i = 0; i < 4; i++)
                        {
                            if (sola[i] == true)
                            {
                                solaGit = true;
                            }
                            else
                            {
                                solaGit = false;
                                break;
                            }
                        }
 
                        if (solaGit == true)
                        {
                            for (int i = 0; i < 4; i++)
                            {
                                kare[aktifSekil[i]].Visible = false;
                                aktifSekil[i] = aktifSekil[i] - 1;
                                kare[aktifSekil[i]].Visible = true;
                                kare[aktifSekil[i]].BackColor = renk;
                            }
                        }
                    }
                }
 
Uygulamayı kaydedip çalıştıralım. Sol ok tuşuna ya da imgLeft tuşuna bastığınızda şeklin sola doğru gittiğini görürsünüz. Şimdi sağa ok tuşuna basıldığında gerekli işlemleri yapalım.
Adım 11: Klavyeden sağ ok tuşuna basılıp basılmadığını kontrol edelim.
                if (e.KeyCode == Keys.Right)
                {
                };
Adım 12: Öncelikle son şeklin sağ tarafa yaslanıp yaslanmadığını kontrol edelim.
        if (!(aktifSekil[3] % 10 == 0)) {
 
        }
Adım 13: Şekil sol tarafa giderken şeklilleri 0, 1 ,2  3 diyerek kontrol etmiştik. Burada ise 3, 2, 1, 0 diyerek kontrol edeceğiz. Üçüncü şekilden önceki şeklin gizli olup olmadığını kontrol edelim. Buna göre saga dizisinin son elemanının değerini true yapalım.
                    if (!(aktifSekil[3] % 10 == 0))
                    {
                        if (kare[aktifSekil[3] + 1].Visible == false)
                        {
                            saga[3] = true;
                        }
                        else
                        {
                            saga[3] = false;
                        }
                     }
Adım 14: İkinci şekilden önceki şeklin gizli olup olmadığını kontrol edelim. Buna göre saga dizisinin son elemanının değerini true yapalım. Bu arada ikinci şeklin üçüncü şekilden önce olup olmadığını da kontrol etmeliyiz.
                    if (!(aktifSekil[3] % 10 == 0))
                    {
                        if (kare[aktifSekil[3] + 1].Visible == false)
                        {
                            saga[3] = true;
                        }
                        else
                        {
                            saga[3] = false;
                        }
                        if ((aktifSekil[2] + 1 == aktifSekil[3]))
                        {
                            saga[2] = true;
                        }
                        else
                        {
                            if (kare[aktifSekil[2] + 1].Visible == false)
                            {
                                saga[2] = true;
                            }
                            else
                            {
                                saga[2] = false;
                            }
                        }
                    }
Adım 15: Birinci şekilden önceki şeklin gizli olup olmadığını kontrol edelim. Buna göre saga dizisinin son elemanının değerini true yapalım. Bu arada birinci şeklin hem ikinci hem de üçüncü şekilden önce olup olmadığını da kontrol etmeliyiz.
                    if (!(aktifSekil[3] % 10 == 0))
                    {
                        if (kare[aktifSekil[3] + 1].Visible == false)
                        {
                            saga[3] = true;
                        }
                        else
                        {
                            saga[3] = false;
                        }
                        if ((aktifSekil[2] + 1 == aktifSekil[3]))
                        {
                            saga[2] = true;
                        }
                        else
                        {
                            if (kare[aktifSekil[2] + 1].Visible == false)
                            {
                                saga[2] = true;
                            }
                            else
                            {
                                saga[2] = false;
                            }
                        }
 
                        if (((aktifSekil[1] + 1 == aktifSekil[3]) || (aktifSekil[1] + 1 == aktifSekil[2])))
                        {
                            saga[1] = true;
                        }
                        else
                        {
                            if (kare[aktifSekil[1] + 1].Visible == false)
                            {
                                saga[1] = true;
                            }
                            else
                            {
                                saga[1] = false;
                            }
                        }
                   }
Adım 16: Sıfırıncı şekilden önceki şeklin gizli olup olmadığını kontrol edelim. Buna göre saga dizisinin son elemanının değerini true yapalım. Bu arada sıfırıncı şeklin hem birinci hem ikinci hem de üçüncü şekilden önce olup olmadığını da kontrol etmeliyiz.
                    if (!(aktifSekil[3] % 10 == 0))
                    {
                        if (kare[aktifSekil[3] + 1].Visible == false)
                        {
                            saga[3] = true;
                        }
                        else
                        {
                            saga[3] = false;
                        }
                        if ((aktifSekil[2] + 1 == aktifSekil[3]))
                        {
                            saga[2] = true;
                        }
                        else
                        {
                            if (kare[aktifSekil[2] + 1].Visible == false)
                            {
                                saga[2] = true;
                            }
                            else
                            {
                                saga[2] = false;
                            }
                        }
 
                        if (((aktifSekil[1] + 1 == aktifSekil[3]) || (aktifSekil[1] + 1 == aktifSekil[2])))
                        {
                            saga[1] = true;
                        }
                        else
                        {
                            if (kare[aktifSekil[1] + 1].Visible == false)
                            {
                                saga[1] = true;
                            }
                            else
                            {
                                saga[1] = false;
                            }
                        }
 
                        if (((aktifSekil[0] + 1 == aktifSekil[3]) || (aktifSekil[0] + 1 == aktifSekil[2]) || (aktifSekil[0] + 1 == aktifSekil[1])))
                        {
                            saga[0] = true;
                        }
                        else
                        {
                            if (kare[aktifSekil[0] + 1].Visible == false)
                            {
                                saga[0] = true;
                            }
                            else
                            {
                                saga[0] = false;
                            }
                        }
                    }
Adım 17: saga dizi elemanlarını kontrol edelim. Tamamı true ise sagagit değişkeninin değerini true yapalım.
                    if (!(aktifSekil[3] % 10 == 0))
                    {
                        if (kare[aktifSekil[3] + 1].Visible == false)
                        {
                            saga[3] = true;
                        }
                        else
                        {
                            saga[3] = false;
                        }
                        if ((aktifSekil[2] + 1 == aktifSekil[3]))
                        {
                            saga[2] = true;
                        }
                        else
                        {
                            if (kare[aktifSekil[2] + 1].Visible == false)
                            {
                                saga[2] = true;
                            }
                            else
                            {
                                saga[2] = false;
                            }
                        }
 
                        if (((aktifSekil[1] + 1 == aktifSekil[3]) || (aktifSekil[1] + 1 == aktifSekil[2])))
                        {
                            saga[1] = true;
                        }
                        else
                        {
                            if (kare[aktifSekil[1] + 1].Visible == false)
                            {
                                saga[1] = true;
                            }
                            else
                            {
                                saga[1] = false;
                            }
                        }
 
                        if (((aktifSekil[0] + 1 == aktifSekil[3]) || (aktifSekil[0] + 1 == aktifSekil[2]) || (aktifSekil[0] + 1 == aktifSekil[1])))
                        {
                            saga[0] = true;
                        }
                        else
                        {
                            if (kare[aktifSekil[0] + 1].Visible == false)
                            {
                                saga[0] = true;
                            }
                            else
                            {
                                saga[0] = false;
                            }
                        }
 
                        for (int i = 0; i < 4; i++)
                        {
                            if (saga[i] == true)
                            {
                                sagaGit = true;
                            }
                            else
                            {
                                sagaGit = false;
                                break;
                            }
                        }
                    }
Adım 18: sagagit değişkeninin değeri true ise şekli sağa doğru kaydıralım.
                    if (!(aktifSekil[3] % 10 == 0))
                    {
                        if (kare[aktifSekil[3] + 1].Visible == false)
                        {
                            saga[3] = true;
                        }
                        else
                        {
                            saga[3] = false;
                        }
                        if ((aktifSekil[2] + 1 == aktifSekil[3]))
                        {
                            saga[2] = true;
                        }
                        else
                        {
                            if (kare[aktifSekil[2] + 1].Visible == false)
                            {
                                saga[2] = true;
                            }
                            else
                            {
                                saga[2] = false;
                            }
                        }
 
                        if (((aktifSekil[1] + 1 == aktifSekil[3]) || (aktifSekil[1] + 1 == aktifSekil[2])))
                        {
                            saga[1] = true;
                        }
                        else
                        {
                            if (kare[aktifSekil[1] + 1].Visible == false)
                            {
                                saga[1] = true;
                            }
                            else
                            {
                                saga[1] = false;
                            }
                        }
 
                        if (((aktifSekil[0] + 1 == aktifSekil[3]) || (aktifSekil[0] + 1 == aktifSekil[2]) || (aktifSekil[0] + 1 == aktifSekil[1])))
                        {
                            saga[0] = true;
                        }
                        else
                        {
                            if (kare[aktifSekil[0] + 1].Visible == false)
                            {
                                saga[0] = true;
                            }
                            else
                            {
                                saga[0] = false;
                            }
                        }
 
                        for (int i = 0; i < 4; i++)
                        {
                            if (saga[i] == true)
                            {
                                sagaGit = true;
                            }
                            else
                            {
                                sagaGit = false;
                                break;
                            }
                        }
 
                        if (sagaGit == true)
                        {
                            for (int i = 3; i > -1; i--)
                            {
                                kare[aktifSekil[i]].Visible = false;
                                aktifSekil[i] = aktifSekil[i] + 1;
                                kare[aktifSekil[i]].Visible = true;
                                kare[aktifSekil[i]].BackColor = renk;
                            }
                        }
 
                    }
                }
 

Adım 19: Şimdi aşağı ok tuşuna basılı tutulduğunda şeklin hızlı bir şekilde aşağıya inmesini sağlayalım. 

                if (e.KeyCode == Keys.Down)
                {
                    timer1.Interval = 10;
                }
 
Projeyi kaydedip çalıştıralım. Tuşların doğru bir şekilde çalıştığını görelim. Bir sonraki derste görüşmek üzere.

 


İlgili Makaleler
c# Programında Bigpara Sayfasından Borsa Verilerini Selenium Kütüphanesini Kullanarak Çekme
Konsol Ekranında Kod Yazma ve Çalıştırma
c# Console Uygulamalarında Ping Nasıl Kullanılır, Ping Atma
Veri Girişi Doğrulama (Input Validation)
Girilen Ad Soyadı Form Sayfasında Dinamik Olarak Gösteren c# Form Uygulaması
CefSharp Kullanan Sekmelere Sahip Chromium Tarayıcı Oluşturma2
Tombala Oyununu Yapan Uygulamayı c# Dilinde Kodlama1
Kompleks Veri Bağlama (Complex Data Binding)
C# Uygulamalarında HashMap Dizi Oluşturma
Metodu Sonlandırma
Basit Veri Bağlama (Simple Data Binding)
Sayısal Loto Çekilişini Yapan c# Uygulaması
Rastgele Seçilen Bir Sayıyı Basamaklarına Ayıran, Basamak Değerini ve Sayı Değerini Bulan c# Console Uygulaması
Kredi Kartı Taksitlendirme İşlemini Yapan c# Uygulaması
Değişik Özelliklerde Grafik Çizimi Yapan c# Uygulaması
Doğum Günü Hesabını Ayrıntılı Olarak Yapan c# Uygulaması
Veri Girişi Maskeleme (MaskedTextBox)
c# Form Uygulamalarında SqLite Veritabanında Uyeler Tablosunu Oluşturma
Nesne Tabanlı Programlamaya Giriş
Kaçan Buton Oyununu Yapan c# Uygulaması

Yorum Ekle
   
Kötü
İyi