سلام دوستان عزیز
کسی میتونه برنامه هشت وزیرو به صورت ریکرسیو به من بده؟؟؟؟؟؟؟
ممنون میشم ازتون.
سلام دوستان عزیز
کسی میتونه برنامه هشت وزیرو به صورت ریکرسیو به من بده؟؟؟؟؟؟؟
ممنون میشم ازتون.
#include <stdio.h>
#include <conio.h>
/*-----------------*/
int aray[8][8]={0},rp=1,j_o[8]={0},Vazir_no,j,Ok,Ok2=1,R1=0,Ans=1,X=0;
void DrawChes(void);
void Tiker(void);
void DrawData(void);
void GoBack(void);
/*-----------------*/
void main(void){
int k,l;
textbackground(1);
clrscr();
Vazir_no=0;
j=-1;
while(Ok2==1){
Ok=1;
for( ;j<8&&Ok==1;j++){
if(aray[Vazir_no][j]==0){
Tiker();
Ok=0;
j_o[Vazir_no]=j+1;
Vazir_no++;
if(Vazir_no==8){
DrawChes();
DrawData();
getch();
if(rp>25){
rp=1;
X++;
}
gotoxy(X*12+19,rp++);
textbackground(3); textcolor(0);
cprintf("%2d:",Ans++);
textbackground(3); textcolor(1);
for(k=0;k<8;k++)
for(l=0;l<8;l++)
if(aray[k][l]>49)cprintf("%1d",l+1);
}
j=-1;
}
else if (j>7){
for(k=0;k<8;k++)
for(l=0;l<8;l++)
if( aray[k][l]==Vazir_no || aray[k][l]==(50+Vazir_no-1) )
aray[k][l]=0;
GoBack();
}
}
if (j>7){
if(j_o[Vazir_no-1]>7){
for(k=0;k<8;k++)
for(l=0;l<8;l++)
if(aray[k][l]==Vazir_no||aray[k][l]==50+Vazir_no-1)
aray[k][l]=0;
}
GoBack();
}
}
}
/*----------------------*/
void GoBack(void){
int register k,l;
if(j>=7/*&&j<9*/&&Vazir_no>0){
for(k=0;k<8;k++)
for(l=0;l<8;l++)
if( aray[k][l]==Vazir_no || aray[k][l]==(50+Vazir_no-1) )
aray[k][l]=0;
j=j_o[Vazir_no-1];
Vazir_no--;
Ok=1;
}
else{
Ok2=0;
}
}
/*----------------------*/
void Tiker(void){
int k;
aray[Vazir_no][j]=50+Vazir_no;
for(k=0;k<8;k++) if(aray[Vazir_no][k]==0)aray[Vazir_no][k]=Vazir_no+1;
for(k=0;k<9;k++) if(aray[k][j]==0)aray[k][j]=Vazir_no+1;
for(k=0;k<8;k++)
if( (Vazir_no+k)<8 && (j+k)<8 && aray[Vazir_no+k][j+k]==0 )
aray[Vazir_no+k][j+k]=Vazir_no+1;
for(k=-8;k<8;k++)
if( (Vazir_no+k)<8 && (j-k)>-1 && aray[Vazir_no+k][j-k]==0 )
aray[Vazir_no+k][j-k]=Vazir_no+1;
}
/*----------------------*/
void DrawChes(void){
int k,l,m;
for(k=0;k<8;k++){
textbackground(4);
textcolor(14);
gotoxy(2*k+2,1);
cprintf("%c ",'A'+k);
gotoxy(1,k+2);
cprintf("%1d",k+1);
textbackground(9);
for(l=1;l<9;l++){
for(m=1;m<9;m++)
if((l%2&&m%2)|| !(l%2||m%2)){
gotoxy(2*l,m+1);
textbackground(7);
textcolor(7);
if(aray[l-1][m-1]!=0){
textbackground(7);
textcolor(1);
if(aray[l-1][m-1]>20) cprintf("* ");
else cprintf("°°");
}
else{
cprintf("²²");
}
}
else{
gotoxy(2*l,m+1);
textbackground(5);
if(aray[l-1][m-1]!=0){
textbackground(5);
textcolor(15);
if(aray[l-1][m-1]>20) cprintf("* ");
else cprintf("°°");
}
else{
textbackground(5);
textcolor(5);
gotoxy(2*l,m+1);
cprintf("²²");
}
}
}
}
}
/*----------------------*/
void DrawData(void){
int register k,l;
if(rp>=20){
textbackground(1);
clrscr();
rp=1;
}
gotoxy(1,25);
for(l=0;l<8;l++) cprintf("%2d.",j_o[l]);
gotoxy(19,rp++);
textbackground( 0 );
textcolor( 15 );
cprintf("Vazir_no=%d,j=%d,j[i]=%d,j[i-1]=%d",Vazir_no,j,j_o[Vazir_no],j_o[Vazir_no-1]);
for(k=0;k<8;k++){
gotoxy(50,k+1);
for(l=0;l<8;l++){
textbackground(0);
textcolor( aray[l][k] );
if(aray[l][k]>=50){
textbackground(7);
textcolor( aray[l][k]-49 );
}
cprintf("%2d.",aray[l][k]);
}
}
}
_________________
مرسی از لطفت دوست عزیز
ولی من این برنامه رو به صورت ریکرسیو میخوام(تابعی که خودشو تو خودش صدا بزنه)