Hızlı Konu Açma

Hızlı Konu Açmak için tıklayınız.

Son Mesajlar

Konulardaki Son Mesajlar

Reklam

Forumda Reklam Vermek İçin Bize Ulaşın

Java İle Tetris Oyunu Yapımı (Kodlar İçeride)

YaSa22

Fahri Üye
Fahri Üye
Katılım
12 Temmuz 2014
Mesajlar
2,293
Tepkime puanı
2
Puanları
0
Konum
GTA
Java ile Tetris Oyunu ve Kodları







Bu makalede Nesneye Dayalı Analiz ve Tasarım dersindeki grup ödevimizden bahsedeceğim..Her nekadar grup ödevi de olsa yapımı tamamen bana aittir. Oyun Java programlama dili kullanılarak yazıldı. Yeni başlayan arkadaşlar için çok önemli kodlar içermektedir. Kalıtım, sınıf yapısı ve grafik çizme gibi..
öncelikle kodları görmek için Netbeans adlı ide'yi

Linkleri sadece kayıtlı üyeler görebilir. Linkleri görebilmek için Üye Girişi yapın veya ücretsiz olarak Kayıt Olun

indirebilirsiniz..


Oyunun Çalışması ve Kodların İşleyişi



  1. [*=center]1)b_Pencere.java ;

Pencere sınıfımızı oluşturduk ve JFrame’in özelliklerini taşıyacağından dolayı JFrame’den kalıtım aldık, sonra pencerenin ekranımızın tam ortasında gözükmesi için gereken kodları yazdık, genişlik ve yükseklik değerlerini ve diğer parametreleri ayarladıktan sonra a_Main.java içerisine ekledik.​



  1. [*=center]2)c_Panel.java ;

Oyunumuzun en önemli sınıfıdır. JLayeredPane’den kalıtım aldık ve onun özelliklerinden faydalanacağız. Global değişkenlerimizi belirledik,birçok label oluşturup onları Yazilar() methoduna yerleştirdik ve methodu kurucu methodumuzun içerisine yazarak label’ların penceremizde görünmesini sağladık.
2 Adet Timer nesnesi oluşturduk, 1.si şekillerin aşağıya kayması için,2.si ise Oyunun süresini göstermek için. Oyunun en başında rastgele oluşan değerler ile bir şekli oluşturuyoruz ve o şekli AbstractSinif Türündeki Abs değişkenine atıyoruz, bu şekilde ilk şekil aşağıya doğru inmeye başlıyor.
JLayeredPane’in paintComponent methodunu ezdirerek kendimize uygun olarak tekrardan kullanıyoruz. Bu methotta pencereki sabit olan çizimler ve sonraki gelecek şekli çizdiriyoruz.
ActionListener’dan yararlanarak Zamanlayici adında bir sınıf oluşturduk ve şekillerin Timer nesnesiyle belirli aralıklarla aşağıya kaymasını sağladık.
Yine aynı şekilde Zamanlayici2 adında bir sınıf daha oluşturarak 2. Timer ile süreyi hesaplattırdık ve Zamana bağlı olarak Level’ın artmasını sağladık.
Keylistener özelliğini kullanarak KlavyeDinleyici sınıfını oluşturduk ve oyunun klavye kontrolleri ile oynanmasını sağladık. Klavye kontrolleri tablodaki gibidir:​
Aşağı Yön Tuşu
Hızlandırma
Yukarı Yön Tuşu
Şekilleri Döndürme
Sağ Yön Tuşu
Şekli Sağa Kaydırma
Sol Yön Tuşu
Şekli Sola Kaydırma
Space Tuşu
Duraklat / Devam Et
Enter Tuşu
Yeni Oyun

Kaydırma denetleyici methotlarımız ile şekillerin en sağda ve en soldaki durumlarına göre sorunsuz dönmelerini sağladık.
For döngüsünü kullanarak en alt satırdan itibaren sütunların dolu olup olmadığını kontrol ettik, eğer aynı satırın tüm sütunları dolu ise 2 boyutlu dizimizin tüm elemanlarını birer satır aşağı kaydırdık, Tüm bunları yapan SatirYokEt methodumuzu 4 kez kullandık, çünkü tek seferde en fazla 4 satır yokedebiliyoruz (Çubuk şekli ile).​



  1. [*=center]3)d_Kutu.java ;

