Tetris Oyunu Yapımı 1

Not : Bu Masaüstü Projesi form sayfasında Tetris oyununun adım adım anlatılması için tasarlandı. Bu aşamada oyuna ait tasarımın yapımı işlemleri adım adım anlatılmaktadır.

Öncelikle tetris oyununa ait tasarım görünümünün yapılması gerekir. Bunun için paint programını kullanabiliriz.
Visual Studio programını açınız. Bunun için devenv komutunu kullanabilirsiniz.
Create a new project diyerek yeni bir proje oluşturunuz. Dil olarak c#, platform olarak Windows, ortam olarak Desktop seçiniz. Ekrana gelen şablonlardan Windows Forms App(.Net Framework) seçiniz.
Proje ismini TetrisOyunuForm olarak belirleyiniz. FrameWork olarak 4.5 tercih ediniz. Projenizi kullanacak son kullanıcıların bilgisayarlarındaki versiyonu dikkate alarak bu tercihi yapınız. Böylece projeniz daha fazla insan tarafından kullanılacaktır. Create diyerek işlemi tamamlayınız.
Ekrana gelen form sayfasını düzenleyelim. Form sayfası seçiliyken Properties panelinden gerekli değişiklikleri yapalım. Projeyi çalıştırıp uygulamayı deneyelim.
Name = frmTetris
MaximizeBox = False
MinimizeBox = False
Size = 420;600
StartPosition = CenterScreen
Text = Tetris Oyunu
Projeyi çalıştırıp uygulamayı deneyelim.
Solution Explorer penceresinde view Code simgesine tıklayınca frmTetris.cs sekmesi ve altında program kodlarının yazılacağı kısım gelir. Projeyi çalıştırıp uygulamayı deneyelim.
Oluşturacağımız nesneleri önce burada tanımlıyoruz. Bu oyunlarda görünür ekranın arka planında oyunu kontrol eden bir sanal matrix ya da tablo olayı vardır. Oyunla ilgili tüm bilgiler bu matrixde yada sanal tablo dizisinde tutulur. Biz de dışarıdan karelerin hareketini ve tetris olunca yok olmasını izleriz. Tetris şekilleri karelerden meydana gelir. Tetris ekranının kaça kaç sanal tablodan oluşacağını belirleyelim. Bizim yapacağımız tetris ekranı 10 X 20 lik bir sanal tablodan oluşacaktır. Bu değerleri istediğiniz şekilde değiştirebilirsiniz. 10 X 20 lik tablo 10*20=200 sanal kareden oluşur. Bu diziyi tanımlayalım. Projeyi çalıştırıp uygulamayı deneyelim.
Tetrisimizi oluşturan karelerin boyutunu 25*25 piksel yapacağız. Her kare arasına 1 piksellik boşluk bırakacağız. Buna göre tetris panosunun boyutunu hesaplamamız gerekir. Yatay 10 kare olacağı için 1+(25+1)*10=261 piksel, dikey 1+(25+1)*20=521 piksel eder. Tetris Panosu 261*521 boyutunda olur. Tüm bunları formun tasarım modunu kullanmadan sadece kod bölümünde kod yazarak yapacağız. Oluşturacağımız nesneler şimdilik kare dizisi, pano olup hepsini Label kullanarak oluşturacağız. Bu arada say değişkeni kare dizisi için kullanacağımız sayaç için gereklidir. Şimdi bunları tanımlayalım. Projeyi çalıştırıp uygulamayı deneyelim.
Bu nesneleri formumuzda oluşturmak için önce Solution Explorer penceresindeki frmTetris.cs dosyasına ya da kod yazdığımız pencerenin üst kısmındaki frmTetris.cs(Design) sekmesine tıklarsak formumuz görünür hale gelir. Form üzerinde mousumuzu çift tıklarsak tekrar kod penceresine döneriz. Fakat bu sefer formumuzla ilgili frmTetris_Load yordamının oluştuğunu görürüz. Projeyi çalıştırıp uygulamayı deneyelim.
Şimdi aşağıda verdiğim özelliklere göre forma bir Label ekleyelim. Projeyi çalıştırıp uygulamayı deneyelim.
İsmi : kare1
Genişlik : 25
Yükseklik : 25
Arkaplan rengi : Mavi
Yazı Rengi : Beyaz
Soldan 26
Üstten : 26
İçerik : 1
Sırası : 1
Görünür olsun
Oluşturduğumuz karenin yanına 1 tane daha, verilen özelliklere göre, Label ekleyelim. Projeyi çalıştırıp uygulamayı deneyelim.
İsmi : kare2
Genişlik : 25
Yükseklik : 25
Arkaplan rengi : Mavi
Yazı Rengi : Beyaz
Soldan 52
Üstten : 26
İçerik : 2
Sırası : 2
Görünür olsun
Henüz iki tane kare oluşturduk. Bu işlemler bile bayağı zaman aldı. Ancak bu uygulamada 10 x 20 = 200 tane kare oluşturmamız gerekli. Belli bir özelliğe sahip ve birbirleriyle ilişkili nesneleri statik olarak oluşturmak yerine dinamik bir şekilde oluşturabiliriz. Bu hem programın hızlı çalışmasını hem de bellekte az yer kaplamasını sağlar. Ayrıca kısa sürede nesnelerin istenilen özelliklerde daha çabuk oluşmasını sağlar. Tanımladığımız iki label nesnesini silelim. Öncelikle birinci label nesnesini kodlarla oluşturmaya çalışalım. Projeyi çalıştırıp uygulamayı deneyelim.
Şimdi ikinci label nesnesini kodlarla oluşturmaya çalışalım. Projeyi çalıştırıp uygulamayı deneyelim.
Dikkat ettiniz mi, yine aynı işlemleri yapıyoruz. Uygulama yine zaman alıyor. Kodlar çoğaldıkça hata yapma ihtimali de çoğalıyor. Label nesnelerinin özelliklerine dikkat ettiyseniz, konumu, adı, değeri ve sırası hariç, diğer özellikleri aynı. Bu tip aynı özelliklere sahip nesneleri oluşturmak için for döngüsünü kullanabiliriz. Döngümüzde satır sayısı 20, sütun sayısı 10 olacaktır. Buna göre döngülerimizi oluşturalım. Projeyi çalıştırıp uygulamayı deneyelim.
Label nesnemizin adını, değerini ve sırasını kontrol etmek için say değişkenini tanımlamıştık. Bu değişkene ilk önce 1 değerini girelim. Döngü içinde sürekli artmasını sağlayalım. Projeyi çalıştırıp uygulamayı deneyelim.
Artık label nesnelerine ait özellikleri kullanarak 200 adet kare şeklini form sayfasında oluşturabiliriz. Projeyi çalıştırıp uygulamayı deneyelim.
Şimdi buna bir pano ve onun da etrafına çizgiler ekleyeceğiz. Yukarıdaki program kodunun altına aşağıdaki özellikler dikkate alınarak bir label ekleyelim. Projeyi çalıştırıp uygulamayı deneyelim.
Soldan : 25
Üstten : 25
İsmi : pano
Genişlik : 261
Yükseklik : 521
Arkaplan Rengi Çiyan
Şimdi programı tekrar çalıştırıp çizgileri görün. Programın yavaş çalıştığını görürsünüz. Karelerin Visible değerleri False yapın. Yukarıda silinmesi gereken komut satırlarını silin ve programı tekrar çalıştırın. Şimdi sadece pano ve çizgiler gözükür. Ayrıca programın da daha hızlı çalıştığını görürsünüz.