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
c# Console Uygulamalarında ReadKey Metoduyla Klavye Tuşlarını Kontrol Etme
Yıkıcı Metotlar (Destructors)
Sayısal Loto Çekilişini Yapan c# Uygulaması
Kredi Kartı Taksitlendirme İşlemini Yapan c# Uygulaması
Kaçan Buton Oyununu Yapan c# Uygulaması
Yazdırma İletişim Kutusu (PrintDialog)
C# Uygulamalarında HashMap Dizi Oluşturma
C# Uygulamalarında Dictionary Dizi Oluşturma
c# Form Uygulamalarında Ekranın Genişliğini ve Yüksekliğini Bulma
Rastgele Seçilen Bir Sayıyı Basamaklarına Ayıran, Basamak Değerini ve Sayı Değerini Bulan c# Console Uygulaması
Konsol Ekranında Kod Yazma ve Çalıştırma
LINQ - Gruplama (Grouping) Örnekleri
Veri Girişi Maskeleme (MaskedTextBox)
Panel Üzerinde Serbest Çizim Yapan c# Form Uygulaması
Veri Girişi Doğrulama (Input Validation)
c# Console Uygulamalarında Ping Nasıl Kullanılır, Ping Atma
C# Programlama Dilinde Veri Tipleri
Form Sayfalarında Ayrıntılı ListBox Kullanımı
Form Üzerine Satranç Tahtası Yapan c# Uygulaması
Belirtilen Sayı Kadar Yıldız Oluşturan c# Form Uygulaması

Yorum Ekle
   
Kötü İyi