Oyunda kullanılacak kutuyu çizdireceğimiz sınıfımızı oluşturduk. JLabel’ın özelliklerini kullanacağımız için jlabel’dan kalıtım aldık. kurucu methodumuzun içine koordinatlarını ve boyutlarını girdik. Bir kutu için gerekli renkleri belirledik ve 25*25 lik çizimlerimizi yaptık.Aşağıya, sağa ve sola gitmesi için gerekli methotlarımızı yazdık.​



  1. [*=center]4)AbstractSinif.java ;

Tüm şekillerimizi oluşturduktan sonra hepsinde ortak olan işlemleri abstract sınıf oluşturarak biraraya topladık. Her şekil 4 kez dönüyor ve her şeklin başlangıç koordinatları aynı, ayrıca her şekil 4 adet kutudan oluşuyor. Her şeklin gidebileceği sınırlar aynı ve her oluşturulan kutu nesnesi bir arraylist’e atılıyor.
Sekil1_T.java ;
İlk olarak oluşturulan ilk kutuya başlangıç koordinatımızı verdikten sonra 2.,3., ve 4. Kutuları 1. Kutunun koordinatlarına göre ayarlıyoruz. Döndürme işlemleri 4 adet methottan oluşmakta ve herbir methotta merkezdeki kutunun koordinatlarına x ve y diyerek diğer kutuları onun koordinatına göre ayarlıyoruz, böylece kutu sadece kendi etrafında dönüyor yani dönerken sağa veya sola ilerlemiş olmuyor. Tüm bu dönme methotlarında önceden belirlediğimiz donmedenetleyicisi methodunu da kullanıyoruz. Çünkü şekiller döndüğünde bir kısmı dışarda kalabilir bu ise bizim için istenmeyen bir durumdur . Diğer kalan 6 şeklin çalışma mantığı da yine aynıdır, sadece kutuların birbirlerine göre x ve y koordinatları değişmektedir.
Diğer Açıklamalar :
Oyunda 2 boyutlu matris kullanılmış ve şekiller ile doldukça her kutunun bulunduğu yere denk gelen matris elemanına 1 değeri atanmıştır. Kontroller de buna göre yapılmıştır.” 1” Dolu, “0 “ ise o karenin boş olduğu anlamına gelmektedir. Ayrıca oyunumuzun b_pencere ve a_main sınıfını sildikten sonra eklediğimiz JApplet sınıfının init() methoduna add(new a_panel()); kodunu ekleyerek applet versiyonunu da yapmış olduk. Ayrıca kutu sınıfı panel’e, panel pencereye, pencere de main class’ına ekleneceği için ve bu sırada kalmaları bize kolaylık sağladığı için farklı bir isimlendirme yöntemi kullandık.
Puanlama Sistemi :
Zorluk
Hız (sn)
Zaman Aralığı (sn)
Bir Satır için Alınan Puan
Level 1
0,50
0 - 119
1000
Level 2
0,45
120 -179
2000
Level 3
0,40
180 - 239
3000
Level 4
0,35
240 - 299
4000
Level 5
0,30
300 – 359
6000
Level 6
0,25
360 - 419
8000
Level 7
0,20
420 à
10000


Not: Zorluk derecesi oyunda geçirilen süre arttıkça artmaktadır.

Kaynak kodlarını ve çalıştırılabilir dosyayı aşağıdaki butona tıklayarak indirebilirsiniz.

Linkleri sadece kayıtlı üyeler görebilir. Linkleri görebilmek için Üye Girişi yapın veya ücretsiz olarak Kayıt Olun



Linkleri sadece kayıtlı üyeler görebilir. Linkleri görebilmek için Üye Girişi yapın veya ücretsiz olarak Kayıt Olun




Linkleri sadece kayıtlı üyeler görebilir. Linkleri görebilmek için Üye Girişi yapın veya ücretsiz olarak Kayıt Olun

 

Users Who Are Viewing This Konu (Users: 0, Guests: 1)

Üst