İşine yarar umarım.

#include <clx.h>
#pragma hdrstop
#include<stdio.h>
#include<conio.h>
#include<math.h>
int M[8][8];
int fil(int,int,int,int,int,int M[][8]);
int at(int,int,int,int,int);
int sah(int,int,int,int,int);
int vezir(int,int,int,int,int);
int kale(int,int,int,int,int,int M[][8]);
int piyon(int,int,int,int,int,int M[][8]);
int sirabelirle(int,int);

   main(){

int M[8][8]={{2,3,4,5,6,4,3,2},
             {1,1,1,1,1,1,1,1},
             {0,0,0,0,0,0,0,0},
             {0,0,0,0,0,0,0,0},
             {0,0,0,0,0,0,0,0},
             {0,0,0,0,0,0,0,0},
             {-1,-1,-1,-1,-1,-1,-1,-1},
             {-2,-3,-4,-5,-6,-4,-3,-2,}};//santranç taşlarına numara verildi ve tahta üzerindeki başlangıç konumu belirlendi

int a,b,c,x,y,i,j;
        int sira;
       sira=1;
                for(a=0;a<8;a++){
               for(b=0;b<8;b++)

               printf("%d\t",M[a][b]);
                 printf("\n\n\n\n");} //ekrana aktarıldı






                         //printf("kimin sirasi?\nALT TARAF icin --> ""1""\nUST TARAF  icin--> ""2""  'yi tuslayiniz:");
                            // scanf("%d",&sira); //kimin sırasıysa girilir...
                         for(;;){



                         int t=0;
                           int py,px,pi,pj;
                             for(px=0;px<8;px++)
                              for(py=0;py<8;py++)
                               for(pi=0;pi<8;pi++)
                                 for(pj=0;pj<8;pj++)
                                                  { //bu bölümde sıra size geldiğinde
                                                    //yapabileceğiniz maksimum kaç değişik hamle yapabileceğiniz hesaplanır

                  if(sira==2)
                           {
                            //piyon için
                        if((M[py][px])==1)
                             {
                                c=piyon(px,py,pi,pj,sira,M);

                                               if(c==1){

                                      if ( M[pj][pi]<=0)

                                                {t++;}}}


             else  if((M[py][px])==3)

               { //at için
               c=at(px,py,pi,pj,sira);

               if(c==1){

                  if ( M[pj][pi]<=0)

                     {t++;}}}



           else    if((M[py][px])==5)
               {  //vezir için
             c=(kale(px,py,pi,pj,sira,M)||fil(px,py,pi,pj,sira,M));
                               if(c==1){

                                      if ( M[pj][pi]<=0)

                                                {t++;}}}

           else     if((M[py][px])==6)

               {// şah için
               c=sah(px,py,pi,pj,sira);
                          if(c==1){
                                    if ( M[pj][pi]<=0)

                                                {t++;}}}

          else      if((M[py][px])==2)
               {//kale için
               c=kale(px,py,pi,pj,sira,M);
                         if(c==1){
                                     if ( M[pj][pi]<=0)

                                                {t++;}}}

         else       if((M[py][px])==4)

               {   //fil için
               c=fil(px,py,pi,pj,sira,M);
                         if(c==1){

                                      if ( M[pj][pi]<=0)

                                                {t++;}}}

                                           }

                else if(sira==1)
                            {
                                  if((M[py][px])==-1)

                 {
                    c=piyon(px,py,pi,pj,sira,M);

                   if(c==1){// piyon için
                                  if(M[pj][pi]>=0)
                                     {
                                         t++;}}}


           else    if((M[py][px])==-3)

               { //at için
               c=at(px,py,pi,pj,sira);

               if(c==1){

                          if(M[pj][pi]>=0)
                                     {
                                         t++;}}}


         else      if((M[py][px])==-5)
               {  //kale için
               c=(kale(px,py,pi,pj,sira,M)||fil(px,py,pi,pj,sira,M));
                               if(c==1){

                                   if(M[pj][pi]>=0)
                                     {
                                        t++; }}}

         else      if((M[py][px])==-6)

               {//şah için
               c=sah(px,py,pi,pj,sira);
                          if(c==1){

                                   if(M[pj][pi]>=0)
                                     {
                                         t++;}}}

        else        if((M[py][px])==-2)
               {  //kale için
               c=kale(px,py,pi,pj,sira,M);
                         if(c==1){

                                   if(M[pj][pi]>=0)
                                     {
                                         t++;}}}


       else        if((M[py][px])==-4)

               {  //fil için
               c=fil(px,py,pi,pj,sira,M);
                         if(c==1){

                                   if(M[pj][pi]>=0)
                                     {
                                         t++;}}}
                                         }

                                             }


 printf("\n\t %d  DEGISIK HAMLE YAPABILIRSINIZ\n",t);

 printf("\nHANGI KOORDINATTAN HANGI KOORDINATA OYNAMAK ISTIYORSUNUZ? (6 0 5 0)...gibi:\n");

 scanf("%d%d%d%d",&y,&x,&j,&i);

                /****************************************************************************/
                                //bu kısım kullanıcının girdiği koordiata göre
                                //hamle yapılmasını sağlıyor...
                                //oyun sona erdiğinde ekrana oyunun bittiği yazdırılıyor
               /********************************************************************************/

           if(abs(M[y][x])==1)
               {
               c=piyon(x,y,i,j,sira,M);

                 if(c==1){
                          if(sira==2)
                                    { if((M[j][i]==-6))

                   {printf("\tOYUN BITTI...UST TARAFTAKI OYUNCU KAZANDI");break; }
                                      if ( M[j][i]<=0)

                                                {M[j][i]=M[y][x];M[y][x]=0;}
                                            for(int l=0;l<8;l++){
                                         if (M[j][i]==M[7][l])//burada eger piyon karsıya gecerse vezir ile degişiyor
                                                M[j][i]=5;
                                                           sira=1; }}

                 else if(sira==1)
                                 { if((M[j][i]==6))  //eğer şah yenildiyse oyun biter ve ekrana yazdırılır

                   {printf("\tOYUN BITTI...ALT TARAFTAKI OYUNCU KAZANDI");break; }
                                   if(M[j][i]>=0)
                                     {
                                         M[j][i]=M[y][x];M[y][x]=0;}
                                         for(int l=0;l<8;l++){
                                         if (M[j][i]==M[0][l])
                                         //burada eger piyon karsıya gecerse vezir ile degişiyor
                                         M[j][i]=-5;sira=2;}}}

                      clrscr();
                for(a=0;a<8;a++){
               for(b=0;b<8;b++)

               printf("%d\t",M[a][b]);
               printf("\n\n\n\n");}}//yeni oluşan durum ekrana print edildi

           else if(abs(M[y][x])==3)
               {

               c=at(x,y,i,j,sira);

               if(c==1){
                          if(sira==2)
                                    {  if((M[j][i]==-6))

                   {printf("\tOYUN BITTI...UST TARAFTAKI OYUNCU KAZANDI");break; }
                                      if ( M[j][i]<=0)

                                                {M[j][i]=M[y][x];M[y][x]=0;}sira=1;}

                 else if(sira==1)
                                 {  if((M[j][i]==6))

                   {printf("\tOYUN BITTI...ALT TARAFTAKI OYUNCU KAZANDI");break; }
                                   if(M[j][i]>=0)
                                     {
                                         M[j][i]=M[y][x];M[y][x]=0;}sira=2;}
                                         }

                      clrscr();
                for(a=0;a<8;a++){
               for(b=0;b<8;b++)

               printf("%d\t",M[a][b]);
               printf("\n\n\n\n");}}//yeni oluşan durum ekrana print edildi


           else if(abs(M[y][x])==5)
               {
               c=vezir(x,y,i,j,sira);
                               if(c==1){
                          if(sira==2)
                                    {if((M[j][i]==-6))

                   {printf("\tOYUN BITTI...UST TARAFTAKI OYUNCU KAZANDI");break; }
                                      if ( M[j][i]<=0)

                                                {M[j][i]=M[y][x];M[y][x]=0;}sira=1;}

                 else if(sira==1)
                                 { if((M[j][i]==6))

                   {printf("\tOYUN BITTI...ALT TARAFTAKI OYUNCU KAZANDI");break; }
                                   if(M[j][i]>=0)
                                     {
                                         M[j][i]=M[y][x];M[y][x]=0;}sira=2;}}
                   clrscr();
                for(a=0;a<8;a++){
               for(b=0;b<8;b++)

               printf("%d\t",M[a][b]);
               printf("\n\n\n\n");}}


           else if(abs(M[y][x])==6)

               {
               c=sah(x,y,i,j,sira);
                          if(c==1){
                          if(sira==2)
                                    { if((M[j][i]==-6))

                   {printf("\tOYUN BITTI...UST TARAFTAKI OYUNCU KAZANDI");break; }
                                      if ( M[j][i]<=0)

                                                {M[j][i]=M[y][x];M[y][x]=0;}sira=1; }

                 else if(sira==1)
                                 { if((M[j][i]==6))

                   {printf("\tOYUN BITTI...ALT TARAFTAKI OYUNCU KAZANDI");break; }
                                   if(M[j][i]>=0)
                                     {
                                         M[j][i]=M[y][x];M[y][x]=0;}sira=2;}}

                      clrscr();
                for(a=0;a<8;a++){
               for(b=0;b<8;b++)

               printf("%d\t",M[a][b]);
               printf("\n\n\n\n");}}


               else if((abs(M[y][x])==2))
               {
               c=kale(x,y,i,j,sira,M);
                         if(c==1){
                          if(sira==2)
                                    { if((M[j][i]==-6))

                   {printf("\tOYUN BITTI...UST TARAFTAKI OYUNCU KAZANDI");break; }
                                      if ( M[j][i]<=0)

                                                {M[j][i]=M[y][x];M[y][x]=0;}sira=1;}

                 else if(sira==1)
                                 { if((M[j][i]==6))

                   {printf("\tOYUN BITTI...ALT TARAFTAKI OYUNCU KAZANDI");break; }
                                   if(M[j][i]>=0)
                                     {
                                         M[j][i]=M[y][x];M[y][x]=0;}sira=2;}
                                         }

                      clrscr();
                for(a=0;a<8;a++){
               for(b=0;b<8;b++)

               printf("%d\t",M[a][b]);
               printf("\n\n\n\n");}} //yeni oluşan durum ekrana print edildi


          else if((abs(M[y][x])==4))

               {
               c=fil(x,y,i,j,sira,M);
                         if(c==1){
                          if(sira==2)
                                    { if((M[j][i]==-6))

                   {printf("\tOYUN BITTI...UST TARAFTAKI OYUNCU KAZANDI");break; }
                                      if ( M[j][i]<=0)


                                                {M[j][i]=M[y][x];M[y][x]=0;}sira=1;}

                 else if(sira==1)

                                 { if((M[j][i]==6))

                   {printf("\tOYUN BITTI...ALT TARAFTAKI OYUNCU KAZANDI");break; }
                                   if(M[j][i]>=0)
                                     {
                                         M[j][i]=M[y][x];M[y][x]=0;}sira=2;}}

                       clrscr();
                for(a=0;a<8;a++){
               for(b=0;b<8;b++)

               printf("%d\t",M[a][b]);
               printf("\n\n\n\n");}}

                               }//sonsuz for dongüsünün sonu

               getch();
                          } //main sonu
          /**************************************************************************************/
             //bu kısımda satrançtaki herbir taş için oyun içinde gidebileceği yerler
             //belirleniyor ve kullanıcının girdiği koordinatlara bağlı olarak
             //geriye 1 veya 0 döndürülür...geriye döndürülen degere bağlı olarak
             //main() de gerekli işlemler yütülür...
          /**************************************************************************************/
               int at(int x,int y,int i,int j,int sira)
                {
                   int k;

                if((j==y+2&&i==x+1)||(j==y+2&&i==x-1)||(j==y+1&&i==x+2)||
                  (j==y+1&&i==x-2)||(j==y-1&&i==x+2)||(j==y-1&&i==x-2)||
                   (j==y-2&&i==x+1)||(j==y-2&&i==x-1))

                     k=1;
                     else k=0;
                     return k;
                              }

