Yazmış olduğum basit düzey satranç kodlarını paylaşmak istedim.
Temel düzeyde diziler kullanılmıştır örnek olması bakımından faydalanan arkadaşlar olur diyerekten koyuyorum.
#include <stdio.h>
int duzlem[8][8];
void Yazdir(void);
void MuhtemelMahal(int , int);
main()
{
int i, j, k, sira;
int x,y;
int durum=0;
for(i=0;i<8;i++)
for(j=0;j<8;j++) duzlem[i][j]=10;
duzlem[0][0]=2; duzlem[0][7]=2; duzlem[7][0]=12; duzlem[7][7]=12;
duzlem[0][1]=3; duzlem[0][6]=3; duzlem[7][1]=13; duzlem[7][6]=13;
duzlem[0][2]=4; duzlem[0][5]=4; duzlem[7][2]=14; duzlem[7][5]=14;
duzlem[0][3]=5; duzlem[7][3]=15;
duzlem[0][4]=6; duzlem[7][4]=16;
for(i=0;i<8;i++) duzlem[1][i]=1;
for(i=0;i<8;i++) duzlem[6][i]=11;
Yazdir();
sira=1;
//1 ise beyaz
//2 ise siyah
while(durum==0)
{
k=0;
while(k==0)
{
if(sira==1)printf("Sira beyazlarin \n");
else printf("Sira siyahlarin \n");
i=8;
while(i<0 || i>7)
{printf("Satir(0-7) : "); scanf("%d",&i);}
j=8;
while(j<0 || j>7)
{printf("Sutun (0-7) : "); scanf("%d",&j);}
if(sira==1)
{
if(duzlem[i][j]<=10)
{printf("Gecerli bir tas secmediniz! \n"); i=0; }
else { k=1; sira=2; }
}
else
{
if(duzlem[i][j]>=10)
{printf("Gecerli bir tas secmediniz! \n"); i=0; }
else { k=1; sira=1; }
}
}//while k
MuhtemelMahal(i,j);
Yazdir();
printf("Hareket edeceginiz : \n");
x=8;
while(x<0 || x>7)
{printf("Satir(0-7) : "); scanf("%d",&x); }
y=8;
while(y<0 || y>7)
{printf("Sutun (0-7) : "); scanf("%d",&y);}
if(sira==1)//siyahlarinmis; beyazlara hareket et
{
if(duzlem[x][y]<0)
{
duzlem[x][y]=duzlem[i][j];
duzlem[i][j]=10;
}
else
{printf("Hareket Gecersiz! \n"); sira=2;}
}
else//beyazlarinmis; siyahlara hareket et
{
if(duzlem[x][y]<0)
{
duzlem[x][y]=duzlem[i][j];
duzlem[i][j]=10;
}
else
{ printf("Hareket gecersiz! \n"); sira=1; }
}
for(i=0;i<8;i++)
for(j=0;j<8;j++)
{
if(duzlem[i][j]<0) duzlem[i][j]=0-duzlem[i][j];
}
Yazdir();
getchar();
}//while durum
}
void Yazdir()
{
int i, j;
printf(" ");
for(i=0;i<8;i++)
{
printf("%c[%d;%dm %d %c[%dm",27,4,35,i,27,0);
}
printf("\n");
for(i=0;i<8;i++)
{
printf("%c[%d;%dm %d %c[%dm",27,3,35,i,27,0);
for(j=0;j<8;j++)
{
//printf(" [%d | %d] ",i,j);
switch(duzlem[i][j])
{
//SIYAHLAR - YUKARI
case 1: { printf("%c[%d;%d;%dm p %c[%dm",27, 1, 31, 40,27,0); break; }
case 2: { printf("%c[%d;%d;%dm k %c[%dm",27, 1, 31, 40,27,0); break; }
case 3: { printf("%c[%d;%d;%dm a %c[%dm",27, 1, 31, 40,27,0); break; }
case 4: { printf("%c[%d;%d;%dm f %c[%dm",27, 1, 31, 40,27,0); break; }
case 5: { printf("%c[%d;%d;%dm V %c[%dm",27, 1, 31, 40,27,0); break; }
case 6: { printf("%c[%d;%d;%dm S %c[%dm",27, 1, 31, 40,27,0); break; }
//NOKTALAR
case 10:{ printf("%c[%d;%d;%dm . %c[%dm",27, 1, 29, 48,27,0); break; }
// BEYAZLAR - ASAGI
case 11: { printf("%c[%d;%d;%dm p %c[%dm",27, 1, 31, 47,27,0); break; }
case 12: { printf("%c[%d;%d;%dm k %c[%dm",27, 1, 31, 47,27,0); break; }
case 13: { printf("%c[%d;%d;%dm a %c[%dm",27, 1, 31, 47,27,0); break; }
case 14: { printf("%c[%d;%d;%dm f %c[%dm",27, 1, 31, 47,27,0); break; }
case 15: { printf("%c[%d;%d;%dm V %c[%dm",27, 1, 31, 47,27,0); break; }
case 16: { printf("%c[%d;%d;%dm S %c[%dm",27, 1, 31, 47,27,0); break; }
//MUHTEMEL SIYAHLAR - YUKARI
case -1: { printf("%c[%d;%d;%dm p %c[%dm",27, 1, 31, 42,27,0); break; }
case -2: { printf("%c[%d;%d;%dm k %c[%dm",27, 1, 31, 42,27,0); break; }
case -3: { printf("%c[%d;%d;%dm a %c[%dm",27, 1, 31, 42,27,0); break; }
case -4: { printf("%c[%d;%d;%dm f %c[%dm",27, 1, 31, 42,27,0); break; }
case -5: { printf("%c[%d;%d;%dm V %c[%dm",27, 1, 31, 42,27,0); break; }
case -6: { printf("%c[%d;%d;%dm S %c[%dm",27, 1, 31, 42,27,0); break; }
//MUHTEMEL NOKTALAR
case -10:{ printf("%c[%d;%d;%dm . %c[%dm",27, 1, 29, 42,27,0); break; }
// MUHTEMEL BEYAZLAR - ASAGI
case -11: { printf("%c[%d;%d;%dm p %c[%dm",27, 1, 31, 42,27,0); break; }
case -12: { printf("%c[%d;%d;%dm k %c[%dm",27, 1, 31, 42,27,0); break; }
case -13: { printf("%c[%d;%d;%dm a %c[%dm",27, 1, 31, 42,27,0); break; }
case -14: { printf("%c[%d;%d;%dm f %c[%dm",27, 1, 31, 42,27,0); break; }
case -15: { printf("%c[%d;%d;%dm V %c[%dm",27, 1, 31, 42,27,0); break; }
case -16: { printf("%c[%d;%d;%dm S %c[%dm",27, 1, 31, 42,27,0); break; }
}//switch
}//for-ic
printf("\n\n");
}//for-dis
}
void MuhtemelMahal(int konum_x,int konum_y)
{
int i, j;
switch(duzlem[konum_x][konum_y])
{
case 1: //piyon
{
if(konum_x<8) duzlem[konum_x+1][konum_y]=0-duzlem[konum_x+1][konum_y];
if(konum_x==1) duzlem[konum_x+2][konum_y]=0-duzlem[konum_x+2][konum_y];
if(duzlem[konum_x+1][konum_y+1]>10) duzlem[konum_x+1][konum_y+1]=0-duzlem[konum_x+1][konum_y+1];
if(duzlem[konum_x+1][konum_y-1]>10) duzlem[konum_x+1][konum_y-1]=0-duzlem[konum_x+1][konum_y-1];
break;
}
case 2: //kale
{
i=konum_x+1;
while( (duzlem[i][konum_y]==10) && (i<8) )
{
duzlem[i][konum_y]=0-duzlem[i][konum_y];
i++;
}
if(i<8)
if(duzlem[i][konum_y]>10) duzlem[i][konum_y]=0-duzlem[i][konum_y];
i=konum_x-1;
while( (duzlem[i][konum_y]==10) && (i>=0) )
{
duzlem[i][konum_y]=0-duzlem[i][konum_y];
i--;
}
if(i>=0)
if(duzlem[i][konum_y]>10)duzlem[i][konum_y]=0-duzlem[i][konum_y];
i=konum_y+1;
while( (duzlem[konum_x][i]==10) && (i<8) )
{
duzlem[konum_x][i]=0-duzlem[konum_x][i];
i++;
}
if(i<8)
if(duzlem[konum_x][i]>10)duzlem[konum_x][i]=0-duzlem[konum_x][i];
i=konum_y-1;
while( (duzlem[konum_x][i]==10) && (i>=0) )
{
duzlem[konum_x][i]=0-duzlem[konum_x][i];
i--;
}
if(i>=0)
if(duzlem[konum_x][i]>10)duzlem[konum_x][i]=0-duzlem[konum_x][i];
break;
}
case 3: //at
{
if( ( konum_x-1>=0 && konum_x-1<8 ) && ( konum_y+2>=0 && konum_y+2<8 ) )
if( duzlem[konum_x-1][konum_y+2]>=10 ) duzlem[konum_x-1][konum_y+2]=0-duzlem[konum_x-1][konum_y+2];//0
if( ( konum_x-2>=0 && konum_x-2<8 ) && ( konum_y+1>=0 && konum_y+1<8 ) )
if( duzlem[konum_x-2][konum_y+1]>=10 ) duzlem[konum_x-2][konum_y+1]=0-duzlem[konum_x-2][konum_y+1];//1
if( ( konum_x-2>=0 && konum_x-2<8 ) && ( konum_y-1>=0 && konum_y-1<8 ) )
if( duzlem[konum_x-2][konum_y-1]>=10 ) duzlem[konum_x-2][konum_y-1]=0-duzlem[konum_x-2][konum_y-1];//2
if( ( konum_x-1>=0 && konum_x-1<8 ) && ( konum_y-2>=0 && konum_y-2<8 ) )
if( duzlem[konum_x-1][konum_y-2]>=10 ) duzlem[konum_x-1][konum_y-2]=0-duzlem[konum_x-1][konum_y-2];//3
if( ( konum_x+1>=0 && konum_x+1<8 ) && ( konum_y-2>=0 && konum_y-2<8 ) )
if( duzlem[konum_x+1][konum_y-2]>=10 ) duzlem[konum_x+1][konum_y-2]=0-duzlem[konum_x+1][konum_y-2];//4
if( ( konum_x+2>=0 && konum_x+2<8 ) && ( konum_y-1>=0 && konum_y-1<8 ) )
if( duzlem[konum_x+2][konum_y-1]>=10 ) duzlem[konum_x+2][konum_y-1]=0-duzlem[konum_x+2][konum_y-1];//5
if( ( konum_x+2>=0 && konum_x+2<8 ) && ( konum_y+1>=0 && konum_y+1<8 ) )
if( duzlem[konum_x+2][konum_y+1]>=10 ) duzlem[konum_x+2][konum_y+1]=0-duzlem[konum_x+2][konum_y+1];//6
if( ( konum_x+1>=0 && konum_x+1<8 ) && ( konum_y+2>=0 && konum_y+2<8 ) )
if( duzlem[konum_x+1][konum_y+2]>=10 ) duzlem[konum_x+1][konum_y+2]=0-duzlem[konum_x+1][konum_y+2];//7
break;
}
case 4://fil
{
i=konum_x+1; j=konum_y+1;
while( (duzlem[i][j]==10) && ( i<8 && j<8 ) )
{
duzlem[i][j]=0-duzlem[i][j];
i++;j++;
}
if( i<8 && j<8 )
if(duzlem[i][j]>10) duzlem[i][j]=0-duzlem[i][j];
i=konum_x-1; j=konum_y+1;
while( (duzlem[i][j]==10) && ( i>=0 && j<8 ) )
{
duzlem[i][j]=0-duzlem[i][j];
i--;j++;
}
if( i>=0 && j<8 )
if(duzlem[i][j]>10) duzlem[i][j]=0-duzlem[i][j];
i=konum_x-1; j=konum_y-1;
while( (duzlem[i][j]==10) && ( i>=0 && j>=0 ) )
{
duzlem[i][j]=0-duzlem[i][j];
i--;j--;
}
if( i>=0 && j>=0 )
if(duzlem[i][j]>10) duzlem[i][j]=0-duzlem[i][j];
i=konum_x+1; j=konum_y-1;
while( ( duzlem[i][j]==10 ) && ( i<8 && j>=0 ) )
{
duzlem[i][j]=0-duzlem[i][j];
i++;j--;
};
if( i<8 && j>=0 )
if(duzlem[i][j]>10) duzlem[i][j]=0-duzlem[i][j];
break;
}
case 5://vezir
{
i=konum_x+1;
while( (duzlem[i][konum_y]==10) && (i<8) )
{
duzlem[i][konum_y]=0-duzlem[i][konum_y];
i++;
}
if(i<8)
if(duzlem[i][konum_y]>10) duzlem[i][konum_y]=0-duzlem[i][konum_y];
i=konum_x-1;
while( (duzlem[i][konum_y]==10) && (i>=0) )
{
duzlem[i][konum_y]=0-duzlem[i][konum_y];
i--;
}
if(i>=0)
if(duzlem[i][konum_y]>10)duzlem[i][konum_y]=0-duzlem[i][konum_y];
i=konum_y+1;
while( (duzlem[konum_x][i]==10) && (i<8) )
{
duzlem[konum_x][i]=0-duzlem[konum_x][i];
i++;
}
if(i<8)
if(duzlem[konum_x][i]>10)duzlem[konum_x][i]=0-duzlem[konum_x][i];
i=konum_y-1;
while( (duzlem[konum_x][i]==10) && (i>=0) )
{
duzlem[konum_x][i]=0-duzlem[konum_x][i];
i--;
}
if(i>=0)
if(duzlem[konum_x][i]>10)duzlem[konum_x][i]=0-duzlem[konum_x][i];
i=konum_x+1; j=konum_y+1;
while( (duzlem[i][j]==10) && ( i<8 && j<8 ) )
{
duzlem[i][j]=0-duzlem[i][j];
i++;j++;
}
if( i<8 && j<8 )
if(duzlem[i][j]>10) duzlem[i][j]=0-duzlem[i][j];
i=konum_x-1; j=konum_y+1;
while( (duzlem[i][j]==10) && ( i>=0 && j<8 ) )
{
duzlem[i][j]=0-duzlem[i][j];
i--;j++;
}
if( i>=0 && j<8 )
if(duzlem[i][j]>10) duzlem[i][j]=0-duzlem[i][j];
i=konum_x-1; j=konum_y-1;
while( (duzlem[i][j]==10) && ( i>=0 && j>=0 ) )
{
duzlem[i][j]=0-duzlem[i][j];
i--;j--;
}
if( i>=0 && j>=0 )
if(duzlem[i][j]>10) duzlem[i][j]=0-duzlem[i][j];
i=konum_x+1; j=konum_y-1;
while( ( duzlem[i][j]==10 ) && ( i<8 && j>=0 ) )
{
duzlem[i][j]=0-duzlem[i][j];
i++;j--;
};
if( i<8 && j>=0 )
if(duzlem[i][j]>10) duzlem[i][j]=0-duzlem[i][j];
break;
}
case 6://sah
{
if( duzlem[konum_x-1][konum_y-1]>=10 ) duzlem[konum_x-1][konum_y-1]=0-duzlem[konum_x-1][konum_y-1];
if( duzlem[konum_x-1][konum_y]>=10 ) duzlem[konum_x-1][konum_y]=0-duzlem[konum_x-1][konum_y];
if( duzlem[konum_x-1][konum_y+1]>=10 ) duzlem[konum_x-1][konum_y+1]=0-duzlem[konum_x-1][konum_y+1];
if( duzlem[konum_x][konum_y-1]>=10 ) duzlem[konum_x][konum_y-1]=0-duzlem[konum_x][konum_y-1];
if( duzlem[konum_x][konum_y+1]>=10 ) duzlem[konum_x][konum_y+1]=0-duzlem[konum_x][konum_y+1];
if( duzlem[konum_x+1][konum_y-1]>=10 ) duzlem[konum_x+1][konum_y-1]=0-duzlem[konum_x+1][konum_y-1];
if( duzlem[konum_x+1][konum_y]>=10 ) duzlem[konum_x+1][konum_y]=0-duzlem[konum_x+1][konum_y];
if( duzlem[konum_x+1][konum_y+1]>=10 ) duzlem[konum_x+1][konum_y+1]=0-duzlem[konum_x+1][konum_y+1];
break;
}
case 11: //piyon
{
if(konum_x>=0) duzlem[konum_x-1][konum_y]=0-duzlem[konum_x-1][konum_y];
if(konum_x==6) duzlem[konum_x-2][konum_y]=0-duzlem[konum_x-2][konum_y];
if(duzlem[konum_x-1][konum_y+1]<10) duzlem[konum_x-1][konum_y+1]=0-duzlem[konum_x-1][konum_y+1];
if(duzlem[konum_x-1][konum_y-1]<10) duzlem[konum_x-1][konum_y-1]=0-duzlem[konum_x-1][konum_y-1];
break;
}
case 12: //kale
{
i=konum_x+1;
while( (duzlem[i][konum_y]==10) && (i<8) )
{
duzlem[i][konum_y]=0-duzlem[i][konum_y];
i++;
}
if(i<8)
if(duzlem[i][konum_y]<10) duzlem[i][konum_y]=0-duzlem[i][konum_y];
i=konum_x-1;
while( (duzlem[i][konum_y]==10) && (i>=0) )
{
duzlem[i][konum_y]=0-duzlem[i][konum_y];
i--;
}
if(i>=0)
if(duzlem[i][konum_y]<10)duzlem[i][konum_y]=0-duzlem[i][konum_y];
i=konum_y+1;
while( (duzlem[konum_x][i]==10) && (i<8) )
{
duzlem[konum_x][i]=0-duzlem[konum_x][i];
i++;
}
if(i<8)
if(duzlem[konum_x][i]<10)duzlem[konum_x][i]=0-duzlem[konum_x][i];
i=konum_y-1;
while( (duzlem[konum_x][i]==10) && (i>=0) )
{
duzlem[konum_x][i]=0-duzlem[konum_x][i];
i--;
}
if(i>=0)
if(duzlem[konum_x][i]<10)duzlem[konum_x][i]=0-duzlem[konum_x][i];
break;
}
case 13: //at
{
if( ( konum_x-1>=0 && konum_x-1<8 ) && ( konum_y+2>=0 && konum_y+2<8 ) )
if( duzlem[konum_x-1][konum_y+2]<=10 ) { //printf("bir\n");
duzlem[konum_x-1][konum_y+2]=0-duzlem[konum_x-1][konum_y+2]; }//0
if( ( konum_x-2>=0 && konum_x-2<8 ) && ( konum_y+1>=0 && konum_y+1<8 ) )
if( duzlem[konum_x-2][konum_y+1]<=10 ) { //printf("iki\n");
duzlem[konum_x-2][konum_y+1]=0-duzlem[konum_x-2][konum_y+1]; }//1
if( ( konum_x-2>=0 && konum_x-2<8 ) && ( konum_y-1>=0 && konum_y-1<8 ) )
if( duzlem[konum_x-2][konum_y-1]<=10 ) { //printf("uc\n");
duzlem[konum_x-2][konum_y-1]=0-duzlem[konum_x-2][konum_y-1]; }//2
if( ( konum_x-1>=0 && konum_x-1<8 ) && ( konum_y-2>=0 && konum_y-2<8 ) )
if( duzlem[konum_x-1][konum_y-2]<=10 ) { //printf("dort\n");
duzlem[konum_x-1][konum_y-2]=0-duzlem[konum_x-1][konum_y-2]; }//3
if( ( konum_x+1>=0 && konum_x+1<8 ) && ( konum_y-2>=0 && konum_y-2<8 ) )
if( duzlem[konum_x+1][konum_y-2]<=10 ) { //printf("bes\n");
duzlem[konum_x+1][konum_y-2]=0-duzlem[konum_x+1][konum_y-2]; }//4
if( ( konum_x+2>=0 && konum_x+2<8 ) && ( konum_y-1>=0 && konum_y-1<8 ) )
if( duzlem[konum_x+2][konum_y-1]<=10 ) { //printf("alti\n");
duzlem[konum_x+2][konum_y-1]=0-duzlem[konum_x+2][konum_y-1]; }//5
if( ( konum_x+2>=0 && konum_x+2<8 ) && ( konum_y+1>=0 && konum_y+1<8 ) )
if( duzlem[konum_x+2][konum_y+1]<=10 ) { //printf("yedi\n");
duzlem[konum_x+2][konum_y+1]=0-duzlem[konum_x+2][konum_y+1]; }//6
if( ( konum_x+1>=0 && konum_x+1<8 ) && ( konum_y+2>=0 && konum_y+2<8 ) )
if( duzlem[konum_x+1][konum_y+2]<=10 ) { //printf("sekiz\n");
duzlem[konum_x+1][konum_y+2]=0-duzlem[konum_x+1][konum_y+2]; }//7
break;
}
case 14://fil
{
i=konum_x+1; j=konum_y+1;
while( (duzlem[i][j]==10) && ( i<8 && j<8 ) )
{
duzlem[i][j]=0-duzlem[i][j];
i++;j++;
}
if( i<8 && j<8 )
if(duzlem[i][j]<10) duzlem[i][j]=0-duzlem[i][j];
i=konum_x-1; j=konum_y+1;
while( (duzlem[i][j]==10) && ( i>=0 && j<8 ) )
{
duzlem[i][j]=0-duzlem[i][j];
i--;j++;
}
if( i>=0 && j<8 )
if(duzlem[i][j]<10) duzlem[i][j]=0-duzlem[i][j];
i=konum_x-1; j=konum_y-1;
while( (duzlem[i][j]==10) && ( i>=0 && j>=0 ) )
{
duzlem[i][j]=0-duzlem[i][j];
i--;j--;
}
if( i>=0 && j>=0 )
if(duzlem[i][j]<10) duzlem[i][j]=0-duzlem[i][j];
i=konum_x+1; j=konum_y-1;
while( ( duzlem[i][j]==10 ) && ( i<8 && j>=0 ) )
{
duzlem[i][j]=0-duzlem[i][j];
i++;j--;
};
if( i<8 && j>=0 )
if(duzlem[i][j]<10) duzlem[i][j]=0-duzlem[i][j];
break;
}
case 15:
{
i=konum_x+1;
while( (duzlem[i][konum_y]==10) && (i<8) )
{
duzlem[i][konum_y]=0-duzlem[i][konum_y];
i++;
}
if(i<8)
if(duzlem[i][konum_y]<10) duzlem[i][konum_y]=0-duzlem[i][konum_y];
i=konum_x-1;
while( (duzlem[i][konum_y]==10) && (i>=0) )
{
duzlem[i][konum_y]=0-duzlem[i][konum_y];
i--;
}
if(i>=0)
if(duzlem[i][konum_y]<10)duzlem[i][konum_y]=0-duzlem[i][konum_y];
i=konum_y+1;
while( (duzlem[konum_x][i]==10) && (i<8) )
{
duzlem[konum_x][i]=0-duzlem[konum_x][i];
i++;
}
if(i<8)
if(duzlem[konum_x][i]<10)duzlem[konum_x][i]=0-duzlem[konum_x][i];
i=konum_y-1;
while( (duzlem[konum_x][i]==10) && (i>=0) )
{
duzlem[konum_x][i]=0-duzlem[konum_x][i];
i--;
}
if(i>=0)
if(duzlem[konum_x][i]<10)duzlem[konum_x][i]=0-duzlem[konum_x][i];
i=konum_x+1; j=konum_y+1;
while( (duzlem[i][j]==10) && ( i<8 && j<8 ) )
{
duzlem[i][j]=0-duzlem[i][j];
i++;j++;
}
if( i<8 && j<8 )
if(duzlem[i][j]<10) duzlem[i][j]=0-duzlem[i][j];
i=konum_x-1; j=konum_y+1;
while( (duzlem[i][j]==10) && ( i>=0 && j<8 ) )
{
duzlem[i][j]=0-duzlem[i][j];
i--;j++;
}
if( i>=0 && j<8 )
if(duzlem[i][j]<10) duzlem[i][j]=0-duzlem[i][j];
i=konum_x-1; j=konum_y-1;
while( (duzlem[i][j]==10) && ( i>=0 && j>=0 ) )
{
duzlem[i][j]=0-duzlem[i][j];
i--;j--;
}
if( i>=0 && j>=0 )
if(duzlem[i][j]<10) duzlem[i][j]=0-duzlem[i][j];
i=konum_x+1; j=konum_y-1;
while( ( duzlem[i][j]==10 ) && ( i<8 && j>=0 ) )
{
duzlem[i][j]=0-duzlem[i][j];
i++;j--;
};
if( i<8 && j>=0 )
if(duzlem[i][j]<10) duzlem[i][j]=0-duzlem[i][j];
break;
}
case 16://sah
{
if( duzlem[konum_x-1][konum_y-1]<=10 ) duzlem[konum_x-1][konum_y-1]=0-duzlem[konum_x-1][konum_y-1];
if( duzlem[konum_x-1][konum_y]<=10 ) duzlem[konum_x-1][konum_y]=0-duzlem[konum_x-1][konum_y];
if( duzlem[konum_x-1][konum_y+1]<=10 ) duzlem[konum_x-1][konum_y+1]=0-duzlem[konum_x-1][konum_y+1];
if( duzlem[konum_x][konum_y-1]<=10 ) duzlem[konum_x][konum_y-1]=0-duzlem[konum_x][konum_y-1];
if( duzlem[konum_x][konum_y+1]<=10 ) duzlem[konum_x][konum_y+1]=0-duzlem[konum_x][konum_y+1];
if( duzlem[konum_x+1][konum_y-1]<=10 ) duzlem[konum_x+1][konum_y-1]=0-duzlem[konum_x+1][konum_y-1];
if( duzlem[konum_x+1][konum_y]<=10 ) duzlem[konum_x+1][konum_y]=0-duzlem[konum_x+1][konum_y];
if( duzlem[konum_x+1][konum_y+1]<=10 ) duzlem[konum_x+1][konum_y+1]=0-duzlem[konum_x+1][konum_y+1];
break;
}
}
}
Gerçi çok da fazla uğraşamadım daha basit bi hale indirgenebilirdi algoritma yalnız yazdıktan sora inceleme fırsatım pek olmadı direk koydum kodu :)
umarım işinize yarar.
yorumlarınızı bekliyorum ...
Fazla incelemedim ama gerçekten uğraşıp yazmışsın.Eline sağlık, konsolda satranç oynamakta farklı bir tat veriyormuş. Gerçi Satrancıda hiç sevmem ve iyide oynayamam. :)
Tek önerim, hamle yapıldıktan sonra ekran güncellenirken önce bir clear komutuyla ekranı bir sildirmen daha doğrusu eski görünümü konsolun gözükmeyen üst bölümüne itelemen. Böylece daha göze hoş gelen bir akıcılık sağlanmış olur diye düşünüyorum. :)
@travego teşekkürler gerçekten bi system("clear");
yazıverememişim neyse zaten örnek olsun diye çok basit düzey bilgi kullandım şimdi bilmeyen arkadaşlar anlamakta güçlük çekmesin diyelim:)
bi de soradan inceleyince aklıma geldi şahı yiyorsun oyun bitmiyor onun denetimini yaptırcaktım kalmış öle , bi günde yazıyorum sora bi daha bakmıyorum , sora da böyle oluyor :) :)
Ben de bir-iki ufak ekleme yaptım:
> Satır ve sütun numaralarını girerken artık Enter'a basmanıza gerek yok.
> Her hamlede önceki görüntüler temizleniyor.
Şah sorunu hala devam ediyor. :-[
#include <stdio.h>
#include <termios.h>
#include <unistd.h>
static struct termios old, new;
char getche(void);
void Yazdir(void);
void MuhtemelMahal(int , int);
// Değişkenler
int duzlem[8][8];
int main(){
int i, j, k, sira;
int x,y;
int durum=0;
for(i=0;i<8;i++)
for(j=0;j<8;j++) duzlem[i][j]=10;
duzlem[0][0]=2; duzlem[0][7]=2; duzlem[7][0]=12; duzlem[7][7]=12;
duzlem[0][1]=3; duzlem[0][6]=3; duzlem[7][1]=13; duzlem[7][6]=13;
duzlem[0][2]=4; duzlem[0][5]=4; duzlem[7][2]=14; duzlem[7][5]=14;
duzlem[0][3]=5; duzlem[7][3]=15;
duzlem[0][4]=6; duzlem[7][4]=16;
for(i=0;i<8;i++) duzlem[1][i]=1;
for(i=0;i<8;i++) duzlem[6][i]=11;
Yazdir();
sira=1; //1 ise beyaz; 2 ise siyah
while(durum==0)
{
k=0;
while(k==0)
{
if(sira==1)
puts("[#] Beyaz \n");
else
puts("[#] Siyah \n");
printf("[#] Taşınızı Seçin");
i=8;
while(i<0 || i>7)
{
printf("\n[<] Satır (0-7): ");
i = getche(); // Eskisi: scanf("%d",&i);
i -= '0'; // ASCII'den sayıya dönüştürmek için.
}
j=8;
while(j<0 || j>7)
{
printf("\n[<] Sütun (0-7): ");
j = getche(); // Eskisi: scanf("%d",&j);
j -= '0';
}
if(sira==1)
{
if(duzlem[i][j]<=10)
{
printf("[!] Geçersiz Taş \n");
i=0;
}
else
{
k=1;
sira=2;
}
}
else
{
if(duzlem[i][j]>=10)
{
printf("[!] Geçersiz Taş \n");
i=0;
}
else
{
k=1;
sira=1;
}
}
}//while k
MuhtemelMahal(i,j);
Yazdir();
printf("[#] Hamlenizi Yapın \n");
x=8;
while(x<0 || x>7){
printf("[<] Satır (0-7): ");
x = getche();
x -= '0'; // ASCII'den sayıya dönüştürmek için.
}
y=8;
while(y<0 || y>7)
{
printf("\n[<] Sütun (0-7): ");
y = getche();
y -= '0';
}
if(sira==1)//siyahlarinmis; beyazlara hareket et
{
if(duzlem[x][y]<0)
{
duzlem[x][y]=duzlem[i][j];
duzlem[i][j]=10;
}
else
{
printf("[!] Geçersiz Hamle \n");
sira=2;
}
}
else//beyazlarinmis; siyahlara hareket et
{
if(duzlem[x][y]<0)
{
duzlem[x][y]=duzlem[i][j];
duzlem[i][j]=10;
}
else
{
printf("[!] Geçersiz Hamle \n");
sira=1;
}
}
for(i=0;i<8;i++)
for(j=0;j<8;j++)
{
if(duzlem[i][j]<0) duzlem[i][j]=0-duzlem[i][j];
}
Yazdir();
}//while durum
return 0;
}
void Yazdir()
{ int i, j;
system("clear");
printf(" ");
for(i=0;i<8;i++)
{
printf("%c[%d;%dm %d %c[%dm",27,4,35,i,27,0);
}
printf("\n");
for(i=0;i<8;i++)
{
printf("%c[%d;%dm %d %c[%dm",27,3,35,i,27,0);
for(j=0;j<8;j++)
{
//printf(" [%d | %d] ",i,j);
switch(duzlem[i][j])
{
//SIYAHLAR - YUKARI
case 1:
{
printf("%c[%d;%d;%dm p %c[%dm",27, 1, 31, 40,27,0);
break;
}
case 2:
{
printf("%c[%d;%d;%dm k %c[%dm",27, 1, 31, 40,27,0);
break;
}
case 3:
{
printf("%c[%d;%d;%dm a %c[%dm",27, 1, 31, 40,27,0);
break;
}
case 4:
{
printf("%c[%d;%d;%dm f %c[%dm",27, 1, 31, 40,27,0);
break;
}
case 5:
{
printf("%c[%d;%d;%dm V %c[%dm",27, 1, 31, 40,27,0);
break;
}
case 6:
{
printf("%c[%d;%d;%dm S %c[%dm",27, 1, 31, 40,27,0);
break;
}
//NOKTALAR
case 10:
{
printf("%c[%d;%d;%dm . %c[%dm",27, 1, 29, 48,27,0);
break;
}
// BEYAZLAR - ASAGI
case 11:
{
printf("%c[%d;%d;%dm p %c[%dm",27, 1, 31, 47,27,0);
break;
}
case 12:
{
printf("%c[%d;%d;%dm k %c[%dm",27, 1, 31, 47,27,0);
break;
}
case 13:
{
printf("%c[%d;%d;%dm a %c[%dm",27, 1, 31, 47,27,0);
break;
}
case 14:
{
printf("%c[%d;%d;%dm f %c[%dm",27, 1, 31, 47,27,0);
break;
}
case 15:
{
printf("%c[%d;%d;%dm V %c[%dm",27, 1, 31, 47,27,0);
break;
}
case 16:
{
printf("%c[%d;%d;%dm S %c[%dm",27, 1, 31, 47,27,0);
break;
}
//MUHTEMEL SIYAHLAR - YUKARI
case -1:
{
printf("%c[%d;%d;%dm p %c[%dm",27, 1, 31, 42,27,0);
break;
}
case -2:
{
printf("%c[%d;%d;%dm k %c[%dm",27, 1, 31, 42,27,0);
break;
}
case -3:
{
printf("%c[%d;%d;%dm a %c[%dm",27, 1, 31, 42,27,0);
break;
}
case -4:
{
printf("%c[%d;%d;%dm f %c[%dm",27, 1, 31, 42,27,0);
break;
}
case -5:
{
printf("%c[%d;%d;%dm V %c[%dm",27, 1, 31, 42,27,0);
break;
}
case -6:
{
printf("%c[%d;%d;%dm S %c[%dm",27, 1, 31, 42,27,0);
break;
}
//MUHTEMEL NOKTALAR
case -10:
{
printf("%c[%d;%d;%dm . %c[%dm",27, 1, 29, 42,27,0);
break;
}
// MUHTEMEL BEYAZLAR - ASAGI
case -11:
{
printf("%c[%d;%d;%dm p %c[%dm",27, 1, 31, 42,27,0);
break;
}
case -12:
{
printf("%c[%d;%d;%dm k %c[%dm",27, 1, 31, 42,27,0);
break;
}
case -13:
{
printf("%c[%d;%d;%dm a %c[%dm",27, 1, 31, 42,27,0);
break;
}
case -14:
{
printf("%c[%d;%d;%dm f %c[%dm",27, 1, 31, 42,27,0);
break;
}
case -15:
{
printf("%c[%d;%d;%dm V %c[%dm",27, 1, 31, 42,27,0);
break;
}
case -16:
{
printf("%c[%d;%d;%dm S %c[%dm",27, 1, 31, 42,27,0);
break;
}
}//switch
}//for-ic
printf("\n\n");
}//for-dis
}
void MuhtemelMahal(int konum_x,int konum_y)
{
int i, j;
switch(duzlem[konum_x][konum_y])
{
case 1: //piyon
{
if(konum_x<8)
duzlem[konum_x+1][konum_y]=0-duzlem[konum_x+1][konum_y];
if(konum_x==1)
duzlem[konum_x+2][konum_y]=0-duzlem[konum_x+2][konum_y];
if(duzlem[konum_x+1][konum_y+1]>10)
duzlem[konum_x+1][konum_y+1]=0-duzlem[konum_x+1][konum_y+1];
if(duzlem[konum_x+1][konum_y-1]>10)
duzlem[konum_x+1][konum_y-1]=0-duzlem[konum_x+1][konum_y-1];
break;
}
case 2: //kale
{
i=konum_x+1;
while( (duzlem[i][konum_y]==10) && (i<8) )
{
duzlem[i][konum_y]=0-duzlem[i][konum_y];
i++;
}
if(i<8)
if(duzlem[i][konum_y]>10)
duzlem[i][konum_y]=0-duzlem[i][konum_y];
i=konum_x-1;
while( (duzlem[i][konum_y]==10) && (i>=0) )
{
duzlem[i][konum_y]=0-duzlem[i][konum_y];
i--;
}
if(i>=0)
if(duzlem[i][konum_y]>10)
duzlem[i][konum_y]=0-duzlem[i][konum_y];
i=konum_y+1;
while( (duzlem[konum_x][i]==10) && (i<8) )
{
duzlem[konum_x][i]=0-duzlem[konum_x][i];
i++;
}
if(i<8)
if(duzlem[konum_x][i]>10)
duzlem[konum_x][i]=0-duzlem[konum_x][i];
i=konum_y-1;
while( (duzlem[konum_x][i]==10) && (i>=0) )
{
duzlem[konum_x][i]=0-duzlem[konum_x][i];
i--;
}
if(i>=0)
if(duzlem[konum_x][i]>10)
duzlem[konum_x][i]=0-duzlem[konum_x][i];
break;
}
case 3: //at
{
if( ( konum_x-1>=0 && konum_x-1<8 ) && ( konum_y+2>=0 && konum_y+2<8 ) )
if( duzlem[konum_x-1][konum_y+2]>=10 )
duzlem[konum_x-1][konum_y+2]=0-duzlem[konum_x-1][konum_y+2];//0
if( ( konum_x-2>=0 && konum_x-2<8 ) && ( konum_y+1>=0 && konum_y+1<8 ) )
if( duzlem[konum_x-2][konum_y+1]>=10 )
duzlem[konum_x-2][konum_y+1]=0-duzlem[konum_x-2][konum_y+1];//1
if( ( konum_x-2>=0 && konum_x-2<8 ) && ( konum_y-1>=0 && konum_y-1<8 ) )
if( duzlem[konum_x-2][konum_y-1]>=10 )
duzlem[konum_x-2][konum_y-1]=0-duzlem[konum_x-2][konum_y-1];//2
if( ( konum_x-1>=0 && konum_x-1<8 ) && ( konum_y-2>=0 && konum_y-2<8 ) )
if( duzlem[konum_x-1][konum_y-2]>=10 )
duzlem[konum_x-1][konum_y-2]=0-duzlem[konum_x-1][konum_y-2];//3
if( ( konum_x+1>=0 && konum_x+1<8 ) && ( konum_y-2>=0 && konum_y-2<8 ) )
if( duzlem[konum_x+1][konum_y-2]>=10 )
duzlem[konum_x+1][konum_y-2]=0-duzlem[konum_x+1][konum_y-2];//4
if( ( konum_x+2>=0 && konum_x+2<8 ) && ( konum_y-1>=0 && konum_y-1<8 ) )
if( duzlem[konum_x+2][konum_y-1]>=10 )
duzlem[konum_x+2][konum_y-1]=0-duzlem[konum_x+2][konum_y-1];//5
if( ( konum_x+2>=0 && konum_x+2<8 ) && ( konum_y+1>=0 && konum_y+1<8 ) )
if( duzlem[konum_x+2][konum_y+1]>=10 )
duzlem[konum_x+2][konum_y+1]=0-duzlem[konum_x+2][konum_y+1];//6
if( ( konum_x+1>=0 && konum_x+1<8 ) && ( konum_y+2>=0 && konum_y+2<8 ) )
if( duzlem[konum_x+1][konum_y+2]>=10 )
duzlem[konum_x+1][konum_y+2]=0-duzlem[konum_x+1][konum_y+2];//7
break;
}
case 4://fil
{
i=konum_x+1; j=konum_y+1;
while( (duzlem[i][j]==10) && ( i<8 && j<8 ) )
{
duzlem[i][j]=0-duzlem[i][j];
i++;j++;
}
if( i<8 && j<8 )
if(duzlem[i][j]>10)
duzlem[i][j]=0-duzlem[i][j];
i=konum_x-1; j=konum_y+1;
while( (duzlem[i][j]==10) && ( i>=0 && j<8 ) )
{
duzlem[i][j]=0-duzlem[i][j];
i--;j++;
}
if( i>=0 && j<8 )
if(duzlem[i][j]>10)
duzlem[i][j]=0-duzlem[i][j];
i=konum_x-1; j=konum_y-1;
while( (duzlem[i][j]==10) && ( i>=0 && j>=0 ) )
{
duzlem[i][j]=0-duzlem[i][j];
i--;j--;
}
if( i>=0 && j>=0 )
if(duzlem[i][j]>10)
duzlem[i][j]=0-duzlem[i][j];
i=konum_x+1; j=konum_y-1;
while( ( duzlem[i][j]==10 ) && ( i<8 && j>=0 ) )
{
duzlem[i][j]=0-duzlem[i][j];
i++;j--;
};
if( i<8 && j>=0 )
if(duzlem[i][j]>10)
duzlem[i][j]=0-duzlem[i][j];
break;
}
case 5://vezir
{
i=konum_x+1;
while( (duzlem[i][konum_y]==10) && (i<8) )
{
duzlem[i][konum_y]=0-duzlem[i][konum_y];
i++;
}
if(i<8)
if(duzlem[i][konum_y]>10)
duzlem[i][konum_y]=0-duzlem[i][konum_y];
i=konum_x-1;
while( (duzlem[i][konum_y]==10) && (i>=0) )
{
duzlem[i][konum_y]=0-duzlem[i][konum_y];
i--;
}
if(i>=0)
if(duzlem[i][konum_y]>10)
duzlem[i][konum_y]=0-duzlem[i][konum_y];
i=konum_y+1;
while( (duzlem[konum_x][i]==10) && (i<8) )
{
duzlem[konum_x][i]=0-duzlem[konum_x][i];
i++;
}
if(i<8)
if(duzlem[konum_x][i]>10)
duzlem[konum_x][i]=0-duzlem[konum_x][i];
i=konum_y-1;
while( (duzlem[konum_x][i]==10) && (i>=0) )
{
duzlem[konum_x][i]=0-duzlem[konum_x][i];
i--;
}
if(i>=0)
if(duzlem[konum_x][i]>10)
duzlem[konum_x][i]=0-duzlem[konum_x][i];
i=konum_x+1; j=konum_y+1;
while( (duzlem[i][j]==10) && ( i<8 && j<8 ) )
{
duzlem[i][j]=0-duzlem[i][j];
i++;j++;
}
if( i<8 && j<8 )
if(duzlem[i][j]>10)
duzlem[i][j]=0-duzlem[i][j];
i=konum_x-1; j=konum_y+1;
while( (duzlem[i][j]==10) && ( i>=0 && j<8 ) )
{
duzlem[i][j]=0-duzlem[i][j];
i--;j++;
}
if( i>=0 && j<8 )
if(duzlem[i][j]>10)
duzlem[i][j]=0-duzlem[i][j];
i=konum_x-1; j=konum_y-1;
while( (duzlem[i][j]==10) && ( i>=0 && j>=0 ) )
{
duzlem[i][j]=0-duzlem[i][j];
i--;j--;
}
if( i>=0 && j>=0 )
if(duzlem[i][j]>10)
duzlem[i][j]=0-duzlem[i][j];
i=konum_x+1; j=konum_y-1;
while( ( duzlem[i][j]==10 ) && ( i<8 && j>=0 ) )
{
duzlem[i][j]=0-duzlem[i][j];
i++;j--;
};
if( i<8 && j>=0 )
if(duzlem[i][j]>10)
duzlem[i][j]=0-duzlem[i][j];
break;
}
case 6://sah
{
if( duzlem[konum_x-1][konum_y-1]>=10 )
duzlem[konum_x-1][konum_y-1]=0-duzlem[konum_x-1][konum_y-1];
if( duzlem[konum_x-1][konum_y]>=10 )
duzlem[konum_x-1][konum_y]=0-duzlem[konum_x-1][konum_y];
if( duzlem[konum_x-1][konum_y+1]>=10 )
duzlem[konum_x-1][konum_y+1]=0-duzlem[konum_x-1][konum_y+1];
if( duzlem[konum_x][konum_y-1]>=10 )
duzlem[konum_x][konum_y-1]=0-duzlem[konum_x][konum_y-1];
if( duzlem[konum_x][konum_y+1]>=10 )
duzlem[konum_x][konum_y+1]=0-duzlem[konum_x][konum_y+1];
if( duzlem[konum_x+1][konum_y-1]>=10 )
duzlem[konum_x+1][konum_y-1]=0-duzlem[konum_x+1][konum_y-1];
if( duzlem[konum_x+1][konum_y]>=10 )
duzlem[konum_x+1][konum_y]=0-duzlem[konum_x+1][konum_y];
if( duzlem[konum_x+1][konum_y+1]>=10 )
duzlem[konum_x+1][konum_y+1]=0-duzlem[konum_x+1][konum_y+1];
break;
}
case 11: //piyon
{
if(konum_x>=0)
duzlem[konum_x-1][konum_y]=0-duzlem[konum_x-1][konum_y];
if(konum_x==6)
duzlem[konum_x-2][konum_y]=0-duzlem[konum_x-2][konum_y];
if(duzlem[konum_x-1][konum_y+1]<10)
duzlem[konum_x-1][konum_y+1]=0-duzlem[konum_x-1][konum_y+1];
if(duzlem[konum_x-1][konum_y-1]<10)
duzlem[konum_x-1][konum_y-1]=0-duzlem[konum_x-1][konum_y-1];
break;
}
case 12: //kale
{
i=konum_x+1;
while( (duzlem[i][konum_y]==10) && (i<8) )
{
duzlem[i][konum_y]=0-duzlem[i][konum_y];
i++;
}
if(i<8)
if(duzlem[i][konum_y]<10)
duzlem[i][konum_y]=0-duzlem[i][konum_y];
i=konum_x-1;
while( (duzlem[i][konum_y]==10) && (i>=0) )
{
duzlem[i][konum_y]=0-duzlem[i][konum_y];
i--;
}
if(i>=0)
if(duzlem[i][konum_y]<10)
duzlem[i][konum_y]=0-duzlem[i][konum_y];
i=konum_y+1;
while( (duzlem[konum_x][i]==10) && (i<8) )
{
duzlem[konum_x][i]=0-duzlem[konum_x][i];
i++;
}
if(i<8)
if(duzlem[konum_x][i]<10)
duzlem[konum_x][i]=0-duzlem[konum_x][i];
i=konum_y-1;
while( (duzlem[konum_x][i]==10) && (i>=0) )
{
duzlem[konum_x][i]=0-duzlem[konum_x][i];
i--;
}
if(i>=0)
if(duzlem[konum_x][i]<10)
duzlem[konum_x][i]=0-duzlem[konum_x][i];
break;
}
case 13: //at
{
if( ( konum_x-1>=0 && konum_x-1<8 ) && ( konum_y+2>=0 && konum_y+2<8 ) )
if( duzlem[konum_x-1][konum_y+2]<=10 )
{ //printf("bir\n");
duzlem[konum_x-1][konum_y+2]=0-duzlem[konum_x-1][konum_y+2];
}//0
if( ( konum_x-2>=0 && konum_x-2<8 ) && ( konum_y+1>=0 && konum_y+1<8 ) )
if( duzlem[konum_x-2][konum_y+1]<=10 )
{ //printf("iki\n");
duzlem[konum_x-2][konum_y+1]=0-duzlem[konum_x-2][konum_y+1];
}//1
if( ( konum_x-2>=0 && konum_x-2<8 ) && ( konum_y-1>=0 && konum_y-1<8 ) )
if( duzlem[konum_x-2][konum_y-1]<=10 )
{ //printf("uc\n");
duzlem[konum_x-2][konum_y-1]=0-duzlem[konum_x-2][konum_y-1];
}//2
if( ( konum_x-1>=0 && konum_x-1<8 ) && ( konum_y-2>=0 && konum_y-2<8 ) )
if( duzlem[konum_x-1][konum_y-2]<=10 )
{ //printf("dort\n");
duzlem[konum_x-1][konum_y-2]=0-duzlem[konum_x-1][konum_y-2];
}//3
if( ( konum_x+1>=0 && konum_x+1<8 ) && ( konum_y-2>=0 && konum_y-2<8 ) )
if( duzlem[konum_x+1][konum_y-2]<=10 )
{ //printf("bes\n");
duzlem[konum_x+1][konum_y-2]=0-duzlem[konum_x+1][konum_y-2];
}//4
if( ( konum_x+2>=0 && konum_x+2<8 ) && ( konum_y-1>=0 && konum_y-1<8 ) )
if( duzlem[konum_x+2][konum_y-1]<=10 )
{ //printf("alti\n");
duzlem[konum_x+2][konum_y-1]=0-duzlem[konum_x+2][konum_y-1];
}//5
if( ( konum_x+2>=0 && konum_x+2<8 ) && ( konum_y+1>=0 && konum_y+1<8 ) )
if( duzlem[konum_x+2][konum_y+1]<=10 )
{ //printf("yedi\n");
duzlem[konum_x+2][konum_y+1]=0-duzlem[konum_x+2][konum_y+1];
}//6
if( ( konum_x+1>=0 && konum_x+1<8 ) && ( konum_y+2>=0 && konum_y+2<8 ) )
if( duzlem[konum_x+1][konum_y+2]<=10 )
{ //printf("sekiz\n");
duzlem[konum_x+1][konum_y+2]=0-duzlem[konum_x+1][konum_y+2];
}//7
break;
}
case 14://fil
{
i=konum_x+1; j=konum_y+1;
while( (duzlem[i][j]==10) && ( i<8 && j<8 ) )
{
duzlem[i][j]=0-duzlem[i][j];
i++;j++;
}
if( i<8 && j<8 )
if(duzlem[i][j]<10)
duzlem[i][j]=0-duzlem[i][j];
i=konum_x-1; j=konum_y+1;
while( (duzlem[i][j]==10) && ( i>=0 && j<8 ) )
{
duzlem[i][j]=0-duzlem[i][j];
i--;j++;
}
if( i>=0 && j<8 )
if(duzlem[i][j]<10)
duzlem[i][j]=0-duzlem[i][j];
i=konum_x-1; j=konum_y-1;
while( (duzlem[i][j]==10) && ( i>=0 && j>=0 ) )
{
duzlem[i][j]=0-duzlem[i][j];
i--;j--;
}
if( i>=0 && j>=0 )
if(duzlem[i][j]<10)
duzlem[i][j]=0-duzlem[i][j];
i=konum_x+1; j=konum_y-1;
while( ( duzlem[i][j]==10 ) && ( i<8 && j>=0 ) )
{
duzlem[i][j]=0-duzlem[i][j];
i++;j--;
};
if( i<8 && j>=0 )
if(duzlem[i][j]<10)
duzlem[i][j]=0-duzlem[i][j];
break;
}
case 15:
{
i=konum_x+1;
while( (duzlem[i][konum_y]==10) && (i<8) )
{
duzlem[i][konum_y]=0-duzlem[i][konum_y];
i++;
}
if(i<8)
if(duzlem[i][konum_y]<10)
duzlem[i][konum_y]=0-duzlem[i][konum_y];
i=konum_x-1;
while( (duzlem[i][konum_y]==10) && (i>=0) )
{
duzlem[i][konum_y]=0-duzlem[i][konum_y];
i--;
}
if(i>=0)
if(duzlem[i][konum_y]<10)
duzlem[i][konum_y]=0-duzlem[i][konum_y];
i=konum_y+1;
while( (duzlem[konum_x][i]==10) && (i<8) )
{
duzlem[konum_x][i]=0-duzlem[konum_x][i];
i++;
}
if(i<8)
if(duzlem[konum_x][i]<10)
duzlem[konum_x][i]=0-duzlem[konum_x][i];
i=konum_y-1;
while( (duzlem[konum_x][i]==10) && (i>=0) )
{
duzlem[konum_x][i]=0-duzlem[konum_x][i];
i--;
}
if(i>=0)
if(duzlem[konum_x][i]<10)
duzlem[konum_x][i]=0-duzlem[konum_x][i];
i=konum_x+1; j=konum_y+1;
while( (duzlem[i][j]==10) && ( i<8 && j<8 ) )
{
duzlem[i][j]=0-duzlem[i][j];
i++;j++;
}
if( i<8 && j<8 )
if(duzlem[i][j]<10)
duzlem[i][j]=0-duzlem[i][j];
i=konum_x-1; j=konum_y+1;
while( (duzlem[i][j]==10) && ( i>=0 && j<8 ) )
{
duzlem[i][j]=0-duzlem[i][j];
i--;j++;
}
if( i>=0 && j<8 )
if(duzlem[i][j]<10)
duzlem[i][j]=0-duzlem[i][j];
i=konum_x-1; j=konum_y-1;
while( (duzlem[i][j]==10) && ( i>=0 && j>=0 ) )
{
duzlem[i][j]=0-duzlem[i][j];
i--;j--;
}
if( i>=0 && j>=0 )
if(duzlem[i][j]<10)
duzlem[i][j]=0-duzlem[i][j];
i=konum_x+1; j=konum_y-1;
while( ( duzlem[i][j]==10 ) && ( i<8 && j>=0 ) )
{
duzlem[i][j]=0-duzlem[i][j];
i++;j--;
};
if( i<8 && j>=0 )
if(duzlem[i][j]<10)
duzlem[i][j]=0-duzlem[i][j];
break;
}
case 16://sah
{
if( duzlem[konum_x-1][konum_y-1]<=10 )
duzlem[konum_x-1][konum_y-1]=0-duzlem[konum_x-1][konum_y-1];
if( duzlem[konum_x-1][konum_y]<=10 )
duzlem[konum_x-1][konum_y]=0-duzlem[konum_x-1][konum_y];
if( duzlem[konum_x-1][konum_y+1]<=10 )
duzlem[konum_x-1][konum_y+1]=0-duzlem[konum_x-1][konum_y+1];
if( duzlem[konum_x][konum_y-1]<=10 )
duzlem[konum_x][konum_y-1]=0-duzlem[konum_x][konum_y-1];
if( duzlem[konum_x][konum_y+1]<=10 )
duzlem[konum_x][konum_y+1]=0-duzlem[konum_x][konum_y+1];
if( duzlem[konum_x+1][konum_y-1]<=10 )
duzlem[konum_x+1][konum_y-1]=0-duzlem[konum_x+1][konum_y-1];
if( duzlem[konum_x+1][konum_y]<=10 )
duzlem[konum_x+1][konum_y]=0-duzlem[konum_x+1][konum_y];
if( duzlem[konum_x+1][konum_y+1]<=10 )
duzlem[konum_x+1][konum_y+1]=0-duzlem[konum_x+1][konum_y+1];
break;
}
}
}
/* Getch fonksiyonu için gerekli fonksiyonlar. "ncurses.h" kullanılacaksa aşağıdaki fonksiyonları siliniz!
* http://stackoverflow.com/questions/7469139/what-is-equivalent-to-getch-getche-in-linux
*/
// Initialize new terminal i/o settings
void initTermios(int echo)
{
tcgetattr(0, &old); /* grab old terminal i/o settings */
new = old; /* make new settings same as old settings */
new.c_lflag &= ~ICANON; /* disable buffered i/o */
new.c_lflag &= echo ? ECHO : ~ECHO; /* set echo mode */
tcsetattr(0, TCSANOW, &new); /* use these new terminal i/o settings now */
}
/* Restore old terminal i/o settings */
void resetTermios(void)
{
tcsetattr(0, TCSANOW, &old);
}
/* Read 1 character - echo defines echo mode */
char getch_(int echo)
{
char ch;
initTermios(echo);
ch = getchar();
resetTermios();
return ch;
}
/* Read 1 character without echo */
char getch(void)
{
return getch_(0);
}
/* Read 1 character with echo */
char getche(void)
{
return getch_(1);
}
Kodunuzun başlangıç kısmndan sonraki 20 - 25 satırını okudum ancak bir şey dikkatimi çekti. Neden public static çok boyutlu bir diziye ilk değer vermek için ekstradan kod yazdınız? En başta değişken tanımında comma separated list ile başarılı bir "initialise" ile bunu derleyiciye yaptırmak ve olası kod böceklerinden kurtulmak varken neden main() bloğu içinde tek tek sıralı değerler verdiğinizi anlayamadım. Özel bir nedeni var mı?
@plymouth , özel bir nedeni yok doğrusu ben bu kodları c öğrenmeye ilk karar verdiğimde pratik yapmak için yazmıştım (tarih bir sene önceyi gösteriyor).
dediğim gibi geliştirilebilir , ve bir sürü açığı saçığı olabilir :)
ayrıca incelemeniz ve yorumunuz için teşekkürler :)
Elinize sağlık. Hala bu oyunu geliştiriyor musunuz?