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
Veri Girişi Doğrulama (Input Validation)
Basit Veri Bağlama (Simple Data Binding)
c# Programında Bigpara Sayfasından Borsa Verilerini Selenium Kütüphanesini Kullanarak Çekme
Veri Girişi Maskeleme (MaskedTextBox)
Kompleks Veri Bağlama (Complex Data Binding)
TabControl Panelini Kullanarak Lokantalar İçin Müşteri Siparişi Alan c# Form Uygulaması
Konsol Ekranında Kod Yazma ve Çalıştırma
Yıkıcı Metotlar (Destructors)
Form Sınıfı
Kaçan Buton Oyununu Yapan c# Uygulaması
Form Sınıfına Ait Bazı Olayların ve Özelliklerin Kullanılmasına Ait Örnek Uygulama
Verilen İki Matrisi Çarpan Programı c# Dilinde Form Ortamında Yapınız
Yapıcı Metotlar (Constructors)
c# Console Uygulamalarında Ping Nasıl Kullanılır, Ping Atma
Rastgele Seçilen Bir Sayıyı Basamaklarına Ayıran, Basamak Değerini ve Sayı Değerini Bulan c# Console Uygulaması
c# Console Uygulamalarında params Dizisi Tanımlama
Faktöriyel Hesabı Yapan c# Windows Form Uygulaması
Metodu Sonlandırma
C# Uygulamalarında HashMap Dizi Oluşturma
2020 TYT Matematik Ortakatlı Kuralıyla İlgili Sorunun Çözümünü c# Diliyle Kodlama

Yorum Ekle
   
Kötü İyi