int piyon(int x,int y,int i,int j,int sira,int M[][8])
{
        int k=0;
        if(sira==2){
                if(y==1){

                  if(j==(y+2) && i==x){

                if(M[j][i]==0&&M[y+1][x]==0){
                                k = 1;
                           }
                        }
                       }
                 if(j==y+1 && i==x)
                 {
                        if(M[j][i]==0){
                                k = 1;
                                }
                               }
           else if(j==(y+1) && (i==(x+1)||i==(x-1)))
           {
                   if(M[j][i]<0){
                         k = 1;
                         }
                       }
                      }
          else if(sira==1)
          {
                if(y==6)
                {
                   if( j==(y-2) && i==x)
                   {
                        if(M[j][i]==0&&M[y-1][x]==0){
                                k = 1;
                           }
                        }
                      }
                  if( j==(y-1) && i==x)
                  {
                        if(M[j][i]==0){
                                k = 1;
                                }
                         }
           else if(j==(y-1) && (i==(x-1)||i==(x+1)))
           {
                   if(M[j][i]>0){
                         k = 1;
                         }
                  }
         }

 return k;
}



int kale(int x,int y,int i,int j,int turn,int M[][8])
{
        int k=1;int n;

        if(j==y)
        {
                for(n=x+1;n<i;n++)//sağa
                 {
                        if(M[j][n]!=0)
                        {
                                k = 0;
                                break;
                        }
                }
                for(n=x-1;n>i;n--)
                {
                        if(M[j][n]!=0)
                        {
                                k = 0;
                                break;
                        }
                     }
                  }
        else if(i==x)
        {
                for(int n=y+1;n<j;n++)//yukarı
                 {
                        if(M[n][i]!=0)
                         {
                                k = 0;
                                break;
                           }
                      }
                for(n=y-1;n>j;n--)//aşağı
                {
                        if(M[n][i]!=0)
                        {
                                k = 0;
                                break;
                          }
                       }
                     }
        else
        {
                k=0;
        }
        return k;
        }

