#include #include #include #include #include void puzzle(void); void main(void) { int s,d,tahdid[8][8],i,j,k,x0,y0,x,y,move_num, horizontal[8]={2,1,-1,-2,-2,-1,1,2}, vertical[8]={-1,-2,-2,-1,1,2,2,1}; int gdriver = DETECT, gmode;char h[1]; initgraph(&gdriver, &gmode, ""); int of,am,klik=0,stutus=0; while(stutus==0) { for (i=0;i<8;i++) for (j=0;j<8;j++) tahdid[i][j]=0; for (i=0;i<8;i++) for (j=0;j<8;j++) for(k=0;k<8;k++) if ((i+vertical[k]>=0)&&(i+vertical[k]<=7)&& (j+horizontal[k]>=0) &&(j+horizontal[k]<=7)) tahdid[i][j]++; puzzle(); setcolor(2); outtextxy(165,7,"please left Click on table To Start"); while(1) { asm{mov ax,01;int 33h;mov ax,03;int 33h;mov of,cx;mov am,dx;mov klik,bx}; if(klik==1&&8019&&am<20+8*55) { y0=(of-81)/55;y=(of-81)/55;x0=(am-20)/55;x=(am-20)/55; asm{mov ax,00;int 33h}; break; } } puzzle(); i=0;s=0; while(s!=8) { //sound(i*40); delay(64*4-4*i); sprintf(h,"%d",++i); outtextxy(55*(y+1)+51,55*(x+1)-12,h); nosound(); int min=8;s=0; for(j=0;j<8;j++) if ((x+vertical[j]>=0)&&(x+vertical[j]<=7)&& (y+horizontal[j]>=0) &&(y+horizontal[j]<=7)) if ((tahdid[x+vertical[j]][y+horizontal[j]]<=min)&& (tahdid[x+vertical[j]][y+horizontal[j]]>0)) { min=tahdid[x+vertical[j]][y+horizontal[j]]; move_num=j; } else ++s; else ++s; if (s==8) break; for(k=0; k<8; k++) if ((x+vertical[k]>=0)&&(x+vertical[k]<=7)&& (y+horizontal[k]>=0) &&(y+horizontal[k]<=7)) if(tahdid[x+vertical[k]][y+horizontal[k]]>0) --tahdid[x+vertical[k]][y+horizontal[k]]; tahdid[x][y]=0; x+=vertical[move_num]; y+=horizontal[move_num]; } for(i=0;i<8;i++) for(j=0;j<8;j++) if(x-x0==vertical[i]) if(y-y0==horizontal[j]) s=0; if(s==0) { setcolor(11); outtextxy(107,28+8*55,"***********in this case we have pariod***********"); } outtextxy(88,7,"please (left Click for Restart)or(right click for end)"); while(1) { asm{mov ax,01;int 33h;mov ax,03;int 33h;mov klik,bx}; if(klik==1) break; else if(klik==2) { stutus=1; break; } } } }//end of program void puzzle(void) { setfillstyle(7, 1);bar(0, 0, 640,500); for(int j=0;j<8;++j) for(int k=0;k<8;++k) { if((k+j)%2==0) setfillstyle(1, 0); else setfillstyle(1, 15); bar(55*j+81,55*k+20,55*j+81+55,55*k+55+20); }//end of for_for }//end of function