Advertisement
andreisophie

Knight Tour Grafic

Oct 11th, 2019
186
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.15 KB | None | 0 0
  1. #include <iostream>
  2. #include <graphics.h>
  3. #include <windows.h>
  4.  
  5. ///------------------------------DON'T EDIT CODE ABOVE THIS LINE---------------------------------///
  6.  
  7. ///You must install graphics.h library for this to work
  8.  
  9. #define ScreenWidth 1280    ///Width of your screen
  10. #define ScreenHeight 720    ///Height of your screen
  11. #define n 8                 ///Width of the chess board, must be between 5 and 10
  12. #define m 8                 ///Height of the chess board, must be between 5 and 10
  13. #define xS 1                ///Starting X Coordinate
  14. #define yS 1                ///Starting Y coordinate
  15. #define sleep true          ///true=>Program will work on its own, false=>You need to press a key to make each move
  16. #define timpSleep 25        ///The number of miliseconds program waits after making a move if above option is true
  17.  
  18. ///Made by Maruntis Andrei of idigit.ro
  19. ///------------------------------DON'T EDIT CODE BELOW THIS LINE---------------------------------///
  20.  
  21. using namespace std;
  22.  
  23. int xs,ys;
  24. const int l=50;
  25.  
  26. int deplx[8]={1,2,2,1,-1,-2,-2,-1},deply[8]={2,1,-1,-2,-2,-1,1,2};
  27. int a[15][15],p;
  28.  
  29. void Tabla()
  30. {
  31.     for (int i=0;i<=n;i++)
  32.         line(xs+l/2+i*l,ys+l/2,xs+l/2+i*l,ys+l/2+m*l);
  33.     for (int j=0;j<=m;j++)
  34.         line(xs+l/2,ys+l/2+j*l,xs+l/2+n*l,ys+l/2+j*l);
  35. }
  36.  
  37. void cal(int x, int y, bool desen)
  38. {
  39.     if (desen)
  40.         setcolor(WHITE);
  41.     else
  42.         setcolor(BLACK);
  43.     x=x*l+xs;
  44.     y=y*l+ys;
  45.     putpixel(x+4,y-15,getcolor());
  46.     putpixel(x+1,y-14,getcolor());  line(x+3,y-14,x+4,y-14);
  47.     putpixel(x-1,y-13,getcolor());  line(x+1,y-13,x+5,y-13);
  48.     putpixel(x-3,y-12,getcolor());  line(x-1,y-12,x+8,y-12);
  49.     putpixel(x-5,y-11,getcolor());  line(x-3,y-11,x+8,y-11);
  50.     line(x-6,y-10,x+7,y-10);
  51.     putpixel(x-7,y-9,getcolor());   line(x-5,y-9,x+7,y-9);
  52.     line(x-8,y-8,x-5,y-8);          line(x-3,y-8,x+8,y-8);
  53.     line(x-9,y-7,x-6,y-7);          line(x-4,y-7,x+5,y-7);      line(x+8,y-7,x+9,y-7);
  54.     line(x-9,y-6,x-7,y-6);          line(x-5,y-6,x-2,y-6);      line(x,y-6,x+6,y-6);            line(x+8,y-6,x+9,y-7);
  55.     putpixel(x-10,y-5,getcolor());  line(x-8,y-5,x-7,y-5);      line(x-5,y-5,x-3,y-5);          line(x-1,y-5,x+1,y-5);  line(x+3,y-5,x+9,y-5);
  56.     line(x-10,y-4,x-7,y-4);         line(x-5,y-4,x-3,y-4);      line(x-1,y-4,x+1,y-4);          line(x+4,y-4,x+9,y-4);
  57.     line(x-10,y-3,x-8,y-3);         line(x-6,y-3,x-3,y-3);      line(x-1,y-3,x+1,y-3);          line(x+4,y-3,x+10,y-3);
  58.     putpixel(x-11,y-2,getcolor());  line(x-9,y-2,x-8,y-2);      line(x-6,y-2,x-2,y-2);          line(x,y-2,x+11,y-2);
  59.     line(x-11,y-1,x-8,y-1);         line(x-6,y-1,x-1,y-1);      line(x+1,y-1,x+11,y-1);
  60.     line(x-11,y,x-8,y);             line(x-6,y,x,y);            line(x+6,y,x+7,y);              line(x+10,y,x+12,y);
  61.     line(x-10,y+1,x+4,y+1);         line(x+7,y+1,x+9,y+1);      putpixel(x+11,y+1,getcolor());
  62.     line(x-11,y+2,x-7,y+2);         line(x-6,y+2,x+5,y+2);      line(x+9,y+2,x+10,y+2);
  63.     line(x-11,y+3,x-8,y+3);         line(x-6,y+3,x+7,y+3);
  64.     putpixel(x-11,y+4,getcolor());  line(x-9,y+4,x-7,y+4);      line(x-5,y+4,x-2,y+4);          line(x,y+4,x+8,y+4);
  65.     line(x-10,y+5,x-6,y+5);         line(x-4,y+5,x-1,y+5);      line(x+1,y+5,x+8,y+5);
  66.     putpixel(x-10,y+6,getcolor());  line(x-8,y+6,x-6,y+6);      line(x-4,y+6,x-1,y+6);          line(x+1,y+6,x+9,y+6);
  67.     line(x-9,y+7,x-5,y+7);          line(x-3,y+7,x,y+7);        line(x+2,y+7,x+9,y+7);
  68.     putpixel(x-8,y+8,getcolor());   line(x-6,y+8,x-4,y+8);      line(x-2,y+8,x+1,y+8);          line(x+4,y+8,x+9,y+8);
  69.     line(x-7,y+9,x+3,y+9);          line(x+5,y+9,x+9,y+9);
  70.     line(x-6,y+10,x+8,y+10);
  71.     line(x-6,y+11,x+8,y+11);
  72.     line(x-3,y+12,x+5,y+12);
  73.     line(x-6,y+13,x+8,y+13);
  74.     line(x-7,y+14,x+9,y+14);
  75.     line(x-8,y+15,x+10,y+15);
  76.     line(x-9,y+16,x+11,y+16);
  77. }
  78.  
  79. void text(int x, int y, int nr, bool desen)
  80. {
  81.     if (desen)
  82.         setcolor(WHITE);
  83.     else
  84.         setcolor(BLACK);
  85.     char msj[5];
  86.     if (p>9)
  87.         msj[0]=p/10+48;
  88.     else
  89.         msj[0]=' ';
  90.     msj[1]=p%10+48;
  91.     msj[2]='\0';
  92.     outtextxy(x*l+xs,y*l+ys,msj);
  93. }
  94.  
  95. bool valid(int xn, int yn)
  96. {
  97.     if (xn>0 && yn>0 && xn<=n && yn<=m && a[xn][yn]==0)
  98.         return true;
  99.     return false;
  100. }
  101.  
  102. void bck(int x, int y)
  103. {
  104.     int xn,yn;
  105.     a[x][y]=++p;
  106.     cal(x,y,true);
  107.     if (sleep)
  108.         Sleep(timpSleep);
  109.     else
  110.         getch();
  111.     if (p==n*m)
  112.         getch();
  113.     else
  114.     {
  115.         for (int i=0;i<8;i++)
  116.         {
  117.             xn=x+deplx[i];
  118.             yn=y+deply[i];
  119.             if (valid(xn,yn))
  120.             {
  121.                 cal(x,y,false);
  122.                 text(x,y,p,true);
  123.                 bck(xn,yn);
  124.                 text(x,y,p,false);
  125.                 cal(x,y,true);
  126.                 if (sleep)
  127.                     Sleep(timpSleep);
  128.                 else
  129.                     getch();
  130.             }
  131.         }
  132.     }
  133.     a[x][y]=0;
  134.     cal(x,y,false);
  135.     p--;
  136. }
  137.  
  138. int main()
  139. {
  140.     initwindow(ScreenWidth-100,ScreenHeight-100);
  141.  
  142.     xs=getmaxx()/2-l*(float)(n+1)/2;
  143.     ys=getmaxy()/2-l*(float)(m+1)/2;
  144.  
  145.     Tabla();
  146.  
  147.     bck(xS,yS);
  148.  
  149.     getch();
  150.     cleardevice();
  151.     closegraph();
  152.  
  153.     return 0;
  154. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement