Çok güzelmiş hocam eline sağlık :)

derleyip bir yere upload edebilecek bir friendo var mı? ve bu konuda başka bir şey sylemeyeceğim...

oyunu denedim. güzel olmuş :P "Derviş Yunus bu szü eğri büğrü syleme, Seni sorguya çeker bir Molla Kasım gelir."

deniyeceğim. teşekkürler hocam.

çiz Trilyon da olsan harcanacaksın!!!

http://s2. dosya. tc/server14/Kinpnv/tetris. jar.html Bu derlenmiş hali. Dün ben güzelce bi cevap yazmıştım ama şu "ipdeğişti" muhabbeti yüzünden yalan olmuş sanırım :/ oyun olarak saracağını sanmıyorum, direk başlıyor, gram grsellik yok, hızlanma yok, puanlama dandirik vs vs(85 aldım bu devle ama oynanmaz yani :D)... Olayı ufaktan java ve algoritma konularında birşeyler ğrenme & ğretme. :)

Geçen dnem c# ile puzzle devinden sonra bu dnem java ile tetris devi hazırladım. Aslında proje zetcode.com adlı siteden çalıntı ama değişken ve fonksiyon isimlerini falan Türkçeleştirdim, birkaç yeni zellik ve bu zelliklerle birlikte birkaç bug ekledim :D Gnül isterdi ki sıfırdan yapayım ama dev grup devi ve tek uğraşanda ben olunca mecbur byle birşey yaptım... Neyse, buyrun kodlar; Tetris. java package tetris; import java. awt. BorderLayout; import javax. swing. JFrame; import javax. swing. JLabel; public class Tetris extends JFrame { JLabel statusbar; public Tetris public JLabel getStatusBar public static void main } Sekil. java package tetris;import java. util. Random;public class Sekil { enum parcalar ; private parcalar pSekil; private int koordinatlar ; private int koordinatTablosu; public Sekil public void setSekil { koordinatTablosu = new int { { , , , }, { , , , }, { , , , }, { , , , }, { , , , }, { , , , }, { , , , }, { , , , } }; for (int i = 0; i < 4 ; i++) { for (int j = 0; j < 2; ++j) } pSekil = sekil; } private void setX private void setY public int x public int y public parcalar getSekil public void setRandomSekil public int minX { int m = koordinatlar ; for (int i=0; i < 4; i++) return m; } public int minY { int m = koordinatlar ; for (int i=0; i < 4; i++) return m; } public Sekil solaCevir { if return this; Sekil result = new Sekil ; result. pSekil = pSekil; for (int i = 0; i < 4; ++i) return result; } public Sekil sagaCevir { if return this; Sekil result = new Sekil ; result. pSekil = pSekil; for (int i = 0; i < 4; ++i) return result; }} Board. java package tetris;import java. awt. Color;import java. awt. Dimension;import java. awt. Graphics;import java. awt. event. ActionEvent;import java. awt. event. ActionListener;import java. awt. event. KeyAdapter;import java. awt. event. KeyEvent;import javax. swing. JLabel;import javax. swing. JPanel;import javax. swing. Timer;import tetris. Sekil. parcalar;public class Board extends JPanel implements ActionListener { final int BoardEn = 10; final int BoardBoy = 22; Timer timer; boolean dususFlag = false; boolean baslamaFlag = false; boolean duraklamaFlag = false; int silinenSatir = 0; int curX = 0; int curY = 0; JLabel statusbar; Sekil curParca; parcalar board; public Board @Override public void actionPerformed { if else } int kareEn int kareBoy parcalar shapeAt public void basla private void duraklat { if return; duraklamaFlag = ! duraklamaFlag; if else repaint ; } public void paint { super. paint ; Dimension size = getSize ; int boardTop = size. getHeight - BoardBoy kareBoy ; for (int i = 0; i < BoardBoy; ++i) { for (int j = 0; j < BoardEn; ++j) } if (curParca. getSekil != parcalar. Bos) { for (int i = 0; i < 4; ++i) } } private void enDibe { int newY = curY; while (newY > 0) pieceDropped ; } private void birSatirAsagi private void temizle private void pieceDropped { for (int i = 0; i < 4; ++i) satirSil ; if yeniParca ; } private void yeniParca { curParca. setRandomSekil ; curX = BoardEn / 2; curY = BoardBoy - 1 + curParca. minY ; if (! hareketDene } private boolean hareketDene { //Parçaların form dışına çıkmasını engelleme kontrolü //True dndürülürse istenilen hareketin gerçekleştirilmesi for (int i = 0; i < 4; ++i) curParca = yeniParca; curX = yeniX; curY = yeniY; repaint ; return true; } private void satirSil { //Tam dolan satırların silinmesi ve silinen satırın üstündeki parçaların //aşağıya kaydırılması. //Kazanılan puanın label üstünde grüntülenmesi. int silinenStrSayisi = 0; for (int i = BoardBoy - 1; i >= 0; --i) { boolean satirDolu = true; for (int j = 0; j < BoardEn; ++j) { if (shapeAt parcalar. Bos) } if { ++silinenStrSayisi; for (int k = i; k < BoardBoy - 1; ++k) } } if (silinenStrSayisi > 0) } private void kareCiz { Color colors = ; Color color = colors ; g. setColor ; g. fillRect(x + 1, y + 1, kareEn - 2, kareBoy - 2); } class TAdapter extends KeyAdapter { @Override public void keyPressed { if (! baslamaFlag || curParca. getSekil parcalar. Bos) int keycode = e. getKeyCode ; if if if if if return; switch } }} Kodları Belirtilen isimlerdeki dosyaları oluşturup içlerine c/p yapın. Sonra 3 kaynak kod dosyasınıda tetris adında bi klasr oluşturup onun içine atın. Package kullanıldığı için bu şekilde yapmanız gerekiyor ama yinede komut satırında derleyemeyebilirsiniz eğer benim gibi javada yeniyseniz :) o yüzden tavsiyem netbeans ya da eclipse kullanmanız. Proje çalıntı ama açıklayamayacağım biyeri yok diyebilirim, her satırını tek tek okuyup çalıştım herşeyini açıklayabilirim eğer anlamadığınız yeri olursa. Gelelim eklemelerime ve buglara: -Oyunda puanlama yoktu, 5dakikada yaptım oldu. Hızı arttırma yapacaktım zorluk seviyesi için bununla birlikte ama alelacele eklediğim bişey oldu bu :p -Oyun bittikten sonra kapat aç yapmak gerekiyodu, R tuşuna bikaç bişey ekledim yeni oyun ve reset olayını yaptırdım. Tabi buglarda bununla birlikte geldi duraklatma olayıyla falan karıştı, flaglarla oynayarak düzeltilebilir. Başkada bişey aklıma gelmiyor şu an, oyunu başlattıktan sonra oynayabilmeniz için nce şu en sondaki switch-case yapısını incelemenizi tavsiye ederim :) Oyunun Mantığı-Algoritması: Tetris oyununda her parça 4 kutucuktan oluşur.(Latince Tetra kelimesi 4 anlamındadır) Burda yapılan koordinat düzlemini oluşturmak ve kutucukları koordinat düzleminde çizdirmek ve hareketleri içinde repaint yapmak. Bütün sıkıntısı çizim kısmı, hareketler tamamen koordinat düzlemi bilgisi ve 4 işlemden ibaret. Anlamadığınız yerleri sorabilirsiniz hadi kolay gelsin :) :)