Wednesday, December 11, 2013

FareNeYapar

FareNeYapar kalıbı MouseInputAdapter isimli kütüphanede mevcut bir sınıftan türemektedir.


Fare hareketleri ile nesneler arasında organizmada sinirlerde oluşan akıma benzeyen bir iletişim mevcuttur. Event driven diye anılan tekniğe göre fare tuşuna basış bir uyarı olarak yayınlanmakta ve bir nesnelerden de kontrol edilerek bu uyarı yakalanabilmektedir.

Amacım, bir satranç karesine basılınca(mousePressed)  o karenin  saptanması(ilk) ve fare tuşu basılı olarak sürüklenip gittiği noktada bırakılınca(mouseReleased) gene o karenin (son) olarak belirlenmesidir.

Nokta, kütüphanede mevcut basit bir sınıf olup Point ismi ile anılmaktadır. Her Point nesnesinin x ve y olarak iki değeri bulunmaktadır. Kullandığım ilk.nokta ve son.nokta nesneleri Point kalıbından türedikleri için o nesneler hareketin başladığı ve bittiği noktaların yerlerini satır ve sütun sayısı olarak içermektedir. Bu örnek olarak ilk.x=1. ilk.y=1 noktasından son.x=1, son.y=3 noktasına bir taşı oynatırken kullanılacaktır.

private SatrancKare sonKare()  metodu da bir fonksiyon olarak farenin ekran üzerinde bulunduğu pixel olarak koordinatlarından satranç karesinin pixel olarak genişlik miktarlarına bölerek bulunan satır ve sütun sayılarına dönüşümü sağlayıp sonucu sonKare olarak vermektedir.

Fare ile tıklama(mouseClicked ) metodunun amacı, piyon son kareye kadar ulaşıp değerli taş olunca istenen taşı  tahta veya taş kutusundan seçmektir. Daha sonra da piyon son kareye sürüklenecektir.

Fare tuşu sürüklenip gittiği noktada serbest bırakılınca
                Oynat.oynaDogruHamle(ilk.nokta,  son.nokta); 
Oynat sınıfındaki oynaDogruHamle metodunu harekete geçirerek taşı oynatacaktır.

              

       public static class FareNeYapar extends MouseInputAdapter {

            public C c=new C();

            private  SatrancKare ilk=new SatrancKare();
            private  SatrancKare son=new SatrancKare();
            private  SatrancKare klk=new SatrancKare();
            Point basilanNokta=new Point();
            Point birakilanNokta=new Point();
            Point karedeBasiNokta=new Point();
             
        
         
            public FareNeYapar () {
                             }


            private SatrancKare sonKare() {
                int dx=0;
                int dy=0;
                if (birakilanNokta.x>basilanNokta.x)
                    dx=(int)((+karedeBasiNokta.x+birakilanNokta.x-basilanNokta.x)/C.kd);
                else
                    dx=(int)((-karedeBasiNokta.x+birakilanNokta.x-basilanNokta.x)/C.kd);
                if (birakilanNokta.y>basilanNokta.y)
                    dy=(int)((+karedeBasiNokta.y+birakilanNokta.y-basilanNokta.y)/C.kd);
                else
                    dy=(int)((-karedeBasiNokta.y+birakilanNokta.y-basilanNokta.y)/C.kd);
                son.nokta.x=ilk.nokta.x+dx;
                son.nokta.y=ilk.nokta.y-dy;
                return son;   
            }

            @Override
            public void mousePressed(MouseEvent e)  {
                ilk=(SatrancKare) e.getSource();
                basilanNokta=e.getLocationOnScreen();
                karedeBasiNokta=e.getPoint();
            }

            @Override      
            public void mouseReleased(MouseEvent e) {
                birakilanNokta=e.getLocationOnScreen();
                son=sonKare();          
                Oynat.oynaDogruHamle(ilk.nokta,  son.nokta);              
            }  

          
            @Override
            public void mouseClicked(MouseEvent e){
                klk=(SatrancKare) e.getSource();
                C.ustunIkon=klk.getIcon();
                C.ustunYer=klk.yerNo;
            }
        
    }

No comments:

Post a Comment