Satranç tahtasında 64 kare bulunmaktadır. Araştırdığım açık programlarda taş(piece) nesnelerinin oluşturulduğunu ve onların kareler arasında yer değiştirdiğini gördüm. Ben ise kare nesnelerini değiştirerek taş hareketini sağlamayı düşündüm.
Ben kare sınıfını(SatrancKare) aşağıdaki gibi tasarladım. Bu yeni sınıf (class) benim satranç tahtamda oluşturacağım her karenin ana kalıbı olacak. Javada Swing adlı bir kütüphane mevcut ve burada ekranda kullandığımız Label(etiket), Button(tuş), Frame(çerçeve) gibi nesneler hazır bulunuyor.
import javax.swing.JButton;
public class SatrancKare extends JButton
yazarak, import ile o kütüphaneden alınan button sınıfı kullanılabilir duruma geliyor ve extends ile de benim tasarladığım yeni sınıf bu JButton sınıfından türetiliyor. Ben kütüphanedeki sınıf hakkında genel bir bilgiyle yetinerek orda yazılmış tüm rutinleri kendim yazmış gibi kullanabiliyorum. Hareket ettirirken değiştirmeyi düşündüğüm ikonlar hakkında bir satır bile yazmıyorum.
JButton sınıfında olmayan bir değişken olarak her karede, tahtada kareyi belirleyen bir numara bulunsun istiyorum bu numaraya bakarak boş bir kare mi yoksa vezir olan kare mi olduğunu bileceğim ve taş oynanınca gidilen karede bu numarayı gelinen karenin numarası olarak değiştireceğim. yerNo değişkenini bunun için kullanıyorum.
Karenin bulunduğu noktanın tahtanın alt sol köşesine göre sütun ve satır olarak yerlerini de nokta değişkeni ile belirliyorum. Bu değişken Point kalıbından üretien bir nesne olup nokta.x ve nokta.y sayıları 0 ile 7 arasında sütun ve satır değerlerini saklıyor.
Genelde satranç kurallarında bir taşın oynanmış olması bazı sonuçlar doğurur. Piyonlar ilk oynamadan sonra iki hane çıkamazlar. Karede bir hareket olduğu zaman tasOYNADI değişkeni bu bilgiyi saklayacaktır.
Kareye fare ile basıp sürükleyince, bırakınca veya click yapınca nasıl davranacağı da FareNe Yapar sınıfı ile belirlediğim fare davranışlarını kapsayan fny nesnesini esas alarak her kareye addMouseListener(fny) eklenerek sağlanmış durumda.
Java'nın üstünlüklerinden biri de aynı isimle çok sayıda alt yordam yazılabilmesi. parametre tiplerinin farklı oluşu sayesinde bu imkan kullanılabiliyor. Üç tane farklı konstüktör biraz da açıklama amaçlı.
SatrancKare.java
import java.awt.Point;
import java.awt.event.MouseEvent;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.event.MouseInputAdapter;
@SuppressWarnings("serial")
public class SatrancKare extends JButton {
int yerNo ;
Point nokta=new Point();
boolean tasOYNADI;
SatrancKare(){
}
SatrancKare(ImageIcon ikon) {
super(ikon);
FareNeYapar fny=new FareNeYapar();
addMouseListener(fny);
addMouseMotionListener(fny);
yerNo=0;
nokta.x=0;
nokta.y=0;
tasOYNADI=false;
}
public SatrancKare(String string) {
}
No comments:
Post a Comment