c# Desktop

Tetris Oyununu c# Dilini Kullanarak Form Sayfasında Kodlama7

Geldik şekillerin döndürülmesi işlemine. Bu işlemi gerçekleştirmek için yukarı ok tuşunu kullanacağız. Elimizde 7 adet şekil vardı. Bu şekillerin dönüşleri birbirinden farklı olacaktır. Hangi şeklin seçildiğini sekilNo değişkeniyle kontrol ediyorduk. Birinci şeklimiz 4 karanin yan yana olduğu şekildi. Bu şeklin dönme işlemini gerçekelştirelim.

Adım 1: Yukarı ok tuşuna basıldığında gerekli olan işlemleri gerçekleştirelim.

                if (e.KeyCode == Keys.Up)
                {
                }
Adım 2: sekilNo değişkeninden elde edilen değerleri switch deyimiyle kontrolünü sağlayalım.
                if (e.KeyCode == Keys.Up)
                {
                    switch (sekilNo)
                    {
                    }
                }
Adım 3: İlk şeklimize ait dönme işlemine geçelim. Burada şeklin durumunu kontrol etmemiz gerekir. Başlangıçta tüm şekiller kendi orijinal durumundadır. Buna göre durum değişkeninin 1 olma durumuna bakalım.
                if (e.KeyCode == Keys.Up)
                {
                    switch (sekilNo)
                    {
                        case 1:
                            if (durum == 1)
                            {
                            }
                        break;
                     }
                }
Adım 4: Dönme işleminin gerçekleşmesi için şeklin sınırlar iiçinde olup olmadığına bakalım.
                if (e.KeyCode == Keys.Up)
                {
                    switch (sekilNo)
                    {
                        case 1:
                            if (durum == 1)
                            {
                                if (aktifSekil[1] > 10 && aktifSekil[1] < 181)
                                {
 
                                }
                            }
                        break;
                   }
               }
Adım 5: Şeklin dönmesi için kendisinden sonra şekillerin görünür olup olmadığına bakmamız gerekir.
                if (e.KeyCode == Keys.Up)
                {
                    switch (sekilNo)
                    {
                        case 1:
                            if (durum == 1)
                            {
                                if (aktifSekil[1] > 10 && aktifSekil[1] < 181)
                                {
                                    if (kare[aktifSekil[1] + 10].Visible == false && kare[aktifSekil[1] + 20].Visible == false)
                                    {
 
 
                                    }
                                }
                            }
                          break;
                     }
                 }
Adım 6: Eğer kontrolümüz doğruysa mevcut şekli gizleyelim.
                if (e.KeyCode == Keys.Up)
                {
                    switch (sekilNo)
                    {
                        case 1:
                            if (durum == 1)
                            {
                                if (aktifSekil[1] > 10 && aktifSekil[1] < 181)
                                {
                                    if (kare[aktifSekil[1] + 10].Visible == false && kare[aktifSekil[1] + 20].Visible == false)
                                    {
                                        for (int i = 0; i < 4; i++)
                                        {
                                            kare[aktifSekil[i]].Visible = false;
                                        }
 
                                     }
                                }
                            }
                         break;
                      }
                   }
Adım 7: Bir sonraki şeklin konumunu verelim ve durum değişkeninin değerini 2 yaplaım.
                if (e.KeyCode == Keys.Up)
                {
                    switch (sekilNo)
                    {
                        case 1:
                            if (durum == 1)
                            {
                                if (aktifSekil[1] > 10 && aktifSekil[1] < 181)
                                {
                                    if (kare[aktifSekil[1] + 10].Visible == false && kare[aktifSekil[1] + 20].Visible == false)
                                    {
                                        for (int i = 0; i < 4; i++)
                                        {
                                            kare[aktifSekil[i]].Visible = false;
                                        }
                                        aktifSekil[0] = aktifSekil[1] + 20;
                                        aktifSekil[1] = aktifSekil[1] + 10;
                                        aktifSekil[2] = aktifSekil[1] - 10;
                                        aktifSekil[3] = aktifSekil[1] - 20;
                                        durum = 2;
                                    }
                                }
                            }
                        break;
                    }
                }