int sah(int x,int y,int i,int j,int sira)
{    int k;

               if((j==y+1&&i==x)||(j==y-1&&i==x)||(j==y+1&&i==x+1)||
               (j==y+1&&i==x-1)||(j==y-1&&i==x+1)||(j==y-1&&i==x-1)||
               (j==y&&i==x+1)||(j==y&&i==x-1))

                 k=1;
                else
                 k=0;
                return k;}


int fil (int x,int y,int i,int j,int sira,int M[][8])
{
                int k=1,n;

                if(abs(i-x)!=abs(j-y))
                {
                        k=0;
                }

                if((x<i)&&(y<j))
                {
                        for(n=1;(n+x)<i;n++)
                        {
                                 if(M[y+n][x+n]!=0)
                                 k=0;
                        }
                   }

       else if((x>i)&&(y>j))
       {
        for(n=1;(x-n)>i;n++)
        {
         if(M[y-n][x-n]!=0)
            k=0;
         }
        }
        else if((x>i)&&(y<j))
        {
         for(n=1;(x-n)>i;n++)
         {
          if(M[y+n][x-n]!=0)
            k=0;
         }
        }
        else if((x<i)&&(y>j))
        {
        for(n=1;(y-n)>j;n++)
        {
         if(M[y-n][x+n]!=0)
            k=0;
         }
        }
        return k;
        }


  int vezir(int x,int y,int i,int j,int sira)
     {
         if(x==i||y==j) //ise kale fonksiyonunu koş

           {
           kale(x,y,i,j,sira,M);}

                else if(abs(i-x)==abs(y-j))//ise fil fonksiyonunu koş
                         {
                             fil(x,y,i,j,sira,M);}}