Monday, December 16, 2013

Oynat

Oynat.java sınıfında bir karenin yerini değiştirmek için gerekli olan

    static void oynaDogruHamle(ilk.nokta,  son.nokta);               

metodu en önemli olanıdır.

Sınıflar içindeki static metodlar o sınıftan bir nesne  yaratmaya gerek kalmadan her yerden sınıf ismi ile çağrılabilmektedir.
Oynat.oynaDogruHamle(ilk.nokta,  son.nokta);   ifadesinde görüldüğü gibi  ilk terim Oynat nesne değil sınıftır.

Aşağıda satranç tahtası  C.tAHTA [8][8] adı ile iki değişkenli bir alan olarak tanımlanmıştır. Ben çok kullanılan değişken ve sabitleri C.java sınıfında statik olarak tanımladığım için aşağıdaki şekilde kullanıyorum.

Java'da nesneler arasında değişim kolay olmasa da bir alan içinde mümkün olmaktadır. yerDegistir rutini alan içerisinde alan değişkenlerine yer değiştirerek iki kareye yer değiştirtmektedir.

Değişim yapmadan önce karelerin bulundukları yer sınırlarını ve geri plan renkleri saklamak daha sonra da tekrar yerlerine yerleştirmek gerekiyor. Gidilen karede bir taş varsa(taş almak) o taş gelinen kareye yer değiştirdiği için o karenin taş kutusuna kutuyaKoy rutini ile gönderilmesi ve o kareye boş kare ikonun yerleştirilmesi ve numara olarak da boş bir kare numarası verilmesi gerekiyor. Ayrıca kare ismi de "BOS" yapılıyor. Gidilen karede taş yoksa  değişikliğe gerek yok.

Bir hareket gerçekleştiği için tasOYNADI değişkeni de true olarak değiştiriliyor. C.onceIlk ve C.onceSon değişkenlerine de bir önceki hareketin kare noktalarını saklayarak piyonlar son kareye ulaşıp üstün piyon olurken ihtiyaç duyuluyor.

Oynat.java

public class Oynat {

   static void yerDegistir(Point ilk, Point son){
        SatrancKare z=new SatrancKare();
        Point p=new Point();
        z=C.tAHTA[son.x][son.y];
        C.tAHTA[son.x][son.y]=C.tAHTA[ilk.x][ilk.y];
        C.tAHTA[ilk.x][ilk.y]=z;
        p=C.tAHTA[son.x][son.y].nokta;
        C.tAHTA[son.x][son.y].nokta=C.tAHTA[ilk.x][ilk.y].nokta;
        C.tAHTA[ilk.x][ilk.y].nokta=p;
    }
      
    static void oynat(Point ilk, Point son){
        if ((C.BENP)||(C.SENP))return;
        Icon bosKare= new ImageIcon();
        bosKare=(ImageIcon) C.tasResmi[1][6];
        java.awt.Color ilkGeriplanRengi=C.tAHTA[ilk.x][ilk.y].getBackground();
        java.awt.Color sonGeriplanRengi=C.tAHTA[son.x][son.y].getBackground();
        Rectangle boundsFrom=C.tAHTA[ilk.x][ilk.y].getBounds();
        Rectangle boundsTo=C.tAHTA[son.x][son.y].getBounds();
        yerDegistir(ilk,son);
        C.tAHTA[son.x][son.y].setBounds(boundsTo);
        C.tAHTA[ilk.x][ilk.y].setBounds(boundsFrom);
        if (C.tAHTA[ilk.x][ilk.y].getName() == "BOS"){
        }
        else{
            Satranc.kutuyaKoy(C.tAHTA[ilk.x][ilk.y]);
            C.tAHTA[ilk.x][ilk.y].setIcon(bosKare);
            C.tAHTA[ilk.x][ilk.y].setName("BOS");
            C.tAHTA[ilk.x][ilk.y].yerNo=20;
        }
        C.tAHTA[son.x][son.y].setBackground(sonGeriplanRengi);
        C.tAHTA[ilk.x][ilk.y].setBackground(ilkGeriplanRengi);
        C.tAHTA[son.x][son.y].tasOYNADI=true;
        C.onceIlk=ilk;
        C.onceSon=son;
    }

No comments:

Post a Comment