Adım 8: Şeklimiz uzun şekil olduğu için dönme işleminde iki durum söz konusudur. Şimdi durum değişkeninin 2 olması durumunu kontrol edelim.
                        case 1:
                            if (durum == 1)
                            {
                                if (aktifSekil[1] > 10 && aktifSekil[1] < 181)
                                {
                                    if (kare[aktifSekil[1] + 10].Visible == false && kare[aktifSekil[1] + 20].Visible == false)
                                    {
                                        for (int i = 0; i < 4; i++)
                                        {
                                            kare[aktifSekil[i]].Visible = false;
                                        }
                                        aktifSekil[0] = aktifSekil[1] + 20;
                                        aktifSekil[1] = aktifSekil[1] + 10;
                                        aktifSekil[2] = aktifSekil[1] - 10;
                                        aktifSekil[3] = aktifSekil[1] - 20;
                                        durum = 2;
                                    }
                                }
                            }
                            else if (durum == 2)
                            {
 
                            }
                            break;
Adım 9: Şeklimizin bir önceki ve bir sonraki şekle göre durumunu, kenarlarda olup olmadığını kontrol edelim.
                        case 1:
                            if (durum == 1)
                            {
                                if (aktifSekil[1] > 10 && aktifSekil[1] < 181)
                                {
                                    if (kare[aktifSekil[1] + 10].Visible == false && kare[aktifSekil[1] + 20].Visible == false)
                                    {
                                        for (int i = 0; i < 4; i++)
                                        {
                                            kare[aktifSekil[i]].Visible = false;
                                        }
                                        aktifSekil[0] = aktifSekil[1] + 20;
                                        aktifSekil[1] = aktifSekil[1] + 10;
                                        aktifSekil[2] = aktifSekil[1] - 10;
                                        aktifSekil[3] = aktifSekil[1] - 20;
                                        durum = 2;
                                    }
                                }
                            }
                            else if (durum == 2)
                            {
                                if (kare[aktifSekil[2] - 1].Visible == false && kare[aktifSekil[2] + 1].Visible == false && kare[aktifSekil[2] + 2].Visible == false && (!(aktifSekil[2] % 10 == 1)) && (aktifSekil[2] % 10 < 9) && (!(aktifSekil[2] % 10 == 0)))
                                {
 
                                 }
                             }
                             break;
Adım 10: Şartımız doğruysa mevcut şekli gizleyelim. Yeni şeklin konumlarını belirleyelim.
                        case 1:
                            if (durum == 1)
                            {
                                if (aktifSekil[1] > 10 && aktifSekil[1] < 181)
                                {
                                    if (kare[aktifSekil[1] + 10].Visible == false && kare[aktifSekil[1] + 20].Visible == false)
                                    {
                                        for (int i = 0; i < 4; i++)
                                        {
                                            kare[aktifSekil[i]].Visible = false;
                                        }
                                        aktifSekil[0] = aktifSekil[1] + 20;
                                        aktifSekil[1] = aktifSekil[1] + 10;
                                        aktifSekil[2] = aktifSekil[1] - 10;
                                        aktifSekil[3] = aktifSekil[1] - 20;
                                        durum = 2;
                                    }
                                }
                            }
                            else if (durum == 2)
                            {
                                if (kare[aktifSekil[2] - 1].Visible == false && kare[aktifSekil[2] + 1].Visible == false && kare[aktifSekil[2] + 2].Visible == false && (!(aktifSekil[2] % 10 == 1)) && (aktifSekil[2] % 10 < 9) && (!(aktifSekil[2] % 10 == 0)))
                                {
                                    for (int i = 0; i < 4; i++)
                                    {
                                        kare[aktifSekil[i]].Visible = false;
                                    }
                                    aktifSekil[0] = aktifSekil[2] - 1;
                                    aktifSekil[1] = aktifSekil[2];
                                    aktifSekil[2] = aktifSekil[2] + 1;
                                    aktifSekil[3] = aktifSekil[2] + 1;
                                    durum = 1;
                                }
                            }
                            break;
 
Böylece birinci şekle ait dönme işlemlerini gerçekelştirdik. Projeyi çalıştırıp deneyelim. Bir sonraki makalede görüşmek üzere.

İlgili Makaleler
Veri Girişi Doğrulama (Input Validation)
Basit Veri Bağlama (Simple Data Binding)
Veri Girişi Maskeleme (MaskedTextBox)
c# Programında Bigpara Sayfasından Borsa Verilerini Selenium Kütüphanesini Kullanarak Çekme
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
c# Console Uygulamalarında Ping Nasıl Kullanılır, Ping Atma
Yapıcı Metotlar (Constructors)
Kredi Kartı Taksitlendirme İşlemini Yapan c# Uygulaması
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

Yorum Ekle
   
Kötü
İyi