Advertisement
Momir

ČAH v0.3.0

May 27th, 2019
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 94.14 KB | None | 0 0
  1. #define _WIN32_WINNT 0x0600
  2. #define STRICT
  3. #include <vector>
  4. #include <dos.h>
  5. #include <dir.h>
  6. #include <iostream>
  7. #include <stdio.h>
  8. #include <stdlib.h>
  9. #include <conio.h>
  10. #include <io.h>
  11. #include <shlwapi.h>
  12. #include <fcntl.h>
  13. #include <unistd.h>
  14. #include <windows.h>
  15. #include <cwchar>
  16. #include <winreg.h>
  17. #include <Wincon.h>
  18. #define _O_U16TEXT  0x20000
  19. #define _O_U8TEXT   0x40000
  20. #define SVETLO 0
  21. #define TAMNO 1
  22. #define SIVO 2
  23. #define BELO 0
  24. #define CRNO 1
  25. #define ISKLJUCENO 0
  26. #define UKLJUCENO 1
  27. #define ZELENO 2
  28. #define NEUTRALNO 0
  29. #define IZABRANO 1
  30. #define NAPADNUTO 2
  31. #define TOP L"♜"
  32. #define KONJ L"♞"
  33. #define LOVAC L"♝"
  34. #define KRALJICA L"♛"
  35. #define KRALJ L"♚"
  36. #define PIJUN L"♟"
  37. #define PRAZNO L"  "
  38. #define TACKA L""  // ● ꞏ ⚫
  39. using namespace std;
  40. int a, b;
  41. typedef struct _CONSOLE_SCREEN_BUFFER_INFOEX
  42. {
  43.     ULONG      cbSize;
  44.     COORD      dwSize;
  45.     COORD      dwCursorPosition;
  46.     WORD       wAttributes;
  47.     SMALL_RECT srWindow;
  48.     COORD      dwMaximumWindowSize;
  49.     WORD       wPopupAttributes;
  50.     BOOL       bFullscreenSupported;
  51.     COLORREF   ColorTable[16];
  52. } CONSOLE_SCREEN_BUFFER_INFOEX, *PCONSOLE_SCREEN_BUFFER_INFOEX;
  53.  
  54. typedef struct _CONSOLE_FONT_INFOEX
  55. {
  56.     ULONG cbSize;
  57.     DWORD nFont;
  58.     COORD dwFontSize;
  59.     UINT  FontFamily;
  60.     UINT  FontWeight;
  61.     WCHAR FaceName[LF_FACESIZE];
  62. } CONSOLE_FONT_INFOEX, *PCONSOLE_FONT_INFOEX;
  63.  
  64. #ifdef __cplusplus
  65. extern "C" {
  66. #endif
  67. BOOL WINAPI SetCurrentConsoleFontEx(HANDLE hConsoleOutput, BOOL bMaximumWindow, PCONSOLE_FONT_INFOEX lpConsoleCurrentFontEx);
  68. #ifdef __cplusplus
  69. }
  70. #endif
  71.  
  72. #ifdef __cplusplus
  73. extern "C" {
  74. #endif
  75. BOOL WINAPI GetConsoleScreenBufferInfoEx(HANDLE hConsoleOutput, PCONSOLE_SCREEN_BUFFER_INFOEX lpConsoleScreenBufferInfoEx);
  76. #ifdef __cplusplus
  77. }
  78. #endif
  79.  
  80. #ifdef __cplusplus
  81. extern "C" {
  82. #endif
  83. BOOL WINAPI SetConsoleScreenBufferInfoEx(HANDLE hConsoleOutput, PCONSOLE_SCREEN_BUFFER_INFOEX lpConsoleScreenBufferInfoEx);
  84. #ifdef __cplusplus
  85. }
  86. #endif
  87.  
  88. void SakriKursor();
  89. void ObrisiEkran();
  90. void gotoxy(int x, int y);
  91. int UcitajKlik(int &x, int &y);
  92. void CentrirajKonzolu();
  93.  
  94. short boja = SVETLO;
  95. short stanje = NEUTRALNO;
  96. short rotacija = ISKLJUCENO;
  97. short sacekaj;
  98. short krajigre = 0;
  99. unsigned long long int brPoteza = 0;
  100.  
  101. typedef struct
  102. {
  103.     short bojaPolja;
  104.     short stanjePolja;
  105.     wchar_t figura[10];
  106.     short bojaFigure;
  107.     short anpasan;
  108. } Polje;
  109.  
  110. typedef struct
  111. {
  112.     Polje polje[8][8];
  113.     Polje levo[8][2];
  114.     Polje desno[8][2];
  115.     short brlevo;
  116.     short brdesno;
  117.     short malarbeli;
  118.     short velikarbeli;
  119.     short malarcrni;
  120.     short velikarcrni;
  121.  
  122. } Tabla;
  123.  
  124. void PodesiVelicinu(int i);
  125. void PodesiKonzolu();
  126. void PodesiKonzolu2();
  127. void NapraviTablu(Tabla &tabla);
  128. void OdstampajTablu(Tabla tabla);
  129. void OdstampajKonzolu();
  130. void PozicijaNaTabli(int &x, int &y);
  131. void NoviPotez(Tabla &tabla);
  132. void PozicijaIzabranog(int &xizb, int &yizb, Tabla tabla);
  133. short JelUnutarTable(int x, int y);
  134. void OdstampajKonzolu();
  135. void OdstampajLevoDesno(Tabla tabla);
  136. void ObrnutoOdstampajTablu(Tabla tabla);
  137. void ObrnutaPozicijaNaTabli(int &x, int &y);
  138. void ObrisiAnpasan(Tabla &tabla);
  139.  
  140. void ObrisiKonzoluPodesavanja()
  141. {
  142.     RegDeleteKeyA(HKEY_CURRENT_USER, "Console\\C:_Program Files (x86)_CodeBlocks_cb_console_runner.exe");
  143.     RegDeleteKeyA(HKEY_CURRENT_USER, "Console\\");
  144.     RegDeleteKeyA(HKEY_CURRENT_USER, "Console");
  145. }
  146.  
  147. Tabla StaviFiguruNaXY(Tabla tabla, int x, int y)
  148. {
  149.     int xizb, yizb;
  150.     PozicijaIzabranog(xizb, yizb, tabla);
  151.     wcscpy(tabla.polje[y][x].figura, tabla.polje[yizb][xizb].figura);
  152.     wcscpy(tabla.polje[yizb][xizb].figura, PRAZNO);
  153.     tabla.polje[y][x].bojaFigure = tabla.polje[yizb][xizb].bojaFigure;
  154.     NoviPotez(tabla);
  155.  
  156.     return tabla;
  157. }
  158.  
  159. short JelSahBeli(Tabla tabla, int xpomeraj, int ypomeraj)
  160. {
  161.     int x = 0, y = 0;
  162.  
  163.     for(int i = 0; i < 64; i++)
  164.     {
  165.         if(!wcscmp(tabla.polje[i / 8][i % 8].figura, KRALJ) && tabla.polje[i / 8][i % 8].bojaFigure == BELO)
  166.         {
  167.             if(JelUnutarTable(i % 8 + xpomeraj, i / 8 + ypomeraj))
  168.             {
  169.                 y = i / 8 + ypomeraj;
  170.                 x = i % 8 + xpomeraj;
  171.             }
  172.             else
  173.             {
  174.                 x = i % 8;
  175.                 y = i / 8;
  176.             }
  177.  
  178.             break;
  179.         }
  180.     }
  181.  
  182.     if(!wcscmp(tabla.polje[y - 1][x + 1].figura, PIJUN) && tabla.polje[y - 1][x - 1].bojaFigure == CRNO && JelUnutarTable(x + 1, y - 1))
  183.         return 1;
  184.  
  185.     if(!wcscmp(tabla.polje[y - 1][x - 1].figura, PIJUN) && tabla.polje[y - 1][x - 1].bojaFigure == CRNO && JelUnutarTable(x - 1, y - 1))
  186.         return 1;
  187.  
  188.     if(!wcscmp(tabla.polje[y - 2][x - 1].figura, KONJ) && tabla.polje[y - 2][x - 1].bojaFigure == CRNO && JelUnutarTable(x - 1, y - 2))
  189.         return 1;
  190.  
  191.     if(!wcscmp(tabla.polje[y - 2][x + 1].figura, KONJ) && tabla.polje[y - 2][x + 1].bojaFigure == CRNO && JelUnutarTable(x + 1, y - 2))
  192.         return 1;
  193.  
  194.     if(!wcscmp(tabla.polje[y - 1][x + 2].figura, KONJ) && tabla.polje[y - 1][x + 2].bojaFigure == CRNO && JelUnutarTable(x + 2, y - 1))
  195.         return 1;
  196.  
  197.     if(!wcscmp(tabla.polje[y + 1][x + 2].figura, KONJ) && tabla.polje[y + 1][x + 2].bojaFigure == CRNO && JelUnutarTable(x + 2, y + 1))
  198.         return 1;
  199.  
  200.     if(!wcscmp(tabla.polje[y + 2][x + 1].figura, KONJ) && tabla.polje[y + 2][x + 1].bojaFigure == CRNO && JelUnutarTable(x + 1, y + 2))
  201.         return 1;
  202.  
  203.     if(!wcscmp(tabla.polje[y + 2][x - 1].figura, KONJ) && tabla.polje[y + 2][x - 1].bojaFigure == CRNO && JelUnutarTable(x - 1, y + 2))
  204.         return 1;
  205.  
  206.     if(!wcscmp(tabla.polje[y + 1][x - 2].figura, KONJ) && tabla.polje[y + 1][x - 2].bojaFigure == CRNO && JelUnutarTable(x - 2, y + 1))
  207.         return 1;
  208.  
  209.     if(!wcscmp(tabla.polje[y - 1][x - 2].figura, KONJ) && tabla.polje[y - 1][x - 2].bojaFigure == CRNO && JelUnutarTable(x - 2, y - 1))
  210.         return 1;
  211.  
  212.     for(int i = 1; i < 8; i++)
  213.     {
  214.         if((!wcscmp(tabla.polje[y][x - i].figura, PRAZNO) || (!wcscmp(tabla.polje[y][x - i].figura, KRALJ) && tabla.polje[y][x - i].bojaFigure == BELO)) && JelUnutarTable(x - i, y));
  215.         else if((!wcscmp(tabla.polje[y][x - i].figura, TOP) || !wcscmp(tabla.polje[y][x - i].figura, KRALJICA)) && tabla.polje[y][x - i].bojaFigure == CRNO && JelUnutarTable(x - i, y))
  216.             return 1;
  217.         else
  218.             break;
  219.     }
  220.  
  221.     for(int i = 1; i < 8; i++)
  222.     {
  223.         if((!wcscmp(tabla.polje[y][x + i].figura, PRAZNO) || (!wcscmp(tabla.polje[y][x + i].figura, KRALJ) && tabla.polje[y][x + i].bojaFigure == BELO)) && JelUnutarTable(x + i, y));
  224.         else if((!wcscmp(tabla.polje[y][x + i].figura, TOP) || !wcscmp(tabla.polje[y][x + i].figura, KRALJICA)) && tabla.polje[y][x + i].bojaFigure == CRNO && JelUnutarTable(x + i, y))
  225.             return 1;
  226.         else
  227.             break;
  228.     }
  229.  
  230.     for(int i = 1; i < 8; i++)
  231.     {
  232.         if((!wcscmp(tabla.polje[y - i][x].figura, PRAZNO) || (!wcscmp(tabla.polje[y - i][x].figura, KRALJ) && tabla.polje[y - i][x].bojaFigure == BELO)) && JelUnutarTable(x, y - i));
  233.         else if((!wcscmp(tabla.polje[y - i][x].figura, TOP) || !wcscmp(tabla.polje[y - i][x].figura, KRALJICA)) && tabla.polje[y - i][x].bojaFigure == CRNO && JelUnutarTable(x, y - i))
  234.             return 1;
  235.         else
  236.             break;
  237.     }
  238.  
  239.     for(int i = 1; i < 8; i++)
  240.     {
  241.         if((!wcscmp(tabla.polje[y + i][x].figura, PRAZNO) || (!wcscmp(tabla.polje[y + i][x].figura, KRALJ) && tabla.polje[y + i][x].bojaFigure == BELO)) && JelUnutarTable(x, y + i));
  242.         else if((!wcscmp(tabla.polje[y + i][x].figura, TOP) || !wcscmp(tabla.polje[y + i][x].figura, KRALJICA)) && tabla.polje[y + i][x].bojaFigure == CRNO && JelUnutarTable(x, y + i))
  243.             return 1;
  244.         else
  245.             break;
  246.     }
  247.  
  248.     for(int i = 1; i < 8; i++)
  249.     {
  250.         if((!wcscmp(tabla.polje[y - i][x - i].figura, PRAZNO) || (!wcscmp(tabla.polje[y - i][x - i].figura, KRALJ) && tabla.polje[y - i][x - i].bojaFigure == BELO)) && JelUnutarTable(x - i, y - i));
  251.         else if((!wcscmp(tabla.polje[y - i][x - i].figura, LOVAC) || !wcscmp(tabla.polje[y - i][x - i].figura, KRALJICA)) && tabla.polje[y - i][x - i].bojaFigure == CRNO && JelUnutarTable(x - i, y - i))
  252.             return 1;
  253.         else
  254.             break;
  255.     }
  256.  
  257.     for(int i = 1; i < 8; i++)
  258.     {
  259.         if((!wcscmp(tabla.polje[y - i][x + i].figura, PRAZNO) || (!wcscmp(tabla.polje[y - i][x + i].figura, KRALJ) && tabla.polje[y - i][x + i].bojaFigure == BELO)) && JelUnutarTable(x + i, y - i));
  260.         else if((!wcscmp(tabla.polje[y - i][x + i].figura, LOVAC) || !wcscmp(tabla.polje[y - i][x + i].figura, KRALJICA)) && tabla.polje[y - i][x + i].bojaFigure == CRNO && JelUnutarTable(x + i, y - i))
  261.             return 1;
  262.         else
  263.             break;
  264.     }
  265.  
  266.     for(int i = 1; i < 8; i++)
  267.     {
  268.         if((!wcscmp(tabla.polje[y + i][x - i].figura, PRAZNO) || (!wcscmp(tabla.polje[y + i][x - i].figura, KRALJ) && tabla.polje[y + i][x - i].bojaFigure == BELO)) && JelUnutarTable(x - i, y + i));
  269.         else if((!wcscmp(tabla.polje[y + i][x - i].figura, LOVAC) || !wcscmp(tabla.polje[y + i][x - i].figura, KRALJICA)) && tabla.polje[y + i][x - i].bojaFigure == CRNO && JelUnutarTable(x - i, y + i))
  270.             return 1;
  271.         else
  272.             break;
  273.     }
  274.  
  275.     for(int i = 1; i < 8; i++)
  276.     {
  277.         if((!wcscmp(tabla.polje[y + i][x + i].figura, PRAZNO) || (!wcscmp(tabla.polje[y + i][x + i].figura, KRALJ) && tabla.polje[y + i][x + i].bojaFigure == BELO)) && JelUnutarTable(x + i, y + i));
  278.         else if((!wcscmp(tabla.polje[y + i][x + i].figura, LOVAC) || !wcscmp(tabla.polje[y + i][x + i].figura, KRALJICA)) && tabla.polje[y + i][x + i].bojaFigure == CRNO && JelUnutarTable(x + i, y + i))
  279.             return 1;
  280.         else
  281.             break;
  282.     }
  283.  
  284.     if(!wcscmp(tabla.polje[y][x - 1].figura, KRALJ) && tabla.polje[y][x - 1].bojaFigure == CRNO && JelUnutarTable(x - 1, y))
  285.         return 1;
  286.  
  287.     if(!wcscmp(tabla.polje[y][x + 1].figura, KRALJ) && tabla.polje[y][x + 1].bojaFigure == CRNO && JelUnutarTable(x + 1, y))
  288.         return 1;
  289.  
  290.     if(!wcscmp(tabla.polje[y - 1][x].figura, KRALJ) && tabla.polje[y - 1][x].bojaFigure == CRNO && JelUnutarTable(x, y - 1))
  291.         return 1;
  292.  
  293.     if(!wcscmp(tabla.polje[y + 1][x].figura, KRALJ) && tabla.polje[y + 1][x].bojaFigure == CRNO && JelUnutarTable(x, y + 1))
  294.         return 1;
  295.  
  296.     if(!wcscmp(tabla.polje[y - 1][x - 1].figura, KRALJ) && tabla.polje[y - 1][x - 1].bojaFigure == CRNO && JelUnutarTable(x - 1, y - 1))
  297.         return 1;
  298.  
  299.     if(!wcscmp(tabla.polje[y - 1][x + 1].figura, KRALJ) && tabla.polje[y - 1][x + 1].bojaFigure == CRNO && JelUnutarTable(x + 1, y - 1))
  300.         return 1;
  301.  
  302.     if(!wcscmp(tabla.polje[y + 1][x - 1].figura, KRALJ) && tabla.polje[y + 1][x - 1].bojaFigure == CRNO && JelUnutarTable(x - 1, y + 1))
  303.         return 1;
  304.  
  305.     if(!wcscmp(tabla.polje[y + 1][x + 1].figura, KRALJ) && tabla.polje[y + 1][x + 1].bojaFigure == CRNO && JelUnutarTable(x + 1, y + 1))
  306.         return 1;
  307.  
  308.     return 0;
  309. }
  310.  
  311. short JelSahCrni(Tabla tabla, int xpomeraj, int ypomeraj)
  312. {
  313.     int x = 0, y = 0;
  314.  
  315.     for(int i = 0; i < 64; i++)
  316.     {
  317.         if(!wcscmp(tabla.polje[i / 8][i % 8].figura, KRALJ) && tabla.polje[i / 8][i % 8].bojaFigure == CRNO)
  318.         {
  319.             if(JelUnutarTable(i % 8 + xpomeraj, i / 8 + ypomeraj))
  320.             {
  321.                 y = i / 8 + ypomeraj;
  322.                 x = i % 8 + xpomeraj;
  323.             }
  324.             else
  325.             {
  326.                 x = i % 8;
  327.                 y = i / 8;
  328.             }
  329.  
  330.             break;
  331.         }
  332.     }
  333.  
  334.     if(!wcscmp(tabla.polje[y + 1][x + 1].figura, PIJUN) && tabla.polje[y + 1][x - 1].bojaFigure == BELO && JelUnutarTable(x + 1, y + 1))
  335.         return 1;
  336.  
  337.     if(!wcscmp(tabla.polje[y + 1][x - 1].figura, PIJUN) && tabla.polje[y + 1][x - 1].bojaFigure == BELO && JelUnutarTable(x - 1, y + 1))
  338.         return 1;
  339.  
  340.     if(!wcscmp(tabla.polje[y - 2][x - 1].figura, KONJ) && tabla.polje[y - 2][x - 1].bojaFigure == BELO && JelUnutarTable(x - 1, y - 2))
  341.         return 1;
  342.  
  343.     if(!wcscmp(tabla.polje[y - 2][x + 1].figura, KONJ) && tabla.polje[y - 2][x + 1].bojaFigure == BELO && JelUnutarTable(x + 1, y - 2))
  344.         return 1;
  345.  
  346.     if(!wcscmp(tabla.polje[y - 1][x + 2].figura, KONJ) && tabla.polje[y - 1][x + 2].bojaFigure == BELO && JelUnutarTable(x + 2, y - 1))
  347.         return 1;
  348.  
  349.     if(!wcscmp(tabla.polje[y + 1][x + 2].figura, KONJ) && tabla.polje[y + 1][x + 2].bojaFigure == BELO && JelUnutarTable(x + 2, y + 1))
  350.         return 1;
  351.  
  352.     if(!wcscmp(tabla.polje[y + 2][x + 1].figura, KONJ) && tabla.polje[y + 2][x + 1].bojaFigure == BELO && JelUnutarTable(x + 1, y + 2))
  353.         return 1;
  354.  
  355.     if(!wcscmp(tabla.polje[y + 2][x - 1].figura, KONJ) && tabla.polje[y + 2][x - 1].bojaFigure == BELO && JelUnutarTable(x - 1, y + 2))
  356.         return 1;
  357.  
  358.     if(!wcscmp(tabla.polje[y + 1][x - 2].figura, KONJ) && tabla.polje[y + 1][x - 2].bojaFigure == BELO && JelUnutarTable(x - 2, y + 1))
  359.         return 1;
  360.  
  361.     if(!wcscmp(tabla.polje[y - 1][x - 2].figura, KONJ) && tabla.polje[y - 1][x - 2].bojaFigure == BELO && JelUnutarTable(x - 2, y - 1))
  362.         return 1;
  363.  
  364.     for(int i = 1; i < 8; i++)
  365.     {
  366.         if((!wcscmp(tabla.polje[y][x - i].figura, PRAZNO) || (!wcscmp(tabla.polje[y][x - i].figura, KRALJ) && tabla.polje[y][x - i].bojaFigure == CRNO)) && JelUnutarTable(x - i, y));
  367.         else if((!wcscmp(tabla.polje[y][x - i].figura, TOP) || !wcscmp(tabla.polje[y][x - i].figura, KRALJICA)) && tabla.polje[y][x - i].bojaFigure == BELO && JelUnutarTable(x - i, y))
  368.             return 1;
  369.         else
  370.             break;
  371.     }
  372.  
  373.     for(int i = 1; i < 8; i++)
  374.     {
  375.         if((!wcscmp(tabla.polje[y][x + i].figura, PRAZNO) || (!wcscmp(tabla.polje[y][x + i].figura, KRALJ) && tabla.polje[y][x + i].bojaFigure == CRNO)) && JelUnutarTable(x + i, y));
  376.         else if((!wcscmp(tabla.polje[y][x + i].figura, TOP) || !wcscmp(tabla.polje[y][x + i].figura, KRALJICA)) && tabla.polje[y][x + i].bojaFigure == BELO && JelUnutarTable(x + i, y))
  377.             return 1;
  378.         else
  379.             break;
  380.     }
  381.  
  382.     for(int i = 1; i < 8; i++)
  383.     {
  384.         if((!wcscmp(tabla.polje[y - i][x].figura, PRAZNO) || (!wcscmp(tabla.polje[y - i][x].figura, KRALJ) && tabla.polje[y - i][x].bojaFigure == CRNO)) && JelUnutarTable(x, y - i));
  385.         else if((!wcscmp(tabla.polje[y - i][x].figura, TOP) || !wcscmp(tabla.polje[y - i][x].figura, KRALJICA)) && tabla.polje[y - i][x].bojaFigure == BELO && JelUnutarTable(x, y - i))
  386.             return 1;
  387.         else
  388.             break;
  389.     }
  390.  
  391.     for(int i = 1; i < 8; i++)
  392.     {
  393.         if((!wcscmp(tabla.polje[y + i][x].figura, PRAZNO) || (!wcscmp(tabla.polje[y + i][x].figura, KRALJ) && tabla.polje[y + i][x].bojaFigure == CRNO)) && JelUnutarTable(x, y + i));
  394.         else if((!wcscmp(tabla.polje[y + i][x].figura, TOP) || !wcscmp(tabla.polje[y + i][x].figura, KRALJICA)) && tabla.polje[y + i][x].bojaFigure == BELO && JelUnutarTable(x, y + i))
  395.             return 1;
  396.         else
  397.             break;
  398.     }
  399.  
  400.     for(int i = 1; i < 8; i++)
  401.     {
  402.         if((!wcscmp(tabla.polje[y - i][x - i].figura, PRAZNO) || (!wcscmp(tabla.polje[y - i][x - i].figura, KRALJ) && tabla.polje[y - i][x - i].bojaFigure == CRNO)) && JelUnutarTable(x - i, y - i));
  403.         else if((!wcscmp(tabla.polje[y - i][x - i].figura, LOVAC) || !wcscmp(tabla.polje[y - i][x - i].figura, KRALJICA)) && tabla.polje[y - i][x - i].bojaFigure == BELO && JelUnutarTable(x - i, y - i))
  404.             return 1;
  405.         else
  406.             break;
  407.     }
  408.  
  409.     for(int i = 1; i < 8; i++)
  410.     {
  411.         if((!wcscmp(tabla.polje[y - i][x + i].figura, PRAZNO) || (!wcscmp(tabla.polje[y - i][x + i].figura, KRALJ) && tabla.polje[y - i][x + i].bojaFigure == CRNO)) && JelUnutarTable(x + i, y - i));
  412.         else if((!wcscmp(tabla.polje[y - i][x + i].figura, LOVAC) || !wcscmp(tabla.polje[y - i][x + i].figura, KRALJICA)) && tabla.polje[y - i][x + i].bojaFigure == BELO && JelUnutarTable(x + i, y - i))
  413.             return 1;
  414.         else
  415.             break;
  416.     }
  417.  
  418.     for(int i = 1; i < 8; i++)
  419.     {
  420.         if((!wcscmp(tabla.polje[y + i][x - i].figura, PRAZNO) || (!wcscmp(tabla.polje[y + i][x - i].figura, KRALJ) && tabla.polje[y + i][x - i].bojaFigure == CRNO)) && JelUnutarTable(x - i, y + i));
  421.         else if((!wcscmp(tabla.polje[y + i][x - i].figura, LOVAC) || !wcscmp(tabla.polje[y + i][x - i].figura, KRALJICA)) && tabla.polje[y + i][x - i].bojaFigure == BELO && JelUnutarTable(x - i, y + i))
  422.             return 1;
  423.         else
  424.             break;
  425.     }
  426.  
  427.     for(int i = 1; i < 8; i++)
  428.     {
  429.         if((!wcscmp(tabla.polje[y + i][x + i].figura, PRAZNO) || (!wcscmp(tabla.polje[y + i][x + i].figura, KRALJ) && tabla.polje[y + i][x + i].bojaFigure == CRNO)) && JelUnutarTable(x + i, y + i));
  430.         else if((!wcscmp(tabla.polje[y + i][x + i].figura, LOVAC) || !wcscmp(tabla.polje[y + i][x + i].figura, KRALJICA)) && tabla.polje[y + i][x + i].bojaFigure == BELO && JelUnutarTable(x + i, y + i))
  431.             return 1;
  432.         else
  433.             break;
  434.     }
  435.  
  436.     if(!wcscmp(tabla.polje[y][x - 1].figura, KRALJ) && tabla.polje[y][x - 1].bojaFigure == BELO && JelUnutarTable(x - 1, y))
  437.         return 1;
  438.  
  439.     if(!wcscmp(tabla.polje[y][x + 1].figura, KRALJ) && tabla.polje[y][x + 1].bojaFigure == BELO && JelUnutarTable(x + 1, y))
  440.         return 1;
  441.  
  442.     if(!wcscmp(tabla.polje[y - 1][x].figura, KRALJ) && tabla.polje[y - 1][x].bojaFigure == BELO && JelUnutarTable(x, y - 1))
  443.         return 1;
  444.  
  445.     if(!wcscmp(tabla.polje[y + 1][x].figura, KRALJ) && tabla.polje[y + 1][x].bojaFigure == BELO && JelUnutarTable(x, y + 1))
  446.         return 1;
  447.  
  448.     if(!wcscmp(tabla.polje[y - 1][x - 1].figura, KRALJ) && tabla.polje[y - 1][x - 1].bojaFigure == BELO && JelUnutarTable(x - 1, y - 1))
  449.         return 1;
  450.  
  451.     if(!wcscmp(tabla.polje[y - 1][x + 1].figura, KRALJ) && tabla.polje[y - 1][x + 1].bojaFigure == BELO && JelUnutarTable(x + 1, y - 1))
  452.         return 1;
  453.  
  454.     if(!wcscmp(tabla.polje[y + 1][x - 1].figura, KRALJ) && tabla.polje[y + 1][x - 1].bojaFigure == BELO && JelUnutarTable(x - 1, y + 1))
  455.         return 1;
  456.  
  457.     if(!wcscmp(tabla.polje[y + 1][x + 1].figura, KRALJ) && tabla.polje[y + 1][x + 1].bojaFigure == BELO && JelUnutarTable(x + 1, y + 1))
  458.         return 1;
  459.  
  460.     return 0;
  461. }
  462.  
  463. short PostaviKralja(Tabla &tabla, int x, int y)
  464. {
  465.     short ret = 0;
  466.  
  467.     tabla.polje[y][x].stanjePolja = IZABRANO;
  468.  
  469.     if(tabla.polje[y][x].bojaFigure == BELO)
  470.     {
  471.         if(!wcscmp(tabla.polje[y - 1][x - 1].figura, PRAZNO) && JelUnutarTable(x - 1, y - 1) && !JelSahBeli(tabla, -1, -1))
  472.         {
  473.             wcscpy(tabla.polje[y - 1][x - 1].figura, TACKA);
  474.             tabla.polje[y - 1][x - 1].bojaFigure = ZELENO;
  475.             ret = 1;
  476.         }
  477.         else if(wcscmp(tabla.polje[y - 1][x - 1].figura, PRAZNO) && tabla.polje[y - 1][x - 1].bojaFigure == CRNO && JelUnutarTable(x - 1, y - 1) && !JelSahBeli(tabla, -1, -1))
  478.         {
  479.             tabla.polje[y - 1][x - 1].stanjePolja = NAPADNUTO;
  480.             ret = 1;
  481.         }
  482.  
  483.         if(!wcscmp(tabla.polje[y - 1][x + 1].figura, PRAZNO) && JelUnutarTable(x + 1, y - 1) && !JelSahBeli(tabla, 1, -1))
  484.         {
  485.             wcscpy(tabla.polje[y - 1][x + 1].figura, TACKA);
  486.             tabla.polje[y - 1][x + 1].bojaFigure = ZELENO;
  487.             ret = 1;
  488.         }
  489.         else if(wcscmp(tabla.polje[y - 1][x + 1].figura, PRAZNO) && tabla.polje[y - 1][x + 1].bojaFigure == CRNO && JelUnutarTable(x + 1, y - 1) && !JelSahBeli(tabla, 1, -1))
  490.         {
  491.             tabla.polje[y - 1][x + 1].stanjePolja = NAPADNUTO;
  492.             ret = 1;
  493.         }
  494.  
  495.         if(!wcscmp(tabla.polje[y + 1][x - 1].figura, PRAZNO) && JelUnutarTable(x - 1, y + 1) && !JelSahBeli(tabla, -1, 1))
  496.         {
  497.             wcscpy(tabla.polje[y + 1][x - 1].figura, TACKA);
  498.             tabla.polje[y + 1][x - 1].bojaFigure = ZELENO;
  499.             ret = 1;
  500.         }
  501.         else if(wcscmp(tabla.polje[y + 1][x - 1].figura, PRAZNO) && tabla.polje[y + 1][x - 1].bojaFigure == CRNO && JelUnutarTable(x - 1, y + 1) && !JelSahBeli(tabla, -1, 1))
  502.         {
  503.             tabla.polje[y + 1][x - 1].stanjePolja = NAPADNUTO;
  504.             ret = 1;
  505.         }
  506.  
  507.         if(!wcscmp(tabla.polje[y + 1][x + 1].figura, PRAZNO) && JelUnutarTable(x + 1, y + 1) && !JelSahBeli(tabla, 1, 1))
  508.         {
  509.             wcscpy(tabla.polje[y + 1][x + 1].figura, TACKA);
  510.             tabla.polje[y + 1][x + 1].bojaFigure = ZELENO;
  511.             ret = 1;
  512.         }
  513.         else if(wcscmp(tabla.polje[y + 1][x + 1].figura, PRAZNO) && tabla.polje[y + 1][x + 1].bojaFigure == CRNO && JelUnutarTable(x + 1, y + 1) && !JelSahBeli(tabla, 1, 1))
  514.         {
  515.             tabla.polje[y + 1][x + 1].stanjePolja = NAPADNUTO;
  516.             ret = 1;
  517.         }
  518.  
  519.         if(!wcscmp(tabla.polje[y][x + 1].figura, PRAZNO) && JelUnutarTable(x + 1, y) && !JelSahBeli(tabla, 1, 0))
  520.         {
  521.             wcscpy(tabla.polje[y][x + 1].figura, TACKA);
  522.             tabla.polje[y][x + 1].bojaFigure = ZELENO;
  523.             ret = 1;
  524.         }
  525.         else if(wcscmp(tabla.polje[y][x + 1].figura, PRAZNO) && tabla.polje[y][x + 1].bojaFigure == CRNO && JelUnutarTable(x + 1, y) && !JelSahBeli(tabla, 1, 0))
  526.         {
  527.             tabla.polje[y][x + 1].stanjePolja = NAPADNUTO;
  528.             ret = 1;
  529.         }
  530.  
  531.         if(!wcscmp(tabla.polje[y + 1][x].figura, PRAZNO) && JelUnutarTable(x, y + 1) && !JelSahBeli(tabla, 0, 1))
  532.         {
  533.             wcscpy(tabla.polje[y + 1][x].figura, TACKA);
  534.             tabla.polje[y + 1][x].bojaFigure = ZELENO;
  535.             ret = 1;
  536.         }
  537.         else if(wcscmp(tabla.polje[y + 1][x].figura, PRAZNO) && tabla.polje[y + 1][x].bojaFigure == CRNO && JelUnutarTable(x, y + 1) && !JelSahBeli(tabla, 0, 1))
  538.         {
  539.             tabla.polje[y + 1][x].stanjePolja = NAPADNUTO;
  540.             ret = 1;
  541.         }
  542.  
  543.         if(!wcscmp(tabla.polje[y][x - 1].figura, PRAZNO) && JelUnutarTable(x - 1, y) && !JelSahBeli(tabla, -1, 0))
  544.         {
  545.             wcscpy(tabla.polje[y][x - 1].figura, TACKA);
  546.             tabla.polje[y][x - 1].bojaFigure = ZELENO;
  547.             ret = 1;
  548.         }
  549.         else if(wcscmp(tabla.polje[y][x - 1].figura, PRAZNO) && tabla.polje[y][x - 1].bojaFigure == CRNO && JelUnutarTable(x - 1, y) && !JelSahBeli(tabla, -1, 0))
  550.         {
  551.             tabla.polje[y][x - 1].stanjePolja = NAPADNUTO;
  552.             ret = 1;
  553.         }
  554.  
  555.         if(!wcscmp(tabla.polje[y - 1][x].figura, PRAZNO) && JelUnutarTable(x, y - 1) && !JelSahBeli(tabla, 0, -1))
  556.         {
  557.             wcscpy(tabla.polje[y - 1][x].figura, TACKA);
  558.             tabla.polje[y - 1][x].bojaFigure = ZELENO;
  559.             ret = 1;
  560.         }
  561.         else if(wcscmp(tabla.polje[y - 1][x].figura, PRAZNO) && tabla.polje[y - 1][x].bojaFigure == CRNO && JelUnutarTable(x, y - 1) && !JelSahBeli(tabla, 0, -1))
  562.         {
  563.             tabla.polje[y - 1][x].stanjePolja = NAPADNUTO;
  564.             ret = 1;
  565.         }
  566.  
  567.         if(tabla.malarbeli == UKLJUCENO && !wcscmp(tabla.polje[7][5].figura, TACKA) && !wcscmp(tabla.polje[7][6].figura, PRAZNO) && !JelSahBeli(tabla, 0, 0) && !JelSahBeli(tabla, 1, 0) && !JelSahBeli(tabla, 2, 0))
  568.         {
  569.             wcscpy(tabla.polje[7][6].figura, TACKA);
  570.             tabla.polje[7][6].bojaFigure = ZELENO;
  571.             ret = 1;
  572.         }
  573.  
  574.         if(tabla.velikarbeli == UKLJUCENO && !wcscmp(tabla.polje[7][3].figura, TACKA) && !wcscmp(tabla.polje[7][2].figura, PRAZNO) && !wcscmp(tabla.polje[7][1].figura, PRAZNO) && !JelSahBeli(tabla, 0, 0) && !JelSahBeli(tabla, -1, 0) && !JelSahBeli(tabla, -2, 0) && !JelSahBeli(tabla, -3, 0))
  575.         {
  576.             wcscpy(tabla.polje[7][1].figura, TACKA);
  577.             tabla.polje[7][1].bojaFigure = ZELENO;
  578.             ret = 1;
  579.         }
  580.  
  581.     }
  582.     else
  583.     {
  584.         if(!wcscmp(tabla.polje[y - 1][x - 1].figura, PRAZNO) && JelUnutarTable(x - 1, y - 1) && !JelSahCrni(tabla, -1, -1))
  585.         {
  586.             wcscpy(tabla.polje[y - 1][x - 1].figura, TACKA);
  587.             tabla.polje[y - 1][x - 1].bojaFigure = ZELENO;
  588.             ret = 1;
  589.         }
  590.         else if(wcscmp(tabla.polje[y - 1][x - 1].figura, PRAZNO) && tabla.polje[y - 1][x - 1].bojaFigure == BELO && JelUnutarTable(x - 1, y - 1) && !JelSahCrni(tabla, -1, -1))
  591.         {
  592.             tabla.polje[y - 1][x - 1].stanjePolja = NAPADNUTO;
  593.             ret = 1;
  594.         }
  595.  
  596.         if(!wcscmp(tabla.polje[y - 1][x + 1].figura, PRAZNO) && JelUnutarTable(x + 1, y - 1) && !JelSahCrni(tabla, 1, -1))
  597.         {
  598.             wcscpy(tabla.polje[y - 1][x + 1].figura, TACKA);
  599.             tabla.polje[y - 1][x + 1].bojaFigure = ZELENO;
  600.             ret = 1;
  601.         }
  602.         else if(wcscmp(tabla.polje[y - 1][x + 1].figura, PRAZNO) && tabla.polje[y - 1][x + 1].bojaFigure == BELO && JelUnutarTable(x + 1, y - 1) && !JelSahCrni(tabla, 1, -1))
  603.         {
  604.             tabla.polje[y - 1][x + 1].stanjePolja = NAPADNUTO;
  605.             ret = 1;
  606.         }
  607.  
  608.         if(!wcscmp(tabla.polje[y + 1][x - 1].figura, PRAZNO) && JelUnutarTable(x - 1, y + 1) && !JelSahCrni(tabla, -1, 1))
  609.         {
  610.             wcscpy(tabla.polje[y + 1][x - 1].figura, TACKA);
  611.             tabla.polje[y + 1][x - 1].bojaFigure = ZELENO;
  612.         }
  613.         else if(wcscmp(tabla.polje[y + 1][x - 1].figura, PRAZNO) && tabla.polje[y + 1][x - 1].bojaFigure == BELO && JelUnutarTable(x - 1, y + 1) && !JelSahCrni(tabla, -1, 1))
  614.         {
  615.             tabla.polje[y + 1][x - 1].stanjePolja = NAPADNUTO;
  616.             ret = 1;
  617.         }
  618.  
  619.         if(!wcscmp(tabla.polje[y + 1][x + 1].figura, PRAZNO) && JelUnutarTable(x + 1, y + 1) && !JelSahCrni(tabla, 1, 1))
  620.         {
  621.             wcscpy(tabla.polje[y + 1][x + 1].figura, TACKA);
  622.             tabla.polje[y + 1][x + 1].bojaFigure = ZELENO;
  623.             ret = 1;
  624.         }
  625.         else if(wcscmp(tabla.polje[y + 1][x + 1].figura, PRAZNO) && tabla.polje[y + 1][x + 1].bojaFigure == BELO && JelUnutarTable(x + 1, y + 1) && !JelSahCrni(tabla, 1, 1))
  626.         {
  627.             tabla.polje[y + 1][x + 1].stanjePolja = NAPADNUTO;
  628.             ret = 1;
  629.         }
  630.  
  631.         if(!wcscmp(tabla.polje[y][x + 1].figura, PRAZNO) && JelUnutarTable(x + 1, y) && !JelSahCrni(tabla, 1, 0))
  632.         {
  633.             wcscpy(tabla.polje[y][x + 1].figura, TACKA);
  634.             tabla.polje[y][x + 1].bojaFigure = ZELENO;
  635.             ret = 1;
  636.         }
  637.         else if(wcscmp(tabla.polje[y][x + 1].figura, PRAZNO) && tabla.polje[y][x + 1].bojaFigure == BELO && JelUnutarTable(x + 1, y) && !JelSahCrni(tabla, 1, 0))
  638.         {
  639.             tabla.polje[y][x + 1].stanjePolja = NAPADNUTO;
  640.             ret = 1;
  641.         }
  642.  
  643.         if(!wcscmp(tabla.polje[y + 1][x].figura, PRAZNO) && JelUnutarTable(x, y + 1) && !JelSahCrni(tabla, 0, 1))
  644.         {
  645.             wcscpy(tabla.polje[y + 1][x].figura, TACKA);
  646.             tabla.polje[y + 1][x].bojaFigure = ZELENO;
  647.             ret = 1;
  648.         }
  649.         else if(wcscmp(tabla.polje[y + 1][x].figura, PRAZNO) && tabla.polje[y + 1][x].bojaFigure == BELO && JelUnutarTable(x, y + 1) && !JelSahCrni(tabla, 0, 1))
  650.         {
  651.             tabla.polje[y + 1][x].stanjePolja = NAPADNUTO;
  652.             ret = 1;
  653.         }
  654.  
  655.         if(!wcscmp(tabla.polje[y][x - 1].figura, PRAZNO) && JelUnutarTable(x - 1, y) && !JelSahCrni(tabla, -1, 0))
  656.         {
  657.             wcscpy(tabla.polje[y][x - 1].figura, TACKA);
  658.             tabla.polje[y][x - 1].bojaFigure = ZELENO;
  659.             ret = 1;
  660.         }
  661.         else if(wcscmp(tabla.polje[y][x - 1].figura, PRAZNO) && tabla.polje[y][x - 1].bojaFigure == BELO && JelUnutarTable(x - 1, y) && !JelSahCrni(tabla, -1, 0))
  662.         {
  663.             tabla.polje[y][x - 1].stanjePolja = NAPADNUTO;
  664.             ret = 1;
  665.         }
  666.  
  667.         if(!wcscmp(tabla.polje[y - 1][x].figura, PRAZNO) && JelUnutarTable(x, y - 1) && !JelSahCrni(tabla, 0, -1))
  668.         {
  669.             wcscpy(tabla.polje[y - 1][x].figura, TACKA);
  670.             tabla.polje[y - 1][x].bojaFigure = ZELENO;
  671.             ret = 1;
  672.         }
  673.         else if(wcscmp(tabla.polje[y - 1][x].figura, PRAZNO) && tabla.polje[y - 1][x].bojaFigure == BELO && JelUnutarTable(x, y - 1) && !JelSahCrni(tabla, 0, -1))
  674.         {
  675.             tabla.polje[y - 1][x].stanjePolja = NAPADNUTO;
  676.             ret = 1;
  677.         }
  678.  
  679.         if(tabla.malarcrni == UKLJUCENO && !wcscmp(tabla.polje[0][5].figura, TACKA) && !wcscmp(tabla.polje[0][6].figura, PRAZNO) && !JelSahCrni(tabla, 0, 0) && !JelSahCrni(tabla, 1, 0) && !JelSahCrni(tabla, 2, 0))
  680.         {
  681.             wcscpy(tabla.polje[0][6].figura, TACKA);
  682.             tabla.polje[0][6].bojaFigure = ZELENO;
  683.             ret = 1;
  684.         }
  685.  
  686.         if(tabla.velikarcrni == UKLJUCENO && !wcscmp(tabla.polje[0][3].figura, TACKA) && !wcscmp(tabla.polje[0][2].figura, PRAZNO) && !wcscmp(tabla.polje[0][1].figura, PRAZNO) && !JelSahCrni(tabla, 0, 0) && !JelSahCrni(tabla, -1, 0) && !JelSahCrni(tabla, -2, 0) && !JelSahCrni(tabla, -3, 0))
  687.         {
  688.             wcscpy(tabla.polje[0][1].figura, TACKA);
  689.             tabla.polje[0][1].bojaFigure = ZELENO;
  690.             ret = 1;
  691.         }
  692.     }
  693.  
  694.     return ret;
  695. }
  696.  
  697.  
  698. short PostaviPijuna(Tabla &tabla, int x, int y)
  699. {
  700.     short ret = 0;
  701.  
  702.     tabla.polje[y][x].stanjePolja = IZABRANO;
  703.  
  704.     if(tabla.polje[y][x].bojaFigure == BELO)
  705.     {
  706.         if(!wcscmp(tabla.polje[y - 1][x].figura, PRAZNO) && JelUnutarTable(x, y - 1) && !JelSahBeli(StaviFiguruNaXY(tabla, x, y - 1), 0, 0))
  707.         {
  708.             wcscpy(tabla.polje[y - 1][x].figura, TACKA);
  709.             tabla.polje[y - 1][x].bojaFigure = ZELENO;
  710.             ret = 1;
  711.         }
  712.  
  713.         if(y == 6 && !wcscmp(tabla.polje[y - 2][x].figura, PRAZNO) && !wcscmp(tabla.polje[y - 1][x].figura, TACKA) && JelUnutarTable(x, y - 2) && !JelSahBeli(StaviFiguruNaXY(tabla, x, y - 2), 0, 0))
  714.         {
  715.             wcscpy(tabla.polje[y - 2][x].figura, TACKA);
  716.             tabla.polje[y - 2][x].bojaFigure = ZELENO;
  717.             ret = 1;
  718.         }
  719.  
  720.         if(wcscmp(tabla.polje[y - 1][x + 1].figura, PRAZNO) && tabla.polje[y - 1][x + 1].bojaFigure == CRNO && JelUnutarTable(x + 1, y - 1) && !JelSahBeli(StaviFiguruNaXY(tabla, x + 1, y - 1), 0, 0))
  721.         {
  722.             tabla.polje[y - 1][x + 1].stanjePolja = NAPADNUTO;
  723.             ret = 1;
  724.         }
  725.  
  726.         if(wcscmp(tabla.polje[y - 1][x - 1].figura, PRAZNO) && tabla.polje[y - 1][x - 1].bojaFigure == CRNO && JelUnutarTable(x - 1, y - 1) && !JelSahBeli(StaviFiguruNaXY(tabla, x - 1, y - 1), 0, 0))
  727.         {
  728.             tabla.polje[y - 1][x - 1].stanjePolja = NAPADNUTO;
  729.             ret = 1;
  730.         }
  731.  
  732.         if(!wcscmp(tabla.polje[y][x + 1].figura, PIJUN) && tabla.polje[y][x + 1].bojaFigure == CRNO && tabla.polje[y][x + 1].anpasan == UKLJUCENO && JelUnutarTable(x + 1, y - 1) && !JelSahBeli(StaviFiguruNaXY(tabla, x + 1, y - 1), 0, 0))
  733.         {
  734.             tabla.polje[y - 1][x + 1].stanjePolja = NAPADNUTO;
  735.             ret = 1;
  736.         }
  737.  
  738.         if(!wcscmp(tabla.polje[y][x - 1].figura, PIJUN) && tabla.polje[y][x - 1].bojaFigure == CRNO && tabla.polje[y][x - 1].anpasan == UKLJUCENO && JelUnutarTable(x - 1, y - 1) && !JelSahBeli(StaviFiguruNaXY(tabla, x - 1, y - 1), 0, 0))
  739.         {
  740.             tabla.polje[y - 1][x - 1].stanjePolja = NAPADNUTO;
  741.             ret = 1;
  742.         }
  743.     }
  744.     else
  745.     {
  746.         if(!wcscmp(tabla.polje[y + 1][x].figura, PRAZNO) && JelUnutarTable(x, y + 1) && !JelSahCrni(StaviFiguruNaXY(tabla, x, y + 1), 0, 0))
  747.         {
  748.             wcscpy(tabla.polje[y + 1][x].figura, TACKA);
  749.             tabla.polje[y + 1][x].bojaFigure = ZELENO;
  750.             ret = 1;
  751.         }
  752.  
  753.         if(y == 1 && !wcscmp(tabla.polje[y + 2][x].figura, PRAZNO) && !wcscmp(tabla.polje[y + 1][x].figura, TACKA) && JelUnutarTable(x, y + 2) && !JelSahCrni(StaviFiguruNaXY(tabla, x, y + 2), 0, 0))
  754.         {
  755.             wcscpy(tabla.polje[y + 2][x].figura, TACKA);
  756.             tabla.polje[y + 2][x].bojaFigure = ZELENO;
  757.             ret = 1;
  758.         }
  759.  
  760.         if(wcscmp(tabla.polje[y + 1][x + 1].figura, PRAZNO) && tabla.polje[y + 1][x + 1].bojaFigure == BELO && JelUnutarTable(x + 1, y + 1) && !JelSahCrni(StaviFiguruNaXY(tabla, x + 1, y + 1), 0, 0))
  761.         {
  762.             tabla.polje[y + 1][x + 1].stanjePolja = NAPADNUTO;
  763.             ret = 1;
  764.         }
  765.  
  766.         if(wcscmp(tabla.polje[y + 1][x - 1].figura, PRAZNO) && tabla.polje[y + 1][x - 1].bojaFigure == BELO && JelUnutarTable(x - 1, y + 1) && !JelSahCrni(StaviFiguruNaXY(tabla, x - 1, y + 1), 0, 0))
  767.         {
  768.             tabla.polje[y + 1][x - 1].stanjePolja = NAPADNUTO;
  769.             ret = 1;
  770.         }
  771.  
  772.         if(!wcscmp(tabla.polje[y][x - 1].figura, PIJUN) && tabla.polje[y][x - 1].bojaFigure == BELO && tabla.polje[y][x - 1].anpasan == UKLJUCENO && JelUnutarTable(x - 1, y + 1) && !JelSahCrni(StaviFiguruNaXY(tabla, x - 1, y + 1), 0, 0))
  773.         {
  774.             tabla.polje[y + 1][x - 1].stanjePolja = NAPADNUTO;
  775.             ret = 1;
  776.         }
  777.  
  778.         if(!wcscmp(tabla.polje[y][x + 1].figura, PIJUN) && tabla.polje[y][x + 1].bojaFigure == BELO && tabla.polje[y][x + 1].anpasan == UKLJUCENO && JelUnutarTable(x + 1, y + 1) && !JelSahCrni(StaviFiguruNaXY(tabla, x + 1, y + 1), 0, 0))
  779.         {
  780.             tabla.polje[y + 1][x + 1].stanjePolja = NAPADNUTO;
  781.             ret = 1;
  782.         }
  783.     }
  784.  
  785.     return ret;
  786. }
  787.  
  788. short PostaviKonja(Tabla &tabla, int x, int y)
  789. {
  790.     short ret = 0;
  791.     tabla.polje[y][x].stanjePolja = IZABRANO;
  792.  
  793.     if(!wcscmp(tabla.polje[y - 2][x - 1].figura, PRAZNO) && JelUnutarTable(x - 1, y - 2) && ((tabla.polje[y][x].bojaFigure == BELO && !JelSahBeli(StaviFiguruNaXY(tabla, x - 1, y - 2), 0, 0)) || (tabla.polje[y][x].bojaFigure == CRNO && !JelSahCrni(StaviFiguruNaXY(tabla, x - 1, y - 2), 0, 0))))
  794.     {
  795.         wcscpy(tabla.polje[y - 2][x - 1].figura, TACKA);
  796.         tabla.polje[y - 2][x - 1].bojaFigure = ZELENO;
  797.         ret = 1;
  798.     }
  799.     else if(wcscmp(tabla.polje[y - 2][x - 1].figura, PRAZNO) && ((tabla.polje[y][x].bojaFigure == BELO && tabla.polje[y - 2][x - 1].bojaFigure == CRNO) || (tabla.polje[y][x].bojaFigure == CRNO && tabla.polje[y - 2][x - 1].bojaFigure == BELO)) && JelUnutarTable(x - 1, y - 2)  && ((tabla.polje[y][x].bojaFigure == BELO && !JelSahBeli(StaviFiguruNaXY(tabla, x - 1, y - 2), 0, 0)) || (tabla.polje[y][x].bojaFigure == CRNO && !JelSahCrni(StaviFiguruNaXY(tabla, x - 1, y - 2), 0, 0))))
  800.     {
  801.         tabla.polje[y - 2][x - 1].stanjePolja = NAPADNUTO;
  802.         ret = 1;
  803.     }
  804.  
  805.     if(!wcscmp(tabla.polje[y - 2][x + 1].figura, PRAZNO) && JelUnutarTable(x + 1, y - 2) && ((tabla.polje[y][x].bojaFigure == BELO && !JelSahBeli(StaviFiguruNaXY(tabla, x + 1, y - 2), 0, 0)) || (tabla.polje[y][x].bojaFigure == CRNO && !JelSahCrni(StaviFiguruNaXY(tabla, x + 1, y - 2), 0, 0))))
  806.     {
  807.         wcscpy(tabla.polje[y - 2][x + 1].figura, TACKA);
  808.         tabla.polje[y - 2][x + 1].bojaFigure = ZELENO;
  809.         ret = 1;
  810.     }
  811.     else if(wcscmp(tabla.polje[y - 2][x + 1].figura, PRAZNO) && ((tabla.polje[y][x].bojaFigure == BELO && tabla.polje[y - 2][x + 1].bojaFigure == CRNO) || (tabla.polje[y][x].bojaFigure == CRNO && tabla.polje[y - 2][x + 1].bojaFigure == BELO)) && JelUnutarTable(x + 1, y - 2)  && ((tabla.polje[y][x].bojaFigure == BELO && !JelSahBeli(StaviFiguruNaXY(tabla, x + 1, y - 2), 0, 0)) || (tabla.polje[y][x].bojaFigure == CRNO && !JelSahCrni(StaviFiguruNaXY(tabla, x + 1, y - 2), 0, 0))))
  812.     {
  813.         tabla.polje[y - 2][x + 1].stanjePolja = NAPADNUTO;
  814.         ret = 1;
  815.     }
  816.  
  817.     if(!wcscmp(tabla.polje[y - 1][x + 2].figura, PRAZNO) && JelUnutarTable(x + 2, y - 1) && ((tabla.polje[y][x].bojaFigure == BELO && !JelSahBeli(StaviFiguruNaXY(tabla, x + 2, y - 1), 0, 0)) || (tabla.polje[y][x].bojaFigure == CRNO && !JelSahCrni(StaviFiguruNaXY(tabla, x + 2, y - 1), 0, 0))))
  818.     {
  819.         wcscpy(tabla.polje[y - 1][x + 2].figura, TACKA);
  820.         tabla.polje[y - 1][x + 2].bojaFigure = ZELENO;
  821.         ret = 1;
  822.     }
  823.     else if(wcscmp(tabla.polje[y - 1][x + 2].figura, PRAZNO) && ((tabla.polje[y][x].bojaFigure == BELO && tabla.polje[y - 1][x + 2].bojaFigure == CRNO) || (tabla.polje[y][x].bojaFigure == CRNO && tabla.polje[y - 1][x + 2].bojaFigure == BELO)) && JelUnutarTable(x + 2, y - 1)  && ((tabla.polje[y][x].bojaFigure == BELO && !JelSahBeli(StaviFiguruNaXY(tabla, x + 2, y - 1), 0, 0)) || (tabla.polje[y][x].bojaFigure == CRNO && !JelSahCrni(StaviFiguruNaXY(tabla, x + 2, y - 1), 0, 0))))
  824.     {
  825.         tabla.polje[y - 1][x + 2].stanjePolja = NAPADNUTO;
  826.         ret = 1;
  827.     }
  828.  
  829.     if(!wcscmp(tabla.polje[y + 1][x + 2].figura, PRAZNO) && JelUnutarTable(x + 2, y + 1) && ((tabla.polje[y][x].bojaFigure == BELO && !JelSahBeli(StaviFiguruNaXY(tabla, x + 2, y + 1), 0, 0)) || (tabla.polje[y][x].bojaFigure == CRNO && !JelSahCrni(StaviFiguruNaXY(tabla, x + 2, y + 1), 0, 0))))
  830.     {
  831.         wcscpy(tabla.polje[y + 1][x + 2].figura, TACKA);
  832.         tabla.polje[y + 1][x + 2].bojaFigure = ZELENO;
  833.         ret = 1;
  834.     }
  835.     else if(wcscmp(tabla.polje[y + 1][x + 2].figura, PRAZNO) && ((tabla.polje[y][x].bojaFigure == BELO && tabla.polje[y + 1][x + 2].bojaFigure == CRNO) || (tabla.polje[y][x].bojaFigure == CRNO && tabla.polje[y + 1][x + 2].bojaFigure == BELO)) && JelUnutarTable(x + 2, y + 1) && ((tabla.polje[y][x].bojaFigure == BELO && !JelSahBeli(StaviFiguruNaXY(tabla, x + 2, y + 1), 0, 0)) || (tabla.polje[y][x].bojaFigure == CRNO && !JelSahCrni(StaviFiguruNaXY(tabla, x + 2, y + 1), 0, 0))))
  836.     {
  837.         tabla.polje[y + 1][x + 2].stanjePolja = NAPADNUTO;
  838.         ret = 1;
  839.     }
  840.  
  841.     if(!wcscmp(tabla.polje[y + 2][x + 1].figura, PRAZNO) && JelUnutarTable(x + 1, y + 2) && ((tabla.polje[y][x].bojaFigure == BELO && !JelSahBeli(StaviFiguruNaXY(tabla, x + 1, y + 2), 0, 0)) || (tabla.polje[y][x].bojaFigure == CRNO && !JelSahCrni(StaviFiguruNaXY(tabla, x + 1, y + 2), 0, 0))))
  842.     {
  843.         wcscpy(tabla.polje[y + 2][x + 1].figura, TACKA);
  844.         tabla.polje[y + 2][x + 1].bojaFigure = ZELENO;
  845.         ret = 1;
  846.     }
  847.     else if(wcscmp(tabla.polje[y + 2][x + 1].figura, PRAZNO) && ((tabla.polje[y][x].bojaFigure == BELO && tabla.polje[y + 2][x + 1].bojaFigure == CRNO) || (tabla.polje[y][x].bojaFigure == CRNO && tabla.polje[y + 2][x + 1].bojaFigure == BELO)) && JelUnutarTable(x + 1, y + 2) && ((tabla.polje[y][x].bojaFigure == BELO && !JelSahBeli(StaviFiguruNaXY(tabla, x + 1, y + 2), 0, 0)) || (tabla.polje[y][x].bojaFigure == CRNO && !JelSahCrni(StaviFiguruNaXY(tabla, x + 1, y + 2), 0, 0))))
  848.     {
  849.         tabla.polje[y + 2][x + 1].stanjePolja = NAPADNUTO;
  850.         ret = 1;
  851.     }
  852.  
  853.     if(!wcscmp(tabla.polje[y + 2][x - 1].figura, PRAZNO) && JelUnutarTable(x - 1, y + 2) && ((tabla.polje[y][x].bojaFigure == BELO && !JelSahBeli(StaviFiguruNaXY(tabla, x - 1, y + 2), 0, 0)) || (tabla.polje[y][x].bojaFigure == CRNO && !JelSahCrni(StaviFiguruNaXY(tabla, x - 1, y + 2), 0, 0))))
  854.     {
  855.         wcscpy(tabla.polje[y + 2][x - 1].figura, TACKA);
  856.         tabla.polje[y + 2][x - 1].bojaFigure = ZELENO;
  857.         ret = 1;
  858.     }
  859.     else if(wcscmp(tabla.polje[y + 2][x - 1].figura, PRAZNO) && ((tabla.polje[y][x].bojaFigure == BELO && tabla.polje[y + 2][x - 1].bojaFigure == CRNO) || (tabla.polje[y][x].bojaFigure == CRNO && tabla.polje[y + 2][x - 1].bojaFigure == BELO)) && JelUnutarTable(x - 1, y + 2) && ((tabla.polje[y][x].bojaFigure == BELO && !JelSahBeli(StaviFiguruNaXY(tabla, x - 1, y + 2), 0, 0)) || (tabla.polje[y][x].bojaFigure == CRNO && !JelSahCrni(StaviFiguruNaXY(tabla, x - 1, y + 2), 0, 0))))
  860.     {
  861.         tabla.polje[y + 2][x - 1].stanjePolja = NAPADNUTO;
  862.         ret = 1;
  863.     }
  864.  
  865.     if(!wcscmp(tabla.polje[y + 1][x - 2].figura, PRAZNO) && JelUnutarTable(x - 2, y + 1) && ((tabla.polje[y][x].bojaFigure == BELO && !JelSahBeli(StaviFiguruNaXY(tabla, x - 2, y + 1), 0, 0)) || (tabla.polje[y][x].bojaFigure == CRNO && !JelSahCrni(StaviFiguruNaXY(tabla, x - 2, y + 1), 0, 0))))
  866.     {
  867.         wcscpy(tabla.polje[y + 1][x - 2].figura, TACKA);
  868.         tabla.polje[y + 1][x - 2].bojaFigure = ZELENO;
  869.         ret = 1;
  870.     }
  871.     else if(wcscmp(tabla.polje[y + 1][x - 2].figura, PRAZNO) && ((tabla.polje[y][x].bojaFigure == BELO && tabla.polje[y + 1][x - 2].bojaFigure == CRNO) || (tabla.polje[y][x].bojaFigure == CRNO && tabla.polje[y + 1][x - 2].bojaFigure == BELO)) && JelUnutarTable(x - 2, y + 1) && ((tabla.polje[y][x].bojaFigure == BELO && !JelSahBeli(StaviFiguruNaXY(tabla, x - 2, y + 1), 0, 0)) || (tabla.polje[y][x].bojaFigure == CRNO && !JelSahCrni(StaviFiguruNaXY(tabla, x - 2, y + 1), 0, 0))))
  872.     {
  873.         tabla.polje[y + 1][x - 2].stanjePolja = NAPADNUTO;
  874.         ret = 1;
  875.     }
  876.  
  877.     if(!wcscmp(tabla.polje[y - 1][x - 2].figura, PRAZNO) && JelUnutarTable(x - 2, y - 1) && ((tabla.polje[y][x].bojaFigure == BELO && !JelSahBeli(StaviFiguruNaXY(tabla, x - 2, y - 1), 0, 0)) || (tabla.polje[y][x].bojaFigure == CRNO && !JelSahCrni(StaviFiguruNaXY(tabla, x - 2, y - 1), 0, 0))))
  878.     {
  879.         wcscpy(tabla.polje[y - 1][x - 2].figura, TACKA);
  880.         tabla.polje[y - 1][x - 2].bojaFigure = ZELENO;
  881.         ret = 1;
  882.     }
  883.     else if(wcscmp(tabla.polje[y - 1][x - 2].figura, PRAZNO) && ((tabla.polje[y][x].bojaFigure == BELO && tabla.polje[y - 1][x - 2].bojaFigure == CRNO) || (tabla.polje[y][x].bojaFigure == CRNO && tabla.polje[y - 1][x - 2].bojaFigure == BELO)) && JelUnutarTable(x - 2, y - 1)  && ((tabla.polje[y][x].bojaFigure == BELO && !JelSahBeli(StaviFiguruNaXY(tabla, x - 2, y - 1), 0, 0)) || (tabla.polje[y][x].bojaFigure == CRNO && !JelSahCrni(StaviFiguruNaXY(tabla, x - 2, y - 1), 0, 0))))
  884.     {
  885.         tabla.polje[y - 1][x - 2].stanjePolja = NAPADNUTO;
  886.         ret = 1;
  887.     }
  888.  
  889.     return ret;
  890. }
  891.  
  892. short PostaviTopa(Tabla &tabla, int x, int y)
  893. {
  894.     short ret = 0;
  895.  
  896.     tabla.polje[y][x].stanjePolja = IZABRANO;
  897.  
  898.     for(int i = 1; i < 8; i++)
  899.     {
  900.         if(!wcscmp(tabla.polje[y][x - i].figura, PRAZNO) && JelUnutarTable(x - i, y) && ((tabla.polje[y][x].bojaFigure == BELO && !JelSahBeli(StaviFiguruNaXY(tabla, x - i, y), 0, 0)) || (tabla.polje[y][x].bojaFigure == CRNO && !JelSahCrni(StaviFiguruNaXY(tabla, x - i, y), 0, 0))))
  901.         {
  902.             wcscpy(tabla.polje[y][x - i].figura, TACKA);
  903.             tabla.polje[y][x - i].bojaFigure = ZELENO;
  904.             ret = 1;
  905.         }
  906.         else if(wcscmp(tabla.polje[y][x - i].figura, PRAZNO) && ((tabla.polje[y][x].bojaFigure == BELO && tabla.polje[y][x - i].bojaFigure == CRNO) || (tabla.polje[y][x].bojaFigure == CRNO && tabla.polje[y][x - i].bojaFigure == BELO)) && JelUnutarTable(x - i, y) && ((tabla.polje[y][x].bojaFigure == BELO && !JelSahBeli(StaviFiguruNaXY(tabla, x - i, y), 0, 0)) || (tabla.polje[y][x].bojaFigure == CRNO && !JelSahCrni(StaviFiguruNaXY(tabla, x - i, y), 0, 0))))
  907.         {
  908.             tabla.polje[y][x - i].stanjePolja = NAPADNUTO;
  909.             ret = 1;
  910.             break;
  911.         }
  912.         else
  913.             break;
  914.     }
  915.  
  916.     for(int i = 1; i < 8; i++)
  917.     {
  918.         if(!wcscmp(tabla.polje[y][x + i].figura, PRAZNO) && JelUnutarTable(x + i, y) && ((tabla.polje[y][x].bojaFigure == BELO && !JelSahBeli(StaviFiguruNaXY(tabla, x + i, y), 0, 0)) || (tabla.polje[y][x].bojaFigure == CRNO && !JelSahCrni(StaviFiguruNaXY(tabla, x + i, y), 0, 0))))
  919.         {
  920.             wcscpy(tabla.polje[y][x + i].figura, TACKA);
  921.             tabla.polje[y][x + i].bojaFigure = ZELENO;
  922.             ret = 1;
  923.         }
  924.         else if(wcscmp(tabla.polje[y][x + i].figura, PRAZNO) && ((tabla.polje[y][x].bojaFigure == BELO && tabla.polje[y][x + i].bojaFigure == CRNO) || (tabla.polje[y][x].bojaFigure == CRNO && tabla.polje[y][x + i].bojaFigure == BELO)) && JelUnutarTable(x + i, y) && ((tabla.polje[y][x].bojaFigure == BELO && !JelSahBeli(StaviFiguruNaXY(tabla, x + i, y), 0, 0)) || (tabla.polje[y][x].bojaFigure == CRNO && !JelSahCrni(StaviFiguruNaXY(tabla, x + i, y), 0, 0))))
  925.         {
  926.             tabla.polje[y][x + i].stanjePolja = NAPADNUTO;
  927.             ret = 1;
  928.             break;
  929.         }
  930.         else
  931.             break;
  932.     }
  933.  
  934.     for(int i = 1; i < 8; i++)
  935.     {
  936.         if(!wcscmp(tabla.polje[y - i][x].figura, PRAZNO) && JelUnutarTable(x, y - i) && ((tabla.polje[y][x].bojaFigure == BELO && !JelSahBeli(StaviFiguruNaXY(tabla, x, y - i), 0, 0)) || (tabla.polje[y][x].bojaFigure == CRNO && !JelSahCrni(StaviFiguruNaXY(tabla, x, y - i), 0, 0))))
  937.         {
  938.             wcscpy(tabla.polje[y - i][x].figura, TACKA);
  939.             tabla.polje[y - i][x].bojaFigure = ZELENO;
  940.             ret = 1;
  941.         }
  942.         else if(wcscmp(tabla.polje[y - i][x].figura, PRAZNO) && ((tabla.polje[y][x].bojaFigure == BELO && tabla.polje[y - i][x].bojaFigure == CRNO) || (tabla.polje[y][x].bojaFigure == CRNO && tabla.polje[y - i][x].bojaFigure == BELO)) && JelUnutarTable(x, y - i) && ((tabla.polje[y][x].bojaFigure == BELO && !JelSahBeli(StaviFiguruNaXY(tabla, x, y - i), 0, 0)) || (tabla.polje[y][x].bojaFigure == CRNO && !JelSahCrni(StaviFiguruNaXY(tabla, x, y - i), 0, 0))))
  943.         {
  944.             tabla.polje[y - i][x].stanjePolja = NAPADNUTO;
  945.             ret = 1;
  946.             break;
  947.         }
  948.         else
  949.             break;
  950.     }
  951.  
  952.     for(int i = 1; i < 8; i++)
  953.     {
  954.         if(!wcscmp(tabla.polje[y + i][x].figura, PRAZNO) && JelUnutarTable(x, y + i) && ((tabla.polje[y][x].bojaFigure == BELO && !JelSahBeli(StaviFiguruNaXY(tabla, x, y + i), 0, 0)) || (tabla.polje[y][x].bojaFigure == CRNO && !JelSahCrni(StaviFiguruNaXY(tabla, x, y + i), 0, 0))))
  955.         {
  956.             wcscpy(tabla.polje[y + i][x].figura, TACKA);
  957.             tabla.polje[y + i][x].bojaFigure = ZELENO;
  958.             ret = 1;
  959.         }
  960.         else if(wcscmp(tabla.polje[y + i][x].figura, PRAZNO) && ((tabla.polje[y][x].bojaFigure == BELO && tabla.polje[y + i][x].bojaFigure == CRNO) || (tabla.polje[y][x].bojaFigure == CRNO && tabla.polje[y + i][x].bojaFigure == BELO)) && JelUnutarTable(x, y + i) && ((tabla.polje[y][x].bojaFigure == BELO && !JelSahBeli(StaviFiguruNaXY(tabla, x, y + i), 0, 0)) || (tabla.polje[y][x].bojaFigure == CRNO && !JelSahCrni(StaviFiguruNaXY(tabla, x, y + i), 0, 0))))
  961.         {
  962.             tabla.polje[y + i][x].stanjePolja = NAPADNUTO;
  963.             ret = 1;
  964.             break;
  965.         }
  966.         else
  967.             break;
  968.     }
  969.  
  970.     return ret;
  971. }
  972.  
  973. short PostaviLovca(Tabla &tabla, int x, int y)
  974. {
  975.     short ret = 0;
  976.  
  977.     tabla.polje[y][x].stanjePolja = IZABRANO;
  978.  
  979.     for(int i = 1; i < 8; i++)
  980.     {
  981.         if(!wcscmp(tabla.polje[y - i][x - i].figura, PRAZNO) && JelUnutarTable(x - i, y - i) && ((tabla.polje[y][x].bojaFigure == BELO && !JelSahBeli(StaviFiguruNaXY(tabla, x - i, y - i), 0, 0)) || (tabla.polje[y][x].bojaFigure == CRNO && !JelSahCrni(StaviFiguruNaXY(tabla, x - i, y - i), 0, 0))))
  982.         {
  983.             wcscpy(tabla.polje[y - i][x - i].figura, TACKA);
  984.             tabla.polje[y - i][x - i].bojaFigure = ZELENO;
  985.             ret = 1;
  986.         }
  987.         else if(wcscmp(tabla.polje[y - i][x - i].figura, PRAZNO) && ((tabla.polje[y][x].bojaFigure == BELO && tabla.polje[y - i][x - i].bojaFigure == CRNO) || (tabla.polje[y][x].bojaFigure == CRNO && tabla.polje[y - i][x - i].bojaFigure == BELO)) && JelUnutarTable(x - i, y - i) && ((tabla.polje[y][x].bojaFigure == BELO && !JelSahBeli(StaviFiguruNaXY(tabla, x - i, y - i), 0, 0)) || (tabla.polje[y][x].bojaFigure == CRNO && !JelSahCrni(StaviFiguruNaXY(tabla, x - i, y - i), 0, 0))))
  988.         {
  989.             tabla.polje[y - i][x - i].stanjePolja = NAPADNUTO;
  990.             ret = 1;
  991.             break;
  992.         }
  993.         else
  994.             break;
  995.     }
  996.  
  997.     for(int i = 1; i < 8; i++)
  998.     {
  999.         if(!wcscmp(tabla.polje[y - i][x + i].figura, PRAZNO) && JelUnutarTable(x + i, y - i) && ((tabla.polje[y][x].bojaFigure == BELO && !JelSahBeli(StaviFiguruNaXY(tabla, x + i, y - i), 0, 0)) || (tabla.polje[y][x].bojaFigure == CRNO && !JelSahCrni(StaviFiguruNaXY(tabla, x + i, y - i), 0, 0))))
  1000.         {
  1001.             wcscpy(tabla.polje[y - i][x + i].figura, TACKA);
  1002.             tabla.polje[y - i][x + i].bojaFigure = ZELENO;
  1003.             ret = 1;
  1004.         }
  1005.         else if(wcscmp(tabla.polje[y - i][x + i].figura, PRAZNO) && ((tabla.polje[y][x].bojaFigure == BELO && tabla.polje[y - i][x + i].bojaFigure == CRNO) || (tabla.polje[y][x].bojaFigure == CRNO && tabla.polje[y - i][x + i].bojaFigure == BELO)) && JelUnutarTable(x + i, y - i) && ((tabla.polje[y][x].bojaFigure == BELO && !JelSahBeli(StaviFiguruNaXY(tabla, x + i, y - i), 0, 0)) || (tabla.polje[y][x].bojaFigure == CRNO && !JelSahCrni(StaviFiguruNaXY(tabla, x + i, y - i), 0, 0))))
  1006.         {
  1007.             tabla.polje[y - i][x + i].stanjePolja = NAPADNUTO;
  1008.             ret = 1;
  1009.             break;
  1010.         }
  1011.         else
  1012.             break;
  1013.     }
  1014.  
  1015.     for(int i = 1; i < 8; i++)
  1016.     {
  1017.         if(!wcscmp(tabla.polje[y + i][x - i].figura, PRAZNO) && JelUnutarTable(x - i, y + i) && ((tabla.polje[y][x].bojaFigure == BELO && !JelSahBeli(StaviFiguruNaXY(tabla, x - i, y + i), 0, 0)) || (tabla.polje[y][x].bojaFigure == CRNO && !JelSahCrni(StaviFiguruNaXY(tabla, x - i, y + i), 0, 0))))
  1018.         {
  1019.             wcscpy(tabla.polje[y + i][x - i].figura, TACKA);
  1020.             tabla.polje[y + i][x - i].bojaFigure = ZELENO;
  1021.             ret = 1;
  1022.         }
  1023.         else if(wcscmp(tabla.polje[y + i][x - i].figura, PRAZNO) && ((tabla.polje[y][x].bojaFigure == BELO && tabla.polje[y + i][x - i].bojaFigure == CRNO) || (tabla.polje[y][x].bojaFigure == CRNO && tabla.polje[y + i][x - i].bojaFigure == BELO)) && JelUnutarTable(x - i, y + i) && ((tabla.polje[y][x].bojaFigure == BELO && !JelSahBeli(StaviFiguruNaXY(tabla, x - i, y + i), 0, 0)) || (tabla.polje[y][x].bojaFigure == CRNO && !JelSahCrni(StaviFiguruNaXY(tabla, x - i, y + i), 0, 0))))
  1024.         {
  1025.             tabla.polje[y + i][x - i].stanjePolja = NAPADNUTO;
  1026.             ret = 1;
  1027.             break;
  1028.         }
  1029.         else
  1030.             break;
  1031.     }
  1032.  
  1033.     for(int i = 1; i < 8; i++)
  1034.     {
  1035.         if(!wcscmp(tabla.polje[y + i][x +  i].figura, PRAZNO) && JelUnutarTable(x + i, y + i) && ((tabla.polje[y][x].bojaFigure == BELO && !JelSahBeli(StaviFiguruNaXY(tabla, x + i, y + i), 0, 0)) || (tabla.polje[y][x].bojaFigure == CRNO && !JelSahCrni(StaviFiguruNaXY(tabla, x + i, y + i), 0, 0))))
  1036.         {
  1037.             wcscpy(tabla.polje[y + i][x + i].figura, TACKA);
  1038.             tabla.polje[y + i][x + i].bojaFigure = ZELENO;
  1039.             ret = 1;
  1040.         }
  1041.         else if(wcscmp(tabla.polje[y + i][x + i].figura, PRAZNO) && ((tabla.polje[y][x].bojaFigure == BELO && tabla.polje[y + i][x + i].bojaFigure == CRNO) || (tabla.polje[y][x].bojaFigure == CRNO && tabla.polje[y + i][x + i].bojaFigure == BELO)) && JelUnutarTable(x + i, y + i) && ((tabla.polje[y][x].bojaFigure == BELO && !JelSahBeli(StaviFiguruNaXY(tabla, x + i, y + i), 0, 0)) || (tabla.polje[y][x].bojaFigure == CRNO && !JelSahCrni(StaviFiguruNaXY(tabla, x + i, y + i), 0, 0))))
  1042.         {
  1043.             tabla.polje[y + i][x + i].stanjePolja = NAPADNUTO;
  1044.             ret = 1;
  1045.             break;
  1046.         }
  1047.         else
  1048.             break;
  1049.     }
  1050.  
  1051.     return ret;
  1052. }
  1053.  
  1054. short PostaviKraljicu(Tabla &tabla, int x, int y)
  1055. {
  1056.     int ret = 0;
  1057.     ret += PostaviLovca(tabla, x, y);
  1058.     ret += PostaviTopa(tabla, x, y);
  1059.  
  1060.     if(ret != 0)
  1061.         ret = 1;
  1062.  
  1063.     return ret;
  1064. }
  1065.  
  1066.  
  1067. short JelMozeIgratiBeli(Tabla tabla)
  1068. {
  1069.     short ret = 0;
  1070.  
  1071.     for(int y = 0; y < 8; y++)
  1072.         for(int x = 0; x < 8; x++)
  1073.             if(tabla.polje[y][x].bojaFigure == BELO)
  1074.             {
  1075.                 if(!wcscmp(tabla.polje[y][x].figura, KRALJ))
  1076.                 {
  1077.                     ret += PostaviKralja(tabla, x, y);
  1078.  
  1079.                     NoviPotez(tabla);
  1080.                 }
  1081.                 else if(!wcscmp(tabla.polje[y][x].figura, PIJUN))
  1082.                 {
  1083.                     ret += PostaviPijuna(tabla, x, y);
  1084.  
  1085.                     NoviPotez(tabla);
  1086.                 }
  1087.                 else if(!wcscmp(tabla.polje[y][x].figura, KONJ))
  1088.                 {
  1089.                     ret += PostaviKonja(tabla, x, y);
  1090.  
  1091.                     NoviPotez(tabla);
  1092.                 }
  1093.                 else if(!wcscmp(tabla.polje[y][x].figura, TOP))
  1094.                 {
  1095.                     ret += PostaviTopa(tabla, x, y);
  1096.  
  1097.                     NoviPotez(tabla);
  1098.                 }
  1099.                 else if(!wcscmp(tabla.polje[y][x].figura, LOVAC))
  1100.                 {
  1101.                     ret += PostaviLovca(tabla, x, y);
  1102.  
  1103.                     NoviPotez(tabla);
  1104.                 }
  1105.                 else if(!wcscmp(tabla.polje[y][x].figura, KRALJICA))
  1106.                 {
  1107.                     ret += PostaviKraljicu(tabla, x, y);
  1108.  
  1109.                     NoviPotez(tabla);
  1110.                 }
  1111.             }
  1112.  
  1113.     if(ret != 0)
  1114.         ret = 1;
  1115.  
  1116.     return ret;
  1117. }
  1118.  
  1119. short JelMozeIgratiCrni(Tabla tabla)
  1120. {
  1121.     short ret = 0;
  1122.  
  1123.     for(int y = 0; y < 8; y++)
  1124.         for(int x = 0; x < 8; x++)
  1125.             if(tabla.polje[y][x].bojaFigure == CRNO)
  1126.             {
  1127.                 if(!wcscmp(tabla.polje[y][x].figura, KRALJ))
  1128.                 {
  1129.                     ret += PostaviKralja(tabla, x, y);
  1130.  
  1131.                     NoviPotez(tabla);
  1132.                 }
  1133.                 else if(!wcscmp(tabla.polje[y][x].figura, PIJUN))
  1134.                 {
  1135.                     ret += PostaviPijuna(tabla, x, y);
  1136.  
  1137.                     NoviPotez(tabla);
  1138.                 }
  1139.                 else if(!wcscmp(tabla.polje[y][x].figura, KONJ))
  1140.                 {
  1141.                     ret += PostaviKonja(tabla, x, y);
  1142.  
  1143.                     NoviPotez(tabla);
  1144.                 }
  1145.                 else if(!wcscmp(tabla.polje[y][x].figura, TOP))
  1146.                 {
  1147.                     ret += PostaviTopa(tabla, x, y);
  1148.  
  1149.                     NoviPotez(tabla);
  1150.                 }
  1151.                 else if(!wcscmp(tabla.polje[y][x].figura, LOVAC))
  1152.                 {
  1153.                     ret += PostaviLovca(tabla, x, y);
  1154.  
  1155.                     NoviPotez(tabla);
  1156.                 }
  1157.                 else if(!wcscmp(tabla.polje[y][x].figura, KRALJICA))
  1158.                 {
  1159.                     ret += PostaviKraljicu(tabla, x, y);
  1160.  
  1161.                     NoviPotez(tabla);
  1162.                 }
  1163.             }
  1164.  
  1165.     if(ret != 0)
  1166.         ret = 1;
  1167.  
  1168.     return ret;
  1169. }
  1170.  
  1171. int main()
  1172. {
  1173.     Tabla tabla;
  1174.     NapraviTablu(tabla);
  1175.     vector<Tabla> istorija(0);
  1176.     istorija.push_back(tabla);
  1177.  
  1178.     ObrisiKonzoluPodesavanja();
  1179.     PodesiKonzolu();
  1180.     CentrirajKonzolu();
  1181.     PodesiKonzolu2();
  1182.     OdstampajKonzolu();
  1183.     OdstampajTablu(tabla);
  1184.  
  1185.     int x, y, xizb, yizb, i = 35;
  1186.     HANDLE console = GetStdHandle(STD_OUTPUT_HANDLE);
  1187.     _setmode(_fileno(stdout), _O_U8TEXT);
  1188.  
  1189.     do
  1190.     {
  1191.         sacekaj = ISKLJUCENO;
  1192.         SetConsoleTextAttribute(console, 82);
  1193.         gotoxy(4, 14);
  1194.         wprintf(L"%d    ", brPoteza);
  1195.  
  1196.         UcitajKlik(x, y);
  1197.  
  1198.         gotoxy(15, 14);
  1199.         wprintf(L"%d, %d           ", x, y);
  1200.  
  1201.  
  1202.         if(y == 0 && (x == 4 || x == 5))
  1203.         {
  1204.             NapraviTablu(tabla);
  1205.             istorija.clear();
  1206.             istorija.push_back(tabla);
  1207.             brPoteza = 0;
  1208.             NoviPotez(tabla);
  1209.             krajigre = 0;
  1210.  
  1211.             OdstampajTablu(tabla);
  1212.         }
  1213.         else if(y == 0 && (x == 6 || x == 7))
  1214.         {
  1215.             boja++;
  1216.  
  1217.             if(boja == 3)
  1218.                 boja = 0;
  1219.  
  1220.             OdstampajKonzolu();
  1221.             NoviPotez(tabla);
  1222.  
  1223.             if(brPoteza % 2 && rotacija == UKLJUCENO)
  1224.                 ObrnutoOdstampajTablu(tabla);
  1225.             else
  1226.                 OdstampajTablu(tabla);
  1227.         }
  1228.         else if(y == 0 && (x == 8 || x == 9))
  1229.         {
  1230.             PodesiVelicinu(i);
  1231.  
  1232.             if(i == 35)
  1233.                 i = 20;
  1234.             else if(i == 20)
  1235.                 i = 29;
  1236.             else if(i == 29)
  1237.                 i = 35;
  1238.  
  1239.             CentrirajKonzolu();
  1240.             CentrirajKonzolu();
  1241.             system("MODE 36, 18");
  1242.             PodesiKonzolu2();
  1243.             OdstampajKonzolu();
  1244.             NoviPotez(tabla);
  1245.  
  1246.             if(brPoteza % 2 && rotacija == UKLJUCENO)
  1247.                 ObrnutoOdstampajTablu(tabla);
  1248.             else
  1249.                 OdstampajTablu(tabla);
  1250.         }
  1251.         else if(y == 0 && (x == 10 || x == 11) && brPoteza > 0)
  1252.         {
  1253.             krajigre = 0;
  1254.             tabla = istorija[brPoteza - 1];
  1255.             brPoteza--;
  1256.             istorija.erase(istorija.begin() + brPoteza + 1);
  1257.             NoviPotez(tabla);
  1258.  
  1259.             if(brPoteza % 2 && rotacija == UKLJUCENO)
  1260.                 ObrnutoOdstampajTablu(tabla);
  1261.  
  1262.             else
  1263.                 OdstampajTablu(tabla);
  1264.         }
  1265.         else if(y == 0 && (x == 30 || x == 31))
  1266.         {
  1267.             if(rotacija == UKLJUCENO)
  1268.             {
  1269.                 rotacija = ISKLJUCENO;
  1270.  
  1271.                 if(boja == SVETLO)
  1272.                     SetConsoleTextAttribute(console, 36);
  1273.                 else if(boja == TAMNO)
  1274.                     SetConsoleTextAttribute(console, 87);
  1275.                 else if(boja == SIVO)
  1276.                     SetConsoleTextAttribute(console, 138);
  1277.  
  1278.                 gotoxy(30, 0);
  1279.                 wprintf(L"");
  1280.             }
  1281.             else
  1282.             {
  1283.                 rotacija = UKLJUCENO;
  1284.  
  1285.                 if(boja == SVETLO)
  1286.                     SetConsoleTextAttribute(console, 36);
  1287.                 else if(boja == TAMNO)
  1288.                     SetConsoleTextAttribute(console, 87);
  1289.                 else if(boja == SIVO)
  1290.                     SetConsoleTextAttribute(console, 138);
  1291.  
  1292.                 gotoxy(30, 0);
  1293.                 wprintf(L"");
  1294.             }
  1295.  
  1296.             NoviPotez(tabla);
  1297.  
  1298.             if(brPoteza % 2 && rotacija == UKLJUCENO)
  1299.                 ObrnutoOdstampajTablu(tabla);
  1300.             else
  1301.                 OdstampajTablu(tabla);
  1302.         }
  1303.         else if(y > 2 && y < 11 && x > 9 && x < 26 && krajigre == 0)
  1304.         {
  1305.             if(brPoteza % 2 && rotacija == UKLJUCENO)
  1306.                 ObrnutaPozicijaNaTabli(x, y);
  1307.             else
  1308.                 PozicijaNaTabli(x, y);
  1309.  
  1310.             gotoxy(15, 14);
  1311.             wprintf(L"%d , %d           ", x, y);
  1312.  
  1313.             if(tabla.polje[y][x].stanjePolja == NAPADNUTO)
  1314.             {
  1315.                 PozicijaIzabranog(xizb, yizb, tabla);
  1316.  
  1317.                 if(tabla.polje[yizb][xizb].bojaFigure == BELO)
  1318.                 {
  1319.                     if(tabla.polje[y + 1][x].anpasan == UKLJUCENO)
  1320.                     {
  1321.                         wcscpy(tabla.levo[tabla.brlevo / 2][tabla.brlevo % 2].figura, PIJUN);
  1322.                         wcscpy(tabla.polje[y + 1][x].figura, PRAZNO);
  1323.                     }
  1324.                     else
  1325.                         wcscpy(tabla.levo[tabla.brlevo / 2][tabla.brlevo % 2].figura, tabla.polje[y][x].figura);
  1326.  
  1327.                     tabla.brlevo++;
  1328.                 }
  1329.                 else
  1330.                 {
  1331.                     if(tabla.polje[y - 1][x].anpasan == UKLJUCENO)
  1332.                     {
  1333.                         wcscpy(tabla.desno[tabla.brdesno / 2][tabla.brdesno % 2].figura, PIJUN);
  1334.                         wcscpy(tabla.polje[y - 1][x].figura, PRAZNO);
  1335.                     }
  1336.                     else
  1337.                         wcscpy(tabla.desno[tabla.brdesno / 2][tabla.brdesno % 2].figura, tabla.polje[y][x].figura);
  1338.  
  1339.                     tabla.brdesno++;
  1340.                 }
  1341.  
  1342.                 if((xizb == 7 && yizb == 7) || (x == 7 && y == 7))
  1343.                     tabla.malarbeli = ISKLJUCENO;
  1344.                 else if((xizb == 0 && yizb == 7) || (x == 0 && y == 7))
  1345.                     tabla.velikarbeli = ISKLJUCENO;
  1346.                 else if((xizb == 0 && yizb == 0) || (x == 0 && y == 0))
  1347.                     tabla.velikarcrni = ISKLJUCENO;
  1348.                 else if((xizb == 7 && yizb == 0) || (x == 7 && y == 0))
  1349.                     tabla.malarcrni = ISKLJUCENO;
  1350.                 else if(xizb == 4 && yizb == 7)
  1351.                 {
  1352.                     tabla.malarbeli = ISKLJUCENO;
  1353.                     tabla.velikarbeli = ISKLJUCENO;
  1354.                 }
  1355.                 else if(xizb == 4 && yizb == 0)
  1356.                 {
  1357.                     tabla.malarcrni = ISKLJUCENO;
  1358.                     tabla.velikarcrni = ISKLJUCENO;
  1359.                 }
  1360.  
  1361.                 wcscpy(tabla.polje[y][x].figura, tabla.polje[yizb][xizb].figura);
  1362.                 wcscpy(tabla.polje[yizb][xizb].figura, PRAZNO);
  1363.                 tabla.polje[y][x].bojaFigure = tabla.polje[yizb][xizb].bojaFigure;
  1364.                 NoviPotez(tabla);
  1365.                 ObrisiAnpasan(tabla);
  1366.                 istorija.push_back(tabla);
  1367.                 brPoteza++;
  1368.                 sacekaj = UKLJUCENO;
  1369.             }
  1370.             else if(!wcscmp(tabla.polje[y][x].figura, KRALJ))
  1371.             {
  1372.                 if((tabla.polje[y][x].bojaFigure == BELO && brPoteza % 2 == 0) || (tabla.polje[y][x].bojaFigure == CRNO && brPoteza % 2 == 1))
  1373.                 {
  1374.                     NoviPotez(tabla);
  1375.  
  1376.                     PostaviKralja(tabla, x, y);
  1377.                 }
  1378.                 else
  1379.                     NoviPotez(tabla);
  1380.             }
  1381.             else if(!wcscmp(tabla.polje[y][x].figura, PIJUN))
  1382.             {
  1383.                 if((tabla.polje[y][x].bojaFigure == BELO && brPoteza % 2 == 0) || (tabla.polje[y][x].bojaFigure == CRNO && brPoteza % 2 == 1))
  1384.                 {
  1385.                     NoviPotez(tabla);
  1386.                     PostaviPijuna(tabla, x, y);
  1387.                 }
  1388.                 else
  1389.                     NoviPotez(tabla);
  1390.             }
  1391.             else if(!wcscmp(tabla.polje[y][x].figura, KONJ))
  1392.             {
  1393.                 if((tabla.polje[y][x].bojaFigure == BELO && brPoteza % 2 == 0) || (tabla.polje[y][x].bojaFigure == CRNO && brPoteza % 2 == 1))
  1394.                 {
  1395.                     NoviPotez(tabla);
  1396.                     PostaviKonja(tabla, x, y);
  1397.                 }
  1398.                 else
  1399.                     NoviPotez(tabla);
  1400.             }
  1401.             else if(!wcscmp(tabla.polje[y][x].figura, TOP))
  1402.             {
  1403.                 if((tabla.polje[y][x].bojaFigure == BELO && brPoteza % 2 == 0) || (tabla.polje[y][x].bojaFigure == CRNO && brPoteza % 2 == 1))
  1404.                 {
  1405.                     NoviPotez(tabla);
  1406.                     PostaviTopa(tabla, x, y);
  1407.                 }
  1408.                 else
  1409.                     NoviPotez(tabla);
  1410.             }
  1411.             else if(!wcscmp(tabla.polje[y][x].figura, LOVAC))
  1412.             {
  1413.                 if((tabla.polje[y][x].bojaFigure == BELO && brPoteza % 2 == 0) || (tabla.polje[y][x].bojaFigure == CRNO && brPoteza % 2 == 1))
  1414.                 {
  1415.                     NoviPotez(tabla);
  1416.                     PostaviLovca(tabla, x, y);
  1417.                 }
  1418.                 else
  1419.                     NoviPotez(tabla);
  1420.             }
  1421.             else if(!wcscmp(tabla.polje[y][x].figura, KRALJICA))
  1422.             {
  1423.                 if((tabla.polje[y][x].bojaFigure == BELO && brPoteza % 2 == 0) || (tabla.polje[y][x].bojaFigure == CRNO && brPoteza % 2 == 1))
  1424.                 {
  1425.                     NoviPotez(tabla);
  1426.                     PostaviKraljicu(tabla, x, y);
  1427.                 }
  1428.                 else
  1429.                     NoviPotez(tabla);
  1430.             }
  1431.             else if(!wcscmp(tabla.polje[y][x].figura, PRAZNO))
  1432.                 NoviPotez(tabla);
  1433.             else if(!wcscmp(tabla.polje[y][x].figura, TACKA))
  1434.             {
  1435.                 PozicijaIzabranog(xizb, yizb, tabla);
  1436.                 wcscpy(tabla.polje[y][x].figura, tabla.polje[yizb][xizb].figura);
  1437.                 wcscpy(tabla.polje[yizb][xizb].figura, PRAZNO);
  1438.                 tabla.polje[y][x].bojaFigure = tabla.polje[yizb][xizb].bojaFigure;
  1439.  
  1440.                 ObrisiAnpasan(tabla);
  1441.  
  1442.                 if(tabla.malarbeli == UKLJUCENO && xizb == 4 && yizb == 7 && x == 6 && y == 7)
  1443.                 {
  1444.                     wcscpy(tabla.polje[7][7].figura, PRAZNO);
  1445.                     wcscpy(tabla.polje[7][5].figura, TOP);
  1446.                     tabla.polje[7][5].bojaFigure = BELO;
  1447.                 }
  1448.  
  1449.                 if(tabla.velikarbeli == UKLJUCENO && xizb == 4 && yizb == 7 && x == 1 && y == 7)
  1450.                 {
  1451.                     wcscpy(tabla.polje[7][0].figura, PRAZNO);
  1452.                     wcscpy(tabla.polje[7][2].figura, TOP);
  1453.                     tabla.polje[7][2].bojaFigure = BELO;
  1454.                 }
  1455.  
  1456.                 if(tabla.malarcrni == UKLJUCENO && xizb == 4 && yizb == 0 && x == 6 && y == 0)
  1457.                 {
  1458.                     wcscpy(tabla.polje[0][7].figura, PRAZNO);
  1459.                     wcscpy(tabla.polje[0][5].figura, TOP);
  1460.                     tabla.polje[0][5].bojaFigure = CRNO;
  1461.                 }
  1462.  
  1463.                 if(tabla.velikarcrni == UKLJUCENO && xizb == 4 && yizb == 0 && x == 1 && y == 0)
  1464.                 {
  1465.                     wcscpy(tabla.polje[0][0].figura, PRAZNO);
  1466.                     wcscpy(tabla.polje[0][2].figura, TOP);
  1467.                     tabla.polje[0][2].bojaFigure = CRNO;
  1468.                 }
  1469.  
  1470.                 if(!wcscmp(tabla.polje[y][x].figura, PIJUN) && ((tabla.polje[y][x].bojaFigure == BELO && y == yizb - 2) || (tabla.polje[y][x].bojaFigure == CRNO && y == yizb + 2)))
  1471.                     tabla.polje[y][x].anpasan = UKLJUCENO;
  1472.  
  1473.                 if(xizb == 7 && yizb == 7)
  1474.                     tabla.malarbeli = ISKLJUCENO;
  1475.                 else if(xizb == 0 && yizb == 7)
  1476.                     tabla.velikarbeli = ISKLJUCENO;
  1477.                 else if(xizb == 0 && yizb == 0)
  1478.                     tabla.velikarcrni = ISKLJUCENO;
  1479.                 else if(xizb == 7 && yizb == 0)
  1480.                     tabla.malarcrni = ISKLJUCENO;
  1481.                 else if(xizb == 4 && yizb == 7)
  1482.                 {
  1483.                     tabla.malarbeli = ISKLJUCENO;
  1484.                     tabla.velikarbeli = ISKLJUCENO;
  1485.                 }
  1486.                 else if(xizb == 4 && yizb == 0)
  1487.                 {
  1488.                     tabla.malarcrni = ISKLJUCENO;
  1489.                     tabla.velikarcrni = ISKLJUCENO;
  1490.                 }
  1491.  
  1492.                 NoviPotez(tabla);
  1493.  
  1494.  
  1495.                 istorija.push_back(tabla);
  1496.                 brPoteza++;
  1497.                 sacekaj = UKLJUCENO;
  1498.             }
  1499.  
  1500.             if(brPoteza % 2 && rotacija == UKLJUCENO)
  1501.             {
  1502.                 if(sacekaj == UKLJUCENO)
  1503.                 {
  1504.                     OdstampajTablu(tabla);
  1505.                     Sleep(260);
  1506.                 }
  1507.  
  1508.                 ObrnutoOdstampajTablu(tabla);
  1509.             }
  1510.             else
  1511.             {
  1512.                 if(sacekaj == UKLJUCENO && rotacija == UKLJUCENO)
  1513.                 {
  1514.                     ObrnutoOdstampajTablu(tabla);
  1515.                     Sleep(260);
  1516.                 }
  1517.  
  1518.                 OdstampajTablu(tabla);
  1519.             }
  1520.  
  1521.              if(brPoteza % 2 == 0 && !JelMozeIgratiCrni(tabla) && JelSahCrni(tabla, 0, 0))
  1522.                 {
  1523.                     krajigre = 1;
  1524.                     gotoxy(12, 14);
  1525.                     wprintf(L"Beli je pobednik");
  1526.                 }
  1527.                 else if (brPoteza % 2 == 1 && !JelMozeIgratiBeli(tabla) && JelSahBeli(tabla, 0, 0))
  1528.                 {
  1529.                     krajigre = 1;
  1530.                     gotoxy(12, 14);
  1531.                     wprintf(L"Crni je pobednik");
  1532.                 }
  1533.                 else if(brPoteza % 2 == 0 && !JelMozeIgratiCrni(tabla))
  1534.                 {
  1535.                     krajigre = 1;
  1536.                     gotoxy(9, 14);
  1537.                     wprintf(L"Beli je napravio pat");
  1538.                 }
  1539.                 else if (brPoteza % 2 == 1 && !JelMozeIgratiBeli(tabla))
  1540.                 {
  1541.                     krajigre = 1;
  1542.                     gotoxy(9, 14);
  1543.                     wprintf(L"Crni je napravio pat");
  1544.                 }
  1545.  
  1546.         }
  1547.  
  1548. //            if((wcscmp(tabla.polje[y][x].figura, PRAZNO) && wcscmp(tabla.polje[y][x].figura, TACKA)))
  1549. //            {
  1550. //                for(int a=0; a<8; a++)
  1551. //                        for(int b=0; b<8; b++)
  1552. //                            if(tabla.polje[a][b].stanjePolja == IZABRANO)
  1553. //                                tabla.polje[a][b].stanjePolja = NEUTRALNO;
  1554. //                tabla.polje[y][x].stanjePolja = IZABRANO;
  1555. //                stanje = IZABRANO;
  1556. //            }
  1557. //            else
  1558. //            {
  1559. //                    stanje = NEUTRALNO;
  1560. //                    for(int a=0; a<8; a++)
  1561. //                        for(int b=0; b<8; b++)
  1562. //                            if(tabla.polje[a][b].stanjePolja == IZABRANO)
  1563. //                                tabla.polje[a][b].stanjePolja = NEUTRALNO;
  1564. //            }
  1565.  
  1566.     }
  1567.     while(1);
  1568.  
  1569.  
  1570. //    int x, y;
  1571. //    int i = 0, j = 0;
  1572. //
  1573. //
  1574. //    while(1)
  1575. //    {
  1576. //        SakriKursor();
  1577. //        //ObrisiEkran();
  1578. //        UcitajKlik(x, y);
  1579. ////        gotoxy(x,y);
  1580. //        //SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 238);
  1581. ////        _setmode(_fileno(stdout), _O_U8TEXT);
  1582. ////        wprintf(L"█");//}
  1583. //        //system("cls");
  1584. //
  1585. //        gotoxy(3, 4);
  1586. //        printf("1");
  1587. //        gotoxy(8, 10);
  1588. //        printf("2");
  1589. //        gotoxy(12, 3);
  1590. //        printf("3");
  1591. //        gotoxy(17, 6);
  1592. //        printf("4");
  1593. //
  1594. //        gotoxy(0, 0);
  1595. //        printf("             ", x, y);
  1596. //        gotoxy(0, 0);
  1597. //        printf("%d , %d", x, y);  //}
  1598. //        gotoxy(i, 1);
  1599. //
  1600. //        if(x == 3 && y == 4)
  1601. //            printf("a");
  1602. //
  1603. //        if(x == 8 && y == 10)
  1604. //            printf("b");
  1605. //
  1606. //        if(x == 12 && y == 3)
  1607. //            printf("c");
  1608. //
  1609. //        if(x == 17 && y == 6)
  1610. //            printf("d");
  1611. //
  1612. //        i++;
  1613. //    }
  1614.  
  1615.     SakriKursor();
  1616.     ObrisiKonzoluPodesavanja();
  1617.     Sleep(999999999);
  1618.  
  1619.     return 0;
  1620. }
  1621.  
  1622. void NapraviTablu(Tabla &tabla)
  1623. {
  1624.     tabla.brlevo = 0;
  1625.     tabla.brdesno = 0;
  1626.     tabla.malarbeli = UKLJUCENO;
  1627.     tabla.malarcrni = UKLJUCENO;
  1628.     tabla.velikarbeli = UKLJUCENO;
  1629.     tabla.velikarcrni = UKLJUCENO;
  1630.  
  1631.     for(int i = 0; i < 8; i++)
  1632.         for(int j = 0; j < 8; j++)
  1633.         {
  1634.             tabla.polje[i][j].stanjePolja = NEUTRALNO;
  1635.             tabla.polje[i][j].anpasan = ISKLJUCENO;
  1636.  
  1637.             if((i + j) % 2 == 0)
  1638.                 tabla.polje[i][j].bojaPolja = BELO;
  1639.             else
  1640.                 tabla.polje[i][j].bojaPolja = CRNO;
  1641.         }
  1642.  
  1643.     for(int i = 0; i < 2; i++)
  1644.         for(int j = 0; j < 8; j++)
  1645.         {
  1646.             tabla.polje[i][j].bojaFigure = CRNO;
  1647.             tabla.polje[i + 6][j].bojaFigure = BELO;
  1648.         }
  1649.  
  1650.     for(int j = 0; j < 8; j++)
  1651.     {
  1652.         wcscpy(tabla.polje[1][j].figura, PIJUN);
  1653.         wcscpy(tabla.polje[6][j].figura, PIJUN);
  1654.     }
  1655.  
  1656.     wcscpy(tabla.polje[0][0].figura, TOP);
  1657.     wcscpy(tabla.polje[0][7].figura, TOP);
  1658.     wcscpy(tabla.polje[7][0].figura, TOP);
  1659.     wcscpy(tabla.polje[7][7].figura, TOP);
  1660.  
  1661.     wcscpy(tabla.polje[0][1].figura, KONJ);
  1662.     wcscpy(tabla.polje[0][6].figura, KONJ);
  1663.     wcscpy(tabla.polje[7][1].figura, KONJ);
  1664.     wcscpy(tabla.polje[7][6].figura, KONJ);
  1665.  
  1666.     wcscpy(tabla.polje[0][2].figura, LOVAC);
  1667.     wcscpy(tabla.polje[0][5].figura, LOVAC);
  1668.     wcscpy(tabla.polje[7][2].figura, LOVAC);
  1669.     wcscpy(tabla.polje[7][5].figura, LOVAC);
  1670.  
  1671.     wcscpy(tabla.polje[0][3].figura, KRALJICA);
  1672.     wcscpy(tabla.polje[7][3].figura, KRALJICA);
  1673.  
  1674.     wcscpy(tabla.polje[0][4].figura, KRALJ);
  1675.     wcscpy(tabla.polje[7][4].figura, KRALJ);
  1676.  
  1677.     for(int i = 2; i < 6; i++)
  1678.         for(int j = 0; j < 8; j++)
  1679.         {
  1680.             tabla.polje[i][j].bojaFigure = ZELENO;
  1681.             wcscpy(tabla.polje[i][j].figura, PRAZNO);
  1682.         }
  1683.  
  1684.     for(int i = 0; i < 8; i++)
  1685.         for(int j = 0; j < 2; j++)
  1686.         {
  1687.             tabla.levo[i][j].anpasan = ISKLJUCENO;
  1688.             tabla.levo[i][j].bojaFigure = CRNO;
  1689.             tabla.levo[i][j].stanjePolja = NEUTRALNO;
  1690.             tabla.desno[i][j].anpasan = ISKLJUCENO;
  1691.             tabla.desno[i][j].bojaFigure = BELO;
  1692.             tabla.desno[i][j].stanjePolja = NEUTRALNO;
  1693.             wcscpy(tabla.levo[i][j].figura, PRAZNO);
  1694.             wcscpy(tabla.desno[i][j].figura, PRAZNO);
  1695.         }
  1696. }
  1697.  
  1698. void SakriKursor()
  1699. {
  1700.     HANDLE consoleHandle = GetStdHandle(STD_OUTPUT_HANDLE);
  1701.     CONSOLE_CURSOR_INFO info;
  1702.     info.dwSize = 100;
  1703.     info.bVisible = FALSE;
  1704.     SetConsoleCursorInfo(consoleHandle, &info);
  1705. }
  1706.  
  1707. void ObrisiEkran()
  1708. {
  1709.     HANDLE hStdOut;
  1710.     CONSOLE_SCREEN_BUFFER_INFO csbi;
  1711.     DWORD count;
  1712.     DWORD cellCount;
  1713.     COORD homeCoords = {0, 0};
  1714.  
  1715.     hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
  1716.  
  1717.     if (hStdOut == INVALID_HANDLE_VALUE)
  1718.         return;
  1719.  
  1720.     GetConsoleScreenBufferInfo(hStdOut, &csbi);
  1721.     cellCount = csbi.dwSize.X * csbi.dwSize.Y;
  1722.  
  1723.     FillConsoleOutputCharacter(hStdOut, (TCHAR) ' ', cellCount, homeCoords, &count);
  1724.     FillConsoleOutputAttribute(hStdOut, csbi.wAttributes, cellCount, homeCoords, &count);
  1725.     SetConsoleCursorPosition(hStdOut, homeCoords);
  1726. }
  1727.  
  1728. void gotoxy(int x, int y)
  1729. {
  1730.     COORD koordinate;
  1731.     koordinate.X = x;
  1732.     koordinate.Y = y;
  1733.     SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), koordinate);
  1734. }
  1735.  
  1736. int UcitajKlik(int &x, int &y)
  1737. {
  1738.     DWORD info;
  1739.     INPUT_RECORD input;
  1740.     HANDLE in = GetStdHandle(STD_INPUT_HANDLE);
  1741.     SetConsoleMode(in, ENABLE_PROCESSED_INPUT | ENABLE_MOUSE_INPUT);
  1742.     ReadConsoleInput(in, &input, 1, &info);
  1743.  
  1744.     if(input.Event.MouseEvent.dwButtonState !=  0x0001)
  1745.     {
  1746. GOBACK:
  1747.         ReadConsoleInput(in, &input, 1, &info);
  1748.  
  1749.         if(input.Event.MouseEvent.dwButtonState ==  0x0001)
  1750.         {
  1751. GOBACK2:
  1752.             ReadConsoleInput(in, &input, 1, &info);
  1753.  
  1754.             if(input.Event.MouseEvent.dwButtonState !=  0x0001)
  1755.             {
  1756.                 x = input.Event.MouseEvent.dwMousePosition.X;
  1757.                 y = input.Event.MouseEvent.dwMousePosition.Y;
  1758.             }
  1759.             else
  1760.                 goto GOBACK2;
  1761.         }
  1762.         else
  1763.             goto GOBACK;
  1764.     }
  1765.     else
  1766.         UcitajKlik(x, y);
  1767.  
  1768.     return 0;
  1769. }
  1770.  
  1771. void CentrirajKonzolu()
  1772. {
  1773.     RECT rectClient, rectWindow;
  1774.     HWND hWnd = GetConsoleWindow();
  1775.     GetClientRect(hWnd, &rectClient);
  1776.     GetWindowRect(hWnd, &rectWindow);
  1777.     int posx, posy;
  1778.     posx = GetSystemMetrics(SM_CXSCREEN) / 2 - (rectWindow.right - rectWindow.left) / 2;
  1779.     posy = GetSystemMetrics(SM_CYSCREEN) / 2 - (rectWindow.bottom - rectWindow.top) / 2;
  1780.  
  1781.     SetWindowPos(GetConsoleWindow(), HWND_TOP, posx, posy, 0, 0, SWP_NOSIZE);
  1782. }
  1783.  
  1784. void PodesiKonzolu()
  1785. {
  1786.     HWND consoleWindow = GetConsoleWindow();
  1787.     SetWindowLong(consoleWindow, GWL_STYLE, GetWindowLong(consoleWindow, GWL_STYLE) & ~WS_MAXIMIZEBOX & ~WS_SIZEBOX);
  1788.  
  1789.     SetConsoleMode(GetStdHandle(STD_INPUT_HANDLE),  ENABLE_QUICK_EDIT_MODE | ENABLE_EXTENDED_FLAGS);
  1790.     SetConsoleMode(GetStdHandle(STD_INPUT_HANDLE),  ENABLE_EXTENDED_FLAGS);
  1791.  
  1792.     _setmode(_fileno(stdout), _O_U8TEXT);
  1793.     SetConsoleTitleW(L"ŠAH");
  1794.     _setmode(_fileno(stdout), _O_TEXT);
  1795.  
  1796.     if(boja == SVETLO)
  1797.         system("color 23");
  1798.     else if(boja == TAMNO)
  1799.         system("color 56");
  1800.     else if(boja == SIVO)
  1801.         system("color 89");
  1802.  
  1803.     _CONSOLE_SCREEN_BUFFER_INFOEX info;
  1804.     info.cbSize = sizeof(info);
  1805.     HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
  1806.     GetConsoleScreenBufferInfoEx(hConsole, &info);
  1807.     info.dwSize = {36, 19};
  1808.     info.ColorTable[0] = RGB(242, 242, 242);
  1809.     info.ColorTable[1] = RGB(10, 10, 10);
  1810.     info.ColorTable[2] = RGB(198, 175, 141);
  1811.     info.ColorTable[3] = RGB(114, 71, 56);
  1812.     info.ColorTable[4] = RGB(50, 31, 26);
  1813.     info.ColorTable[5] = RGB(132, 94, 73);
  1814.     info.ColorTable[6] = RGB(73, 47, 37);
  1815.     info.ColorTable[7] = RGB(22, 11, 4);
  1816.     info.ColorTable[8] = RGB(158, 158, 158);
  1817.     info.ColorTable[9] = RGB(102, 102, 102);
  1818.     info.ColorTable[10] = RGB(43, 43, 43);
  1819.     info.ColorTable[11] = RGB(0, 119, 65);
  1820.     info.ColorTable[12] = RGB(126, 33, 35);
  1821.     info.ColorTable[13] = RGB(10, 10, 130);
  1822.     info.ColorTable[14] = RGB(240, 191, 40);
  1823.     info.ColorTable[15] = RGB(255, 255, 255);
  1824.  
  1825.     SetConsoleScreenBufferInfoEx(hConsole, &info);
  1826.     PodesiVelicinu(29);
  1827.     SakriKursor();
  1828.     system("MODE 36, 18");
  1829. }
  1830.  
  1831. void PodesiKonzolu2()
  1832. {
  1833.     _CONSOLE_SCREEN_BUFFER_INFOEX info;
  1834.     info.cbSize = sizeof(info);
  1835.     HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
  1836.     GetConsoleScreenBufferInfoEx(hConsole, &info);
  1837.     info.dwSize = {36, 17};
  1838.     SetConsoleScreenBufferInfoEx(hConsole, &info);
  1839. }
  1840.  
  1841. void PodesiVelicinu(int i)
  1842. {
  1843.     CONSOLE_FONT_INFOEX cfi;
  1844.     cfi.cbSize = sizeof(cfi);
  1845.     cfi.nFont = 0;
  1846.     cfi.dwFontSize.X = 0;
  1847.     cfi.dwFontSize.Y = i;
  1848.     cfi.FontFamily = TMPF_TRUETYPE;
  1849.     cfi.FontWeight = FW_NORMAL;
  1850.     std::wcscpy(cfi.FaceName, L"MS Gothic");
  1851.     SetCurrentConsoleFontEx(GetStdHandle(STD_OUTPUT_HANDLE), FALSE, &cfi);
  1852. }
  1853.  
  1854. void OdstampajTablu(Tabla tabla)
  1855. {
  1856.     HANDLE console = GetStdHandle(STD_OUTPUT_HANDLE);
  1857.     _setmode(_fileno(stdout), _O_U8TEXT);
  1858.  
  1859.     for(int i = 0; i < 8; i++)
  1860.         for(int j = 0; j < 8; j++)
  1861.         {
  1862.             if(tabla.polje[i][j].stanjePolja == IZABRANO && tabla.polje[i][j].bojaFigure == CRNO)
  1863.                 SetConsoleTextAttribute(console, 177);
  1864.             else if(tabla.polje[i][j].stanjePolja == IZABRANO && tabla.polje[i][j].bojaFigure == BELO)
  1865.                 SetConsoleTextAttribute(console, 176);
  1866.             else if(tabla.polje[i][j].stanjePolja == NAPADNUTO && (tabla.polje[i][j].bojaFigure == CRNO || tabla.polje[i][j].bojaFigure == ZELENO))
  1867.                 SetConsoleTextAttribute(console, 193);
  1868.             else if(tabla.polje[i][j].stanjePolja == NAPADNUTO && tabla.polje[i][j].bojaFigure == BELO)
  1869.                 SetConsoleTextAttribute(console, 192);
  1870.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == BELO && boja == SVETLO && tabla.polje[i][j].bojaPolja == BELO)
  1871.                 SetConsoleTextAttribute(console, 32);
  1872.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == CRNO && boja == SVETLO && tabla.polje[i][j].bojaPolja == BELO)
  1873.                 SetConsoleTextAttribute(console, 33);
  1874.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == BELO && boja == TAMNO && tabla.polje[i][j].bojaPolja == BELO)
  1875.                 SetConsoleTextAttribute(console, 80);
  1876.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == CRNO && boja == TAMNO && tabla.polje[i][j].bojaPolja == BELO)
  1877.                 SetConsoleTextAttribute(console, 81);
  1878.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == BELO && boja == SIVO && tabla.polje[i][j].bojaPolja == BELO)
  1879.                 SetConsoleTextAttribute(console, 128);
  1880.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == CRNO && boja == SIVO && tabla.polje[i][j].bojaPolja == BELO)
  1881.                 SetConsoleTextAttribute(console, 129);
  1882.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == BELO && boja == SVETLO && tabla.polje[i][j].bojaPolja == CRNO)
  1883.                 SetConsoleTextAttribute(console, 48);
  1884.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == CRNO && boja == SVETLO && tabla.polje[i][j].bojaPolja == CRNO)
  1885.                 SetConsoleTextAttribute(console, 49);
  1886.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == BELO && boja == TAMNO && tabla.polje[i][j].bojaPolja == CRNO)
  1887.                 SetConsoleTextAttribute(console, 96);
  1888.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == CRNO && boja == TAMNO && tabla.polje[i][j].bojaPolja == CRNO)
  1889.                 SetConsoleTextAttribute(console, 97);
  1890.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == BELO && boja == SIVO && tabla.polje[i][j].bojaPolja == CRNO)
  1891.                 SetConsoleTextAttribute(console, 144);
  1892.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == CRNO && boja == SIVO && tabla.polje[i][j].bojaPolja == CRNO)
  1893.                 SetConsoleTextAttribute(console, 145);
  1894.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == ZELENO && boja == SVETLO && tabla.polje[i][j].bojaPolja == BELO)
  1895.                 SetConsoleTextAttribute(console, 43);
  1896.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == ZELENO && boja == TAMNO && tabla.polje[i][j].bojaPolja == BELO)
  1897.                 SetConsoleTextAttribute(console, 91);
  1898.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == ZELENO && boja == SIVO && tabla.polje[i][j].bojaPolja == BELO)
  1899.                 SetConsoleTextAttribute(console, 139);
  1900.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == ZELENO && boja == SVETLO && tabla.polje[i][j].bojaPolja == CRNO)
  1901.                 SetConsoleTextAttribute(console, 59);
  1902.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == ZELENO && boja == TAMNO && tabla.polje[i][j].bojaPolja == CRNO)
  1903.                 SetConsoleTextAttribute(console, 107);
  1904.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == ZELENO && boja == SIVO && tabla.polje[i][j].bojaPolja == CRNO)
  1905.                 SetConsoleTextAttribute(console, 155);
  1906.  
  1907.             gotoxy(10 + j * 2, 3 + i);
  1908.             wprintf(tabla.polje[i][j].figura);
  1909.         }
  1910.  
  1911.     OdstampajLevoDesno(tabla);
  1912. }
  1913.  
  1914. void ObrnutoOdstampajTablu(Tabla tabla)
  1915. {
  1916.     HANDLE console = GetStdHandle(STD_OUTPUT_HANDLE);
  1917.     _setmode(_fileno(stdout), _O_U8TEXT);
  1918.  
  1919.     for(int i = 0; i < 8; i++)
  1920.         for(int j = 0; j < 8; j++)
  1921.         {
  1922.             if(tabla.polje[i][j].stanjePolja == IZABRANO && tabla.polje[i][j].bojaFigure == CRNO)
  1923.                 SetConsoleTextAttribute(console, 177);
  1924.             else if(tabla.polje[i][j].stanjePolja == IZABRANO && tabla.polje[i][j].bojaFigure == BELO)
  1925.                 SetConsoleTextAttribute(console, 176);
  1926.             else if(tabla.polje[i][j].stanjePolja == NAPADNUTO && tabla.polje[i][j].bojaFigure == CRNO)
  1927.                 SetConsoleTextAttribute(console, 193);
  1928.             else if(tabla.polje[i][j].stanjePolja == NAPADNUTO && tabla.polje[i][j].bojaFigure == BELO)
  1929.                 SetConsoleTextAttribute(console, 192);
  1930.             else if(tabla.polje[i][j].stanjePolja == NAPADNUTO && !wcscmp(tabla.polje[i][j].figura, PRAZNO))
  1931.                 SetConsoleTextAttribute(console, 192);
  1932.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == BELO && boja == SVETLO && tabla.polje[i][j].bojaPolja == BELO)
  1933.                 SetConsoleTextAttribute(console, 32);
  1934.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == CRNO && boja == SVETLO && tabla.polje[i][j].bojaPolja == BELO)
  1935.                 SetConsoleTextAttribute(console, 33);
  1936.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == BELO && boja == TAMNO && tabla.polje[i][j].bojaPolja == BELO)
  1937.                 SetConsoleTextAttribute(console, 80);
  1938.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == CRNO && boja == TAMNO && tabla.polje[i][j].bojaPolja == BELO)
  1939.                 SetConsoleTextAttribute(console, 81);
  1940.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == BELO && boja == SIVO && tabla.polje[i][j].bojaPolja == BELO)
  1941.                 SetConsoleTextAttribute(console, 128);
  1942.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == CRNO && boja == SIVO && tabla.polje[i][j].bojaPolja == BELO)
  1943.                 SetConsoleTextAttribute(console, 129);
  1944.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == BELO && boja == SVETLO && tabla.polje[i][j].bojaPolja == CRNO)
  1945.                 SetConsoleTextAttribute(console, 48);
  1946.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == CRNO && boja == SVETLO && tabla.polje[i][j].bojaPolja == CRNO)
  1947.                 SetConsoleTextAttribute(console, 49);
  1948.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == BELO && boja == TAMNO && tabla.polje[i][j].bojaPolja == CRNO)
  1949.                 SetConsoleTextAttribute(console, 96);
  1950.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == CRNO && boja == TAMNO && tabla.polje[i][j].bojaPolja == CRNO)
  1951.                 SetConsoleTextAttribute(console, 97);
  1952.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == BELO && boja == SIVO && tabla.polje[i][j].bojaPolja == CRNO)
  1953.                 SetConsoleTextAttribute(console, 144);
  1954.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == CRNO && boja == SIVO && tabla.polje[i][j].bojaPolja == CRNO)
  1955.                 SetConsoleTextAttribute(console, 145);
  1956.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == ZELENO && boja == SVETLO && tabla.polje[i][j].bojaPolja == BELO)
  1957.                 SetConsoleTextAttribute(console, 43);
  1958.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == ZELENO && boja == TAMNO && tabla.polje[i][j].bojaPolja == BELO)
  1959.                 SetConsoleTextAttribute(console, 91);
  1960.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == ZELENO && boja == SIVO && tabla.polje[i][j].bojaPolja == BELO)
  1961.                 SetConsoleTextAttribute(console, 139);
  1962.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == ZELENO && boja == SVETLO && tabla.polje[i][j].bojaPolja == CRNO)
  1963.                 SetConsoleTextAttribute(console, 59);
  1964.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == ZELENO && boja == TAMNO && tabla.polje[i][j].bojaPolja == CRNO)
  1965.                 SetConsoleTextAttribute(console, 107);
  1966.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == ZELENO && boja == SIVO && tabla.polje[i][j].bojaPolja == CRNO)
  1967.                 SetConsoleTextAttribute(console, 155);
  1968.  
  1969.             gotoxy(24 - j * 2, 10 - i);
  1970.             wprintf(tabla.polje[i][j].figura);
  1971.         }
  1972.  
  1973.     OdstampajLevoDesno(tabla);
  1974. }
  1975.  
  1976. void OdstampajLevoDesno(Tabla tabla)
  1977. {
  1978.     HANDLE console = GetStdHandle(STD_OUTPUT_HANDLE);
  1979.     _setmode(_fileno(stdout), _O_U8TEXT);
  1980.  
  1981.     for(int i = 0; i < 8; i++)
  1982.         for(int j = 0; j < 2; j++)
  1983.         {
  1984.             if(boja == SVETLO)
  1985.                 SetConsoleTextAttribute(console, 81);
  1986.             else if(boja == TAMNO)
  1987.                 SetConsoleTextAttribute(console, 97);
  1988.             else if(boja == SIVO)
  1989.                 SetConsoleTextAttribute(console, 145);
  1990.  
  1991.             gotoxy(2 + j * 2, 3 + i);
  1992.             wprintf(tabla.levo[i][j].figura);
  1993.         }
  1994.  
  1995.     for(int i = 0; i < 8; i++)
  1996.         for(int j = 0; j < 2; j++)
  1997.         {
  1998.             if(boja == SVETLO)
  1999.                 SetConsoleTextAttribute(console, 80);
  2000.             else if(boja == TAMNO)
  2001.                 SetConsoleTextAttribute(console, 96);
  2002.             else if(boja == SIVO)
  2003.                 SetConsoleTextAttribute(console, 144);
  2004.  
  2005.             gotoxy(30 + j * 2, 3 + i);
  2006.             wprintf(tabla.desno[i][j].figura);
  2007.         }
  2008. }
  2009.  
  2010. void PozicijaNaTabli(int &x, int &y)
  2011. {
  2012.     switch(x)
  2013.     {
  2014.     case 10:
  2015.     case 11:
  2016.         x = 0;
  2017.         break;
  2018.  
  2019.     case 12:
  2020.     case 13:
  2021.         x = 1;
  2022.         break;
  2023.  
  2024.     case 14:
  2025.     case 15:
  2026.         x = 2;
  2027.         break;
  2028.  
  2029.     case 16:
  2030.     case 17:
  2031.         x = 3;
  2032.         break;
  2033.  
  2034.     case 18:
  2035.     case 19:
  2036.         x = 4;
  2037.         break;
  2038.  
  2039.     case 20:
  2040.     case 21:
  2041.         x = 5;
  2042.         break;
  2043.  
  2044.     case 22:
  2045.     case 23:
  2046.         x = 6;
  2047.         break;
  2048.  
  2049.     case 24:
  2050.     case 25:
  2051.         x = 7;
  2052.     }
  2053.  
  2054.     switch(y)
  2055.     {
  2056.     case 10:
  2057.         y = 7;
  2058.         break;
  2059.  
  2060.     case 9:
  2061.         y = 6;
  2062.         break;
  2063.  
  2064.     case 8:
  2065.         y = 5;
  2066.         break;
  2067.  
  2068.     case 7:
  2069.         y = 4;
  2070.         break;
  2071.  
  2072.     case 6:
  2073.         y = 3;
  2074.         break;
  2075.  
  2076.     case 5:
  2077.         y = 2;
  2078.         break;
  2079.  
  2080.     case 4:
  2081.         y = 1;
  2082.         break;
  2083.  
  2084.     case 3:
  2085.         y = 0;
  2086.     }
  2087. }
  2088.  
  2089. void ObrnutaPozicijaNaTabli(int &x, int &y)
  2090. {
  2091.     switch(x)
  2092.     {
  2093.     case 10:
  2094.     case 11:
  2095.         x = 7;
  2096.         break;
  2097.  
  2098.     case 12:
  2099.     case 13:
  2100.         x = 6;
  2101.         break;
  2102.  
  2103.     case 14:
  2104.     case 15:
  2105.         x = 5;
  2106.         break;
  2107.  
  2108.     case 16:
  2109.     case 17:
  2110.         x = 4;
  2111.         break;
  2112.  
  2113.     case 18:
  2114.     case 19:
  2115.         x = 3;
  2116.         break;
  2117.  
  2118.     case 20:
  2119.     case 21:
  2120.         x = 2;
  2121.         break;
  2122.  
  2123.     case 22:
  2124.     case 23:
  2125.         x = 1;
  2126.         break;
  2127.  
  2128.     case 24:
  2129.     case 25:
  2130.         x = 0;
  2131.     }
  2132.  
  2133.     switch(y)
  2134.     {
  2135.     case 10:
  2136.         y = 0;
  2137.         break;
  2138.  
  2139.     case 9:
  2140.         y = 1;
  2141.         break;
  2142.  
  2143.     case 8:
  2144.         y = 2;
  2145.         break;
  2146.  
  2147.     case 7:
  2148.         y = 3;
  2149.         break;
  2150.  
  2151.     case 6:
  2152.         y = 4;
  2153.         break;
  2154.  
  2155.     case 5:
  2156.         y = 5;
  2157.         break;
  2158.  
  2159.     case 4:
  2160.         y = 6;
  2161.         break;
  2162.  
  2163.     case 3:
  2164.         y = 7;
  2165.     }
  2166. }
  2167.  
  2168. void NoviPotez(Tabla &tabla)
  2169. {
  2170.     for(int a = 0; a < 8; a++)
  2171.         for(int b = 0; b < 8; b++)
  2172.         {
  2173.             if(tabla.polje[a][b].stanjePolja == IZABRANO)
  2174.                 tabla.polje[a][b].stanjePolja = NEUTRALNO;
  2175.  
  2176.             if(tabla.polje[a][b].stanjePolja == NAPADNUTO)
  2177.                 tabla.polje[a][b].stanjePolja = NEUTRALNO;
  2178.  
  2179.             if(!wcscmp(tabla.polje[a][b].figura, TACKA))
  2180.                 wcscpy(tabla.polje[a][b].figura, PRAZNO);
  2181.  
  2182.             if(!wcscmp(tabla.polje[a][b].figura, PRAZNO))
  2183.                 tabla.polje[a][b].bojaFigure = ZELENO;
  2184.         }
  2185. }
  2186.  
  2187. void ObrisiAnpasan(Tabla &tabla)
  2188. {
  2189.     for(int a = 0; a < 8; a++)
  2190.         for(int b = 0; b < 8; b++)
  2191.             if(tabla.polje[a][b].anpasan == UKLJUCENO)
  2192.                 tabla.polje[a][b].anpasan = ISKLJUCENO;
  2193.  
  2194. }
  2195.  
  2196. void PozicijaIzabranog(int &xizb, int &yizb, Tabla tabla)
  2197. {
  2198.     for(int a = 0; a < 8; a++)
  2199.         for(int b = 0; b < 8; b++)
  2200.             if(tabla.polje[a][b].stanjePolja == IZABRANO)
  2201.             {
  2202.                 yizb = a;
  2203.                 xizb = b;
  2204.                 return;
  2205.             }
  2206. }
  2207.  
  2208. short JelUnutarTable(int x, int y)
  2209. {
  2210.     if(x >= 0 && x <= 7 && y >= 0 && y <= 7)
  2211.         return 1;
  2212.     else
  2213.         return 0;
  2214. }
  2215.  
  2216. void OdstampajKonzolu()
  2217. {
  2218.     HANDLE console = GetStdHandle(STD_OUTPUT_HANDLE);
  2219.     _setmode(_fileno(stdout), _O_U8TEXT);
  2220.  
  2221.     gotoxy(0, 0);
  2222.  
  2223.     if(boja == SVETLO)
  2224.         SetConsoleTextAttribute(console, 45);
  2225.     else if(boja == TAMNO)
  2226.         SetConsoleTextAttribute(console, 93);
  2227.     else if(boja == SIVO)
  2228.         SetConsoleTextAttribute(console, 141);
  2229.  
  2230.     wprintf(L"");  // save
  2231.  
  2232.     if(boja == SVETLO)
  2233.         SetConsoleTextAttribute(console, 46);
  2234.     else if(boja == TAMNO)
  2235.         SetConsoleTextAttribute(console, 94);
  2236.     else if(boja == SIVO)
  2237.         SetConsoleTextAttribute(console, 142);
  2238.  
  2239.     wprintf(L"");  // open
  2240.  
  2241.     if(boja == SVETLO)
  2242.         SetConsoleTextAttribute(console, 44);
  2243.     else if(boja == TAMNO)
  2244.         SetConsoleTextAttribute(console, 92);
  2245.     else if(boja == SIVO)
  2246.         SetConsoleTextAttribute(console, 140);
  2247.  
  2248.     wprintf(L"");  // restart      
  2249.  
  2250.     if(boja == SVETLO)
  2251.         SetConsoleTextAttribute(console, 36);
  2252.     else if(boja == TAMNO)
  2253.         SetConsoleTextAttribute(console, 87);
  2254.     else if(boja == SIVO)
  2255.         SetConsoleTextAttribute(console, 138);
  2256.  
  2257.     // gear 
  2258.     wprintf(L"");  // color
  2259.     wprintf(L"");  // resize
  2260.     wprintf(L"");  // back
  2261.     wprintf(L"                  "); // space
  2262.  
  2263.     if(rotacija == UKLJUCENO)
  2264.         wprintf(L"");  // rotation 
  2265.     else
  2266.         wprintf(L"");  // rotation 
  2267.  
  2268.     if(boja == SVETLO)
  2269.         SetConsoleTextAttribute(console, 47);
  2270.     else if(boja == TAMNO)
  2271.         SetConsoleTextAttribute(console, 95);
  2272.     else if(boja == SIVO)
  2273.         SetConsoleTextAttribute(console, 143);
  2274.  
  2275.     wprintf(L"");  // info
  2276.  
  2277.     if(boja == SVETLO)
  2278.         SetConsoleTextAttribute(console, 44);
  2279.     else if(boja == TAMNO)
  2280.         SetConsoleTextAttribute(console, 92);
  2281.     else if(boja == SIVO)
  2282.         SetConsoleTextAttribute(console, 140);
  2283.  
  2284.     wprintf(L"\n");  // quit
  2285.  
  2286.     if(boja == SVETLO)
  2287.         SetConsoleTextAttribute(console, 36);
  2288.     else if(boja == TAMNO)
  2289.         SetConsoleTextAttribute(console, 87);
  2290.     else if(boja == SIVO)
  2291.         SetConsoleTextAttribute(console, 138);
  2292.  
  2293.     wprintf(L"━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n");
  2294.     wprintf(L"┏━━━━━┓                     ┏━━━━━┓ \n");
  2295.     wprintf(L"┃     ┃                     ┃     ┃ \n");
  2296.     wprintf(L"┃     ┃                     ┃     ┃ \n");
  2297.     wprintf(L"┃     ┃                     ┃     ┃ \n");
  2298.     wprintf(L"┃     ┃                     ┃     ┃ \n");
  2299.     wprintf(L"┃     ┃                     ┃     ┃ \n");
  2300.     wprintf(L"┃     ┃                     ┃     ┃ \n");
  2301.     wprintf(L"┃     ┃                     ┃     ┃ \n");
  2302.     wprintf(L"┃     ┃                     ┃     ┃ \n");
  2303.     wprintf(L"┗━━━━━┛                     ┗━━━━━┛ \n");
  2304.     wprintf(L"┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ \n");
  2305.     wprintf(L"┃                                 ┃ \n");
  2306.     wprintf(L"┃                                 ┃ \n");
  2307.     wprintf(L"┃                                 ┃ \n");
  2308.     wprintf(L"┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ ");
  2309.  
  2310.     if(boja == SVETLO)
  2311.         SetConsoleTextAttribute(console, 85);
  2312.     else if(boja == TAMNO)
  2313.         SetConsoleTextAttribute(console, 102);
  2314.     else if(boja == SIVO)
  2315.         SetConsoleTextAttribute(console, 153);
  2316.  
  2317.     gotoxy(2, 13);
  2318.     wprintf(L"████████████████████████████████");
  2319.     gotoxy(2, 14);
  2320.     wprintf(L"████████████████████████████████");
  2321.     gotoxy(2, 15);
  2322.     wprintf(L"████████████████████████████████");
  2323.  
  2324.     if(boja == SVETLO)
  2325.         SetConsoleTextAttribute(console, 68);
  2326.     else if(boja == TAMNO)
  2327.         SetConsoleTextAttribute(console, 119);
  2328.     else if(boja == SIVO)
  2329.         SetConsoleTextAttribute(console, 170);
  2330.  
  2331.     gotoxy(8, 2);
  2332.     wprintf(L"████████████████████");
  2333.     gotoxy(8, 3);
  2334.     wprintf(L"██");
  2335.     gotoxy(8, 4);
  2336.     wprintf(L"██");
  2337.     gotoxy(8, 5);
  2338.     wprintf(L"██");
  2339.     gotoxy(8, 6);
  2340.     wprintf(L"██");
  2341.     gotoxy(8, 7);
  2342.     wprintf(L"██");
  2343.     gotoxy(8, 8);
  2344.     wprintf(L"██");
  2345.     gotoxy(8, 9);
  2346.     wprintf(L"██");
  2347.     gotoxy(8, 10);
  2348.     wprintf(L"██");
  2349.     gotoxy(26, 3);
  2350.     wprintf(L"██");
  2351.     gotoxy(26, 4);
  2352.     wprintf(L"██");
  2353.     gotoxy(26, 5);
  2354.     wprintf(L"██");
  2355.     gotoxy(26, 6);
  2356.     wprintf(L"██");
  2357.     gotoxy(26, 7);
  2358.     wprintf(L"██");
  2359.     gotoxy(26, 8);
  2360.     wprintf(L"██");
  2361.     gotoxy(26, 9);
  2362.     wprintf(L"██");
  2363.     gotoxy(26, 10);
  2364.     wprintf(L"██");
  2365.     gotoxy(8, 11);
  2366.     wprintf(L"████████████████████");
  2367